Flow cytometry bioinformatics is the application of bioinformatics to flow cytometry data, which involves storing, retrieving, organizing and analyzing flow cytometry data using extensive computational resources and tools.
Flow cytometry bioinformatics requires extensive use of and contributes to the development of techniques from computational statistics and machine learning.
Flow cytometry and related methods allow the quantification of multiple independent biomarkers on large numbers of single cells. The rapid growth in the multidimensionality and throughput of flow cytometry data, particularly in the 2000s, has led to the creation of a variety of computational analysis methods, data standards, and public databases for the sharing of results.
Computational methods exist to assist in the preprocessing of flow cytometry data, identifying cell populations within it, matching those cell populations across samples, and performing diagnosis and discovery using the results of previous steps. For preprocessing, this includes compensating for spectral overlap, transforming data onto scales conducive to visualization and analysis, assessing data for quality, and normalizing data across samples and experiments.
For population identification, tools are available to aid traditional manual identification of populations in two-dimensional scatter plots (gating), to use dimensionality reduction to aid gating, and to find populations automatically in higher-dimensional space in a variety of ways.
It is also possible to characterize data in more comprehensive ways, such as the density-guided binary space partitioning technique known as probability binning, or by combinatorial gating.
Finally, diagnosis using flow cytometry data can be aided by supervised learning techniques, and discovery of new cell types of biological importance by high-throughput statistical methods, as part of pipelines incorporating all of the aforementioned methods.
Open standards, data and software are also key parts of flow cytometry bioinformatics.
Data standards include the widely adopted Flow Cytometry Standard (FCS) defining how data from cytometers should be stored, but also several new standards under development by the International Society for Advancement of Cytometry (ISAC) to aid in storing more detailed information about experimental design and analytical steps.
Open data is slowly growing with the opening of the CytoBank database in 2010, and FlowRepository in 2012, both of which allow users to freely distribute their data, and the latter of which has been recommended as the preferred repository for MIFlowCyt-compliant data by ISAC.
Open software is most widely available in the form of a suite of Bioconductor packages, but is also available for web execution on the GenePattern platform.
Data collection.
Flow cytometers operate by hydrodynamically focusing suspended cells so that they separate from each other within a fluid stream.
The stream is interrogated by one or more lasers, and the resulting fluorescent and scattered light is detected by photomultipliers.
By using optical filters, particular fluorophores on or within the cells can be quantified by peaks in their emission spectra.
These may be endogenous fluorophores such as chlorophyll or transgenic green fluorescent protein, or they may be artificial fluorophores covalently bonded to detection molecules such as antibodies for detecting proteins, or hybridization probes for detecting DNA or RNA.
The ability to quantify these has led to flow cytometry being used in a wide range of applications, including but not limited to:
Until the early 2000s, flow cytometry could only measure a few fluorescent markers at a time.
Through the late 1990s into the mid-2000s, however, rapid development of new fluorophores resulted in modern instruments capable of quantifying up to 18 markers per cell. 
More recently, the new technology of mass cytometry replaces fluorophores with rare-earth elements detected by time of flight mass spectrometry, achieving the ability to measure the expression of 34 or more markers.
At the same time, microfluidic qPCR methods are providing a flow cytometry-like method of quantifying 48 or more RNA molecules per cell.
The rapid increase in the dimensionality of flow cytometry data, coupled with the development of high-throughput robotic platforms capable of assaying hundreds to thousands of samples automatically have created a need for improved computational analysis methods.
Data.
Flow cytometry data is in the form of a large matrix of intensities over M wavelengths by N events. Most events will be a particular cell, although some may be doublets (pairs of cells which pass the laser closely together). For each event, the measured fluorescence intensity over a particular wavelength range is recorded.
The measured fluorescence intensity indicates the amount of that fluorophore in the cell, which indicates the amount that has bound to detector molecules such as antibodies. Therefore, fluorescence intensity can be considered a proxy for the amount of detector molecules present on the cell. A simplified, if not strictly accurate, way of considering flow cytometry data is as a matrix of M measurements times N cells where each element corresponds to the amounts of molecules.
Steps in computational flow cytometry data analysis.
The process of moving from primary FCM data to disease diagnosis and biomarker discovery involves four major steps:
Saving of the steps taken in a particular flow cytometry workflow is supported by some flow cytometry software, and is important for the reproducibility of flow cytometry experiments.
However, saved workspace files are rarely interchangeable between software. 
An attempt to solve this problem is the development of the Gating-ML XML-based data standard (discussed in more detail under the standards section), which is slowly being adopted in both commercial and open source flow cytometry software. The CytoML R package is also filling the gap by importing/exporting the Gating-ML that is compatible with FlowJo, CytoBank and FACS Diva softwares.
Data pre-processing.
Prior to analysis, flow cytometry data must typically undergo pre-processing to remove artifacts and poor quality data, and to be transformed onto an optimal scale for identifying cell populations of interest. Below are various steps in a typical flow cytometry preprocessing pipeline.
Compensation.
When more than one fluorochrome is used with the same laser, their emission spectra frequently overlap. Each particular fluorochrome is typically measured using a bandpass optical filter set to a narrow band at or near the fluorochrome's emission intensity peak.
The result is that the reading for any given fluorochrome is actually the sum of that fluorochrome's peak emission intensity, and the intensity of all other fluorochromes' spectra where they overlap with that frequency band.
This overlap is termed spillover, and the process of removing spillover from flow cytometry data is called compensation.
Compensation is typically accomplished by running a series of representative samples each stained for only one fluorochrome, to give measurements of the contribution of each fluorochrome to each channel.
The total signal to remove from each channel can be computed by solving a system of linear equations based on this data to produce a spillover matrix, which when inverted and multiplied with the raw data from the cytometer produces the compensated data.
The processes of computing the spillover matrix, or applying a precomputed spillover matrix to compensate flow cytometry data, are standard features of flow cytometry software.
Transformation.
Cell populations detected by flow cytometry are often described as having approximately log-normal expression.
As such, they have traditionally been transformed to a logarithmic scale.
In early cytometers, this was often accomplished even before data acquisition by use of a log amplifier.
On modern instruments, data is usually stored in linear form, and transformed digitally prior to analysis.
However, compensated flow cytometry data frequently contains negative values due to compensation, and cell populations do occur which have low means and normal distributions.
Logarithmic transformations cannot properly handle negative values, and poorly display normally distributed cell types.
Alternative transformations which address this issue include the log-linear hybrid transformations Logicle and Hyperlog, as well as the hyperbolic arcsine and the Box–Cox.
A comparison of commonly used transformations concluded that the biexponential and Box–Cox transformations, when optimally parameterized, provided the clearest visualization and least variance of cell populations across samples. However, a later comparison of the flowTrans package used in that comparison indicated that it did not parameterize the Logicle transformation in a manner consistent with other implementations, potentially calling those results into question.
Quality control.
Particularly in newer, high-throughput experiments, there is a need for visualization methods to help detect technical errors in individual samples.
One approach is to visualize summary statistics, such as the empirical distribution functions of single dimensions of technical or biological replicates to ensure they are the similar.
For more rigor, the Kolmogorov–Smirnov test can be used to determine if individual samples deviate from the norm.
The Grubbs's test for outliers may be used to detect samples deviating from the group.
A method for quality control in higher-dimensional space is to use probability binning with bins fit to the whole data set pooled together.
Then the standard deviation of the number of cells falling in the bins within each sample can be taken as a measure of multidimensional similarity, with samples that are closer to the norm having a smaller standard deviation.
With this method, higher standard deviation can indicate outliers, although this is a relative measure as the absolute value depends partly on the number of bins.
With all of these methods, the cross-sample variation is being measured. However, this is the combination of technical variations introduced by the instruments and handling, and actual biological information that is desired to be measured. Disambiguating the technical and the biological contributions to between-sample variation can be a difficult to impossible task.
Normalization.
Particularly in multi-centre studies, technical variation can make biologically equivalent populations of cells difficult to match across samples.
Normalization methods to remove technical variance, frequently derived from image registration techniques, are thus a critical step in many flow cytometry analyses.
Single-marker normalization can be performed using landmark registration, in which peaks in a kernel density estimate of each sample are identified and aligned across samples.
Identifying cell populations.
The complexity of raw flow cytometry data (dozens of measurements for thousands to millions of cells) makes answering questions directly using statistical tests or supervised learning difficult. Thus, a critical step in the analysis of flow cytometric data is to reduce this complexity to something more tractable while establishing common features across samples. This usually involves identifying multidimensional regions that contain functionally and phenotypically homogeneous groups of cells. This is a form of cluster analysis. There are a range of methods by which this can be achieved, detailed below.
Gating.
The data generated by flow-cytometers can be plotted in one or two dimensions to produce a histogram or scatter plot. The regions on these plots can be sequentially separated, based on fluorescence intensity, by creating a series of subset extractions, termed "gates". These gates can be produced using software, e.g. FlowJo, FCS Express, WinMDI, CytoPaint (aka Paint-A-Gate), VenturiOne, Cellcion, CellQuest Pro, Cytospec, Kaluza. or flowCore.
In datasets with a low number of dimensions and limited cross-sample technical and biological variability (e.g., clinical laboratories), manual analysis of specific cell populations can produce effective and reproducible results. However, exploratory analysis of a large number of cell populations in a high-dimensional dataset is not feasible. In addition, manual analysis in less controlled settings (e.g., cross-laboratory studies) can increase the overall error rate of the study. In one study, several computational gating algorithms performed better than manual analysis in the presence of some variation. However, despite the considerable advances in computational analysis, manual gating remains the main solution for the identification of specific rare cell populations that are not well-separated from other cell types.
Gating guided by dimension reduction.
The number of scatter plots that need to be investigated increases with the square of the number of markers measured (or faster since some markers need to be investigated several times for each group of cells to resolve high-dimensional differences between cell types that appear to be similar in most markers). To address this issue, principal component analysis has been used to summarize the high-dimensional datasets using a combination of markers that maximizes the variance of all data points. However, PCA is a linear method and is not able to preserve complex and non-linear relationships. More recently, two dimensional minimum spanning tree layouts have been used to guide the manual gating process. Density-based down-sampling and clustering was used to better represent rare populations and control the time and memory complexity of the minimum spanning tree construction process. More sophisticated dimension reduction algorithms are yet to be investigated.
Automated gating.
Developing computational tools for identification of cell populations has been an area of active research only since 2008. Many individual clustering approaches have recently been developed, including model-based algorithms (e.g., flowClust and FLAME), density based algorithms (e.g. FLOCK and SWIFT, graph-based approaches (e.g. SamSPECTRAL) and most recently, hybrids of several approaches (flowMeans and flowPeaks). These algorithms are different in terms of memory and time complexity, their software requirements, their ability to automatically determine the required number of cell populations, and