CytoPy - a cytometry analysis framework for Python

In recent years there has been an explosion in Cytometry data analysis tools in the open source scientific community. This expansion is looking to soon replace traditional methods such as manual gating with sophisticated automated algorithms.

Although exciting, this can be daunting to those from a traditional immunology background and those that are new to programming. Additionally, current tools have a loose structure in the steps taken in analysis, resulting in large custom scripts, poor reproducibility, and insufficient data management.

CytoPy was created to address these issues. It was created with the general philosophy that given some cytometry data and a clinical/experimental endpoint, we wish to find what properties seperate groups (e.g. what cell populations are important for identifying a disease? What phenotypes are changing in response to a stimulus? etc). The pipeline itself is centered around a MongoDB database, is built in the Python programming language, and designed with a ‘low code’ API, greatly simplifying cytometry analysis.

CytoPy was authored by Ross Burton and the Eberl Lab at Cardiff University Infection and Immunity Research Institute. CytoPy is maintained on GitHub ( and all the latest developments can be found here. This project is a working progress and we are eager to expand and improve it’s capabilities. If you would like to contribute to CytoPy please make a pull request or email us at For news and latest developments, follow us on Twitter @EberlLab and @burtondatasci

Our accompanying manuscript details the application of CytoPy to a novel immunophenotyping project focused on patients receiving peritoneal dialysis who were admitted on day 1 of acute peritonitis before commencing antibiotic treatment. If you have MongoDB installed (see Getting Started) and would like to replicate our findings, you can find a copy of our database here.


The PD database is very large (~120Gb) on account of the large quantity of single cell data contained within, please bare this in mind before downloading and rebuilding the database

To rebuild the database locally, use mongorestore:

mongorestore --db CytoPy --drop /path/to/downloaded/CytoPy_database

Table of Contents

Indices and tables