Skip to main content

Cytoflow

Python tools for quantitative, reproducible flow cytometry analysis

Welcome to a different style of flow cytometry analysis. Take a look at some example Jupyter notebooks:

or some screenshots from the GUI

Note: My ‘day job’ is teaching at a regional comprehensive college, so during the semester I may not have a huge amount of time to respond to bugs and feature requests. I’m still activately developing Cytoflow, so please continue to file bugs!

What’s wrong with other packages?

Packages such as FACSDiva and FlowJo are focused on primarily on identifying and counting subpopulations of cells in a multi-channel flow cytometry experiment. While this is important for many different applications, it reflects flow cytometry’s origins in separating mixtures of cells based on differential staining of their cell surface markers.

Cytometers can also be used to measure internal cell state, frequently as reported by fluorescent proteins such as GFP. In this context, they function in a manner similar to a high-powered plate-reader: instead of reporting the sum fluorescence of a population of cells, the cytometer shows you the distribution of the cells’ fluorescence. Thinking in terms of distributions, and how those distributions change as you vary an experimental variable, is something existing packages don’t handle gracefully.

What’s different about Cytoflow?

A few things.

  • Free and open-source. Use the software free-of-charge; modify it to suit your own needs, then contribute your changes back so the rest of the community can benefit from them.

  • A point-and-click interface for easy analysis.

  • Python modules to integrate into larger apps, automation, or for use in a Jupyter notebook

  • An emphasis on metadata. Cytoflow assumes that you are measuring fluorescence on several samples that were treated differently: either they were collected at different times, treated with varying levels of inducers, etc. You specify the conditions for each sample up front, then use those conditions to facet the analysis.

  • Cytometry analysis conceptualized as a workflow. Raw cytometry data is usually not terribly useful: you may gate out cellular debris and aggregates (using FSC and SSC channels), then compensate for channel bleed-through, and finally select only transfected cells before actually looking at the parameters you’re interested in experimentally. Cytoflow implements a workflow paradigm, where operations are applied sequentially; a workflow can be saved and re-used, or shared with your coworkers.

  • Easy to use. Sane defaults; good documentation; focused on doing one thing and doing it well.

  • Good visualization. I don’t know about you, but I’m getting really tired of FACSDiva plots.

  • Versatile. Built on Python, with a well-defined library of operations and visualizations that are well separated from the user interface. Need an analysis that Cytoflow doesn’t have? Export your workflow to a Jupyter notebook and use any Python module you want to complete your analysis. Data is stored in a pandas.DataFrame, which is rapidly becoming the standard for Python data analysis (and will make R users feel right at home.)

  • Extensible. Adding a new analysis or visualization module is simple; the interface to implement is only two or three functions.

  • Quantitative and statistically sound. Ready access to useful data-driven tools for analysis, such as fitting 2-dimensional Gaussians for automated gating and mixture modeling.

Installation

If you just want the point-and-click version (not the Python modules), you can install it from http://cytoflow.github.io/

See the installation notes on ReadTheDocs. Installation has been tested on Linux, Windows (x86_64) and Mac. Cytoflow is distributed as an Anaconda package (recommended) as well as a traditional Python package.

Documentation

Cytoflow’s documentation lives at ReadTheDocs. Perhaps of most use is the module index. The example Jupyter notebooks, above, demonstrate how the package is intended to be used interactively.

Metadata

Release files for cytoflow 1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cytoflow 1.2
File Size Uploaded Provenance Actions
cytoflow-1.2.tar.gz 14.7 MB Without provenance Details for cytoflow-1.2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for cytoflow 1.2
File Interpreter ABI Platform Actions
cytoflow-1.2-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details for cytoflow-1.2-cp38-cp38-win_amd64.whl
cytoflow-1.2-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details for cytoflow-1.2-cp38-cp38-macosx_10_9_x86_64.whl

Total release size: 21.8 MB

Release files / cytoflow-1.2.tar.gz

Download URL cytoflow-1.2.tar.gz
Size 14.7 MB
Tags Source
SHA-256 checksum
How to use checksums
2e48ba0665c224812a558847f312abf33e816ebc4c47cefb30a993eef2e78fd5
BLAKE2b-256 checksum
How to use checksums
139452c38ba3038c905cb0d52daf5d434410d70b3b5ebac2cb6c9c82e33ad13a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

Release files / cytoflow-1.2-cp38-cp38-win_amd64.whl

Download URL cytoflow-1.2-cp38-cp38-win_amd64.whl
Size 4.1 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
35c814ce8c3f505d88235705d6dcd740846ac4f423c1ab8673252b7e7c51c9e4
BLAKE2b-256 checksum
How to use checksums
327e06d91158b864ae9808f4ad74297ca968819ea9c81db3f0f172b6ab439db1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

Release files / cytoflow-1.2-cp38-cp38-macosx_10_9_x86_64.whl

Download URL cytoflow-1.2-cp38-cp38-macosx_10_9_x86_64.whl
Size 3.0 MB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
cb85e6fa71f6e9fe816ec134e8592cddae4a88fc1866c5d080515c98c8ed5ebc
BLAKE2b-256 checksum
How to use checksums
9775de6815c60f0662c1a2f8b32f0c1158530591e361f1e18ffa05029d2345de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

Security for cytoflow 1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page