Skip to content

Flow Cytometry Data Analysis with FlowCytometryTools

Flow cytometry is a powerful technique used in cell biology to analyze the physical and chemical characteristics of cells. However, the sheer volume of data generated from flow cytometry experiments necessitates robust tools for efficient data analysis. This is where FlowCytometryTools comes in—a comprehensive Python library designed for the easy handling and analysis of flow cytometry data.

FlowCytometryTools was developed by a talented team from the Massachusetts Institute of Technology, including Eugene Yurtsev, Jonathan Friedman, Jeff Gore. The original repository can be found here.

Their efforts have provided the scientific community with a versatile tool that simplifies the workflow of flow cytometry data analysis.

Features and Benefits

FlowCytometryTools offers a range of features that make it incredibly useful for researchers:

  1. Data Handling: The library allows for seamless reading and manipulation of FCS (Flow Cytometry Standard) files.
  2. Data Visualization: It provides functions for plotting and visualizing flow cytometry data, making it easier to interpret results.
  3. Gating: The library supports data gating, enabling users to isolate specific cell populations for more focused analysis.
  4. Integration with Pandas: FlowCytometryTools integrates well with the Pandas library, allowing users to leverage powerful data manipulation capabilities.
Example Usage

Here’s a simple example demonstrating how to read an FCS file and visualize forward and side scatter data:

from FlowCytometryTools import FCMeasurement
import matplotlib.pyplot as plt

# Read the FCS file
sample = FCMeasurement(ID='Test Sample', datafile='sample.fcs')

# Extract data
data =

# Plot FSC vs SSC
plt.figure(figsize=(10, 6))
plt.scatter(data['FSC-A'], data['SSC-A'], s=1)
plt.title('FSC vs SSC')

This example showcases the simplicity and efficiency of FlowCytometryTools in handling and visualizing flow cytometry data.

The Python 3.x Issue

Despite its powerful capabilities, FlowCytometryTools encountered compatibility issues with Python 3.x. Specifically, the library was originally designed for Python 2.x, which led to certain deprecated features causing errors when used in Python 3.x environments. One such issue was related to the usage of collections.MutableMapping, which was moved to in Python 3.x.

Cytogence’s Contribution

At Cytogence, we recognized the potential of FlowCytometryTools and the need for it to be compatible with modern Python versions. To address this, we forked the original repository and made the necessary modifications to ensure it works seamlessly with Python 3.x.

You can access our forked repository here.


FlowCytometryTools is an invaluable resource for researchers working with flow cytometry data. By updating the library for Python 3.x, we at Cytogence have ensured that it remains a relevant and powerful tool for the scientific community. We invite you to explore the enhanced version and leverage its capabilities for your data analysis needs.

For more information and to contribute to the project, visit our GitHub repository. Together, we can continue to advance the field of flow cytometry data analysis.