

* Uses of `gate_id` replaced with `gate_name`: a gate ID is a tuple of (gate_name, gate_path) * `gate_path` is now always a tuple (not a list) * New plotting method `plot_channel` for plotting channel data with "events" as x-axis (similar to plotting vs Time) * Attribute `channels` changed from a dictionary to a more readable pandas DataFrame * Attribute `anomalous_indices` renamed to `flagged_indices`, and now set by user for any purpose using `set_flagged_events` method * Added option to cache original events, they are no longer stored by default (saves memory)

* Method `get_channel_data` renamed to `get_channel_events` * The various methods for getting NumPy arrays of events are now encapsulated into the single `get_events` methods that takes a `source` argument (consistent w/ other Sample methods) * Sample plot methods (except histogram and plot channel) now default to `subsample=True` * `subsample` argument added back to Sample constructor (better to have subsample ready for plot methods) * All gate types now take a pandas DataFrame as input (possible to use gates independently now) * Anomalous event detection removed from FlowKit, now lives in separate FlowQC project * Analyzing samples in a Session using multiprocessing will now try to dynamically allocate CPUs based on available memory to avoid out of memory errors * Sample now re-applies a transform when Sample is given a new compensation * Sample method `plot_contour` now has optional `fill` argument to created filled contours * Significant speed increase for parsing FlowJo 10 WSP files with lots of bi-ex transforms * WSPBiexTransform now has an `inverse` method * Matrix class now has an `inverse` method * optional caching of pre-processed events to speed up processing of gates * optimized processing order of gates to avoid re-processing * FlowKit version now available via top-level attribute `_version_`
