Automated Cytometry Gating and Annotation

Given the hypothesis of a bi-modal distribution of cells for each marker, the algorithm constructs a binary tree, the nodes of which are subpopulations of cells. At each node, observed cells and markers are modeled by both a family of normal distributions and a family of bi-modal normal mixture distributions. Splitting is done according to a normalized difference of AIC between the two families. Method is detailed in: Commenges, Alkhassim, Gottardo, Hejblum & Thiebaut (2018) .

CRAN_Status_Badge Travis-CI BuildStatus AppVeyor BuildStatus Downloads


cytometree is a package which performs automatic gating and annotation of flow-cytometry data. On top of the CRAN help files, we also provide a vignette illustrating the functionalities of cytometree.

The cytometree algorithm rely on the construction of a binary tree, the nodes of which represents cellular (sub)populations. At each node, observed cellular markers are modeled by both a family of normal and a family of normal mixture distributions and splitting of cells into further subpopulations is decided according to a normalized difference of AIC between the two families.

Given the unsupervised nature of such a binary tree, some of the available markers may not be used to find the different cell populations present in a given sample. So in order to recover a complete annotation, we propose a post processing annotation procedure which allows the user to distinguish two or three expression levels per marker.

The following article explains in more details how cytometree works:

cytometree: a binary tree algorithm for automatic gating in cytometry analysis, Cytometry: Part A, (in press), 2018.


The easiest way to get cytometree is to install it from CRAN:


Or to get the development version from GitHub:


– Chariff Alkhassim & Boris Hejblum


News about the cytometree R package

Main changes in Version 1.3.0 (2019-01-12)

  • (semi-)supervised option

Main changes in Version 1.2.0 (2018-08-23)

  • improved plot_nodes() function
  • added plot_cytopop() function for displaying populations counts

Main changes in Version 1.1.1 (2017-10-22)

  • Added a 3 component Gaussian mixture option

Main changes in Version 1.1.0 (2017-10-10)

  • Improved the annotation process allowing for 3 levels of expression and using the tree
  • Added a file to track changes to the package.
  • Added a vignette autogating_cytometree
  • Added a README.Rmd

Main changes in Version 1.0.1 (2017-07-03) --- this is only a minor release:

  • bug fix

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


2.0.2 by Boris P Hejblum, 2 years ago

Report a bug at

Browse source code at

Authors: Chariff Alkhassim , Boris P Hejblum , Anthony Devaux , Van Hung Huynh Tran

Documentation:   PDF Manual  

LGPL-3 | file LICENSE license

Imports ggplot2, graphics, igraph, mclust, methods, stats, cowplot, GoFKernel

Depends on Rcpp

Suggests knitr, formatR, rmarkdown, viridis

Linking to Rcpp, RcppArmadillo

See at CRAN