Cytoflow: Better quantitative flow cytometry.


Cytoflow is a point-and click program and a Python library for analyzing flow cytometry data. It was written by Brian Teague to address shortcomings in currently-available flow software.

How is Cytoflow different?

  • An emphasis on metadata. Cytoflow assumes you are measuring the fluorescence of several samples that were treated differently: collected at different times, treated with varying levels of a chemical, etc. You specify these sample conditions up front, then use those conditions to control your analysis.

  • The analysis is represented as a workflow. Operations such as gating and compensation are applied sequentially; a workflow can be saved a re-used or shared with colleagues.

  • Good visualization. Make publication-ready plots right from the software.

  • Thoughtful documentation. Each module, operation and visualization is documented, and particular attention has been paid to getting users up-and-running quickly.

  • Cytoflow is built on Python modules that you can use in your own workflows. The library was designed to work particularly well in a Jupyter notebook.

  • Cytoflow is free and open-source. Contribute bug reports at the GitHub project page or download the source code to modify it for your own needs. Then, contribute your changes back so the rest of the community can benefit from them.

If you’d like to see Cytoflow in action, here are some screenshots, or you can check out a screencast on Youtube.

Getting Started

Quick installation instructions for the point-and-click program:

  • Windows: Download the installer, then run it.

  • MacOS (10.10+): Download the ZIP file. Unzip the file, then double-click to run the program. Depending on your security settings, you may have to specifically enable this program (it’s not signed.)

  • Linux: Download the tarball. Extract it, then run the cytoflow binary.

More detailed installation instructions can be found in the user’s manual..


The user manual is broken into four different sets of documentation:

  • Tutorials take you step-by-step through some basic analyses. Start here if you’re new to Cytoflow.

  • How-to guides are recipes. They guide you through some common use-cases. They are more advanced than tutorials and assume some knowledge of how Cytoflow works.

  • User guides discuss how Cytoflow works “under the hood”, which can make you a better Cytoflow user for more advanced or non-standard analyses.

  • Reference pages document every operation and view. These are the same pages that are displayed in Cytoflow’s “Help” panel.

For Developers

If you want to use Python to analyze flow cytometry data, then Cytoflow is for you! I’ve found Cytoflow useful for both interactive data exploration (ie, poking data to see what it’s telling you) and automated data analysis (ie, writing scripts and pipelines to process lots of data.)

To get a taste of what Cytoflow can do, check out an example Jupyter notebook.

Then, head over to the developers’ manual. There, you’ll find:

For Contributors

Hooray! We’d love to have you.

The Cytoflow source code is hosted over at GitHub. Feel free to report bugs, request enhancements, fork the codebase and start hacking. Also, check out the Developers’ guides for an overview and justification of Cytoflow’s design, as well as useful information for writing your own modules, operations and views.