2
$\begingroup$

Our research institute processes a lot of flow cytometry data, but the produced data is under-utilised due to the effort required to process it. A typical run will produce 5 million events (ideally one event per cell), with up to 14 dimensions of [ideally] log-normal fluorescence values for particular groups of cells ("populations"). Due to various systematic errors, negative values, scatter, and a non-zero "zero" value can happen, but I'm going to ignore those for the purpose of this question and assume that the data are well-distributed.

Researchers will typically probe these data using manual filters (set up specifically for each experiment) to find populations of interest. I suppose a picture might help. This one shows three identifiable cell populations, in order of size one at about (X/Ly6C:2,Y/CD86:2), one at about (4.5,3), and one small population at (2,4).

CD86 vs Ly6C flow plot

Here's another plot that has two cell populations that are close to each other, such that the population "humps" overlap substantially.

B220 vs CD11b flow plot

Manual filters are typically used because it can be very difficult to distinguish between a noisy data point from a large cell population and a less noisy data point from a small cell population, particularly when considering populations that make up about 0.01% of the total cells.

As an additional complication, counting these populations can be difficult when populations overlap (as in the second image). A filter/slice through the plot that separates populations could count many cells as being members of the wrong population.

Can these populations be detected in an automated way? If it is assumed that the populations are spread in a gaussian fashion at some point in each dimension, is there some method that can be used to approximate the number of cells in each population, even when populations are close by?

$\endgroup$
2
$\begingroup$

There are quite a few algorithms developed for the automatic classification of multidimensional flow cytometry data, you can see a (not so recent?) review here: http://www.nature.com/nmeth/journal/v10/n3/full/nmeth.2365.html. In your case, you are interested in the unsupervised methods, since you do not have data from single populations (which would provide you "labels" associated to each sample), as I understood.

In other words, if you have your data set as a matrix of 5 million samples (cells) with 14 dimensions (FC values) each, then you are looking basically for algorithms that will do a clustering of the samples into groups. By the way your description of each sample belonging to a multivariate Normal distribution leads to a Gaussian Mixture Model, which can be estimated from your data using e.g. the scikit-learn library for python: http://scikit-learn.org/stable/modules/mixture.html

$\endgroup$
2
$\begingroup$

Automated gating methods are gaining popularity over manual and time consuming analysis in say FlowJo, you should take a look at the openCyto bioconductor package this is a framework which builds on top of existing Bioconductor infrastructure for flow cytometry (PLOS compbio paper) with the aim of making various analysis routes more accessible to the researcher by assisting getting data into and out various gating algorithms. You can find a nice intro here which starts with importing a manual gating scheme from FlowJo and a how-to on 1D and 2D gating can also be found here.

An excellent YouTube intro to analysing flow data in R by Ryan Duggan Cytometry on Air is worth watching especially for those which have no R experience and are curious as to what can be achieved. Additionally it's worth having a look at the growing list of Bioconductor packages and datasets that exists for flow data: https://www.bioconductor.org/help/search/index.html?q=cytometry/

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.