Flow Cytometry Toolkit
Project description
Overview
FlowKit is an intuitive Python toolkit for flow cytometry analysis and visualization, with full support for the GatingML 2.0 standard and limited support for FlowJo 10 workspace files.
Version 0.6 added experimental support for exporting FlowJo 10 workspace files from a Session. Support is currently limited to exporting data from a single sample group. Please submit an issue if you find any bugs related to this feature.
Features
- Read / Write FCS Files
- Read FCS files, supporting FCS versions 2.0, 3.0, and 3.1
- Export FCS data as:
- A new FCS 3.1 file
- NumPy array
- Pandas DataFrame
- CSV text file
- Compensation
- Compensate events using spillover matrices from:
- $SPILL or $SPILLOVER keyword value
- FlowJo tab-delimited text
- NumPy array
- GatingML 2.0 spectrumMatrix XML element
- Create a compensation matrix from a set of compensation bead files
- Compensate events using spillover matrices from:
- Transformation
- Logicle
- Inverse hyperbolic sine (ArcSinh)
- FlowJo Bi-exponential
- Hyperlog
- Logarithmic
- Channel ratios
- Linear
- Gating
- Full support for the GatingML 2.0 specification
- Import GatingML XML documents as gating strategies
- Export gating strategies as a valid GatingML XML document
- Limited support for importing FlowJo 10 workspace files. Workspace files are currently limited to the following features:
- Linear, logarithmic, bi-exponential, and logicle transforms
- Polygon, rectangle, ellipse, and quadrant gates
- Export a Session's sample group analysis as a FlowJo 10 workspace file
- Programmatically create gating strategies including polygon, rectangle, range, ellipsoid, quadrant, and boolean gates
- Retrieve gating results as a Pandas DataFrame
- Full support for the GatingML 2.0 specification
- Visualization
- Histogram of single channel data
- Contour density plot of two channels
- Interactive scatter plot of two channels
- Interactive scatter plot matrix of any combination of channels
- Interactive scatter plots of gates with sample events
Requirements
FlowKit supports Python version 3.6 or above. All dependencies are installable via pip, and are listed below.
Note: FlowKit and FlowUtils use C extensions for significant performance
improvements. If using gcc
, version 5 or
above is required for correct Logicle and Hyperlog transformations.
Required Python dependencies:
- flowio == 0.9.12
- flowutils == 0.9.5
- anytree >= 2.6
- bokeh >= 1.4
- lxml >= 4.4
- matplotlib >= 3.1
- networkx >= 2.3
- numpy >= 1.19
- pandas >= 1.1
- psutils ~= 5.8
- scipy >= 1.3
- seaborn >= 0.11
- statsmodels
Installation
From PyPI
pip install flowkit
From source
git clone https://github.com/whitews/flowkit
cd flowkit
python setup.py install
Documentation
The FlowKit API documentation is available on ReadTheDocs here. The tutorial notebooks in the examples directory are a great place to get started with FlowKit, and are linked below. If you have any questions about FlowKit, find any bugs, or feel something is missing from the tutorials below please submit an issue to the GitHub repository here.
Tutorials
The series of Jupyter notebook tutorials can be found in the examples
directory of this repository. Note, the interactive scatterplots do not render on GitHub. Clone the repo (or download the example notebooks), and run them locally to see the fully interactive plots.
- Part 1 - Sample Class
- Part 2 - transforms Module & Matrix Class
- Part 3 - GatingStrategy & GatingResults Classes
- Part 4 - gates Module
- Part 5 - Session Class
Advanced Examples
Below are more advanced and practical examples for using FlowKit. If you have an example you would like to submit for consideration in this list (preferably with data), please submit an issue.
- Compare mean fluorescence intensity (MFI) in gated populations
- Customize gate for a single Sample in a Session sample group
- Importing a FlowJo 10 WSP file & replicating analysis in FlowKit
- Dimension reduction on gated populations
- Comparison between Leiden & Louvain clustering
Contributing
Want to get involved in the development of FlowKit?
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.