The CytoNorm1 algorithm has been developed and implemented as an R package by Sofie Van Gassen PhD, from the Saeys Lab out of the University of Belgium, in Ghent. The purpose of the tool is to normalize batch effects in flow cytometric datasets collected in different batches/ runs, based on a common set of control samples run with each batch. CytoNorm requires a control sample for each batch. These control samples must be biological and representative of the samples that are being normalized. The control samples are employed to create target spline distributions for each measured parameter, then normalizes experimental samples to fit those targets.
Additional Notes:
- The CytoNorm plugin requires that each sample – both controls and different batches – contain a common set of parameters named exactly the same for each FCS file.
- All samples should be biological and representative of the same cell type/compartment, stained with the same panel of reagents.
- The algorithm will try to normalize your experimental samples based on the distribution changes observed in the set of common controls across batches/runs. It will not work well if the control samples distributions are significantly different from the target experimental samples.
CytoNorm has been implemented as a “Workspace Plugin” for FlowJo. This allows the plugin to run by accessing datasets to be used in normalization, as opposed to a particular single population in the workspace (a “population plugin”). It also means that the plugin must be run with a slightly different workflow.
To run the plugin:
1. Install R version 3.6 (or greater).
2. Make sure your R path is specified in the Diagnostics section of FlowJo’s preferences.
3. Point FlowJo to your plugins folder (also in the Diagnostics preferences):
4. Place the CytoNorm plugin’s JAR file into your plugins folder
5. Restart FlowJo
6. Within theWorkspace tab of a blank workspace, select the Plugins option, and choose “AddWorkspace Plugin”:
7. Select the CytoNorm workspace plugin option:
8. This will launch a file browser to search for FCS data, all datasets for normalization should be selected along with the associated controls:
9. Next researchers should indicate which samples are controls by checking the appropriate boxes, and entering a value identifying each sample’s batch.
By running the tool FlowJo should pass the path from the FCS files and their status into R. There, the CytoNorm algorithm will try to automatically install, and generate a new normalized version of the original dataset within the same location as the initial FCS dataset.
10. Finally FlowJo will open that location in a file browser and data can be loaded into the workspace for further analysis.

Benchmarking
Example 01 – Here we can see the effect of normalization in similar samples suffering only very slight batch effects, using a common tSNE embedded space:

Note: The normalization helps to reduce the batch effects and move similar subsets together into the appropriate islands, or to distribute batches throughout the tSNE islands.
Example 02 – Here we can see the effect of normalization on expression of a few select parameters:

Note: Expression will not change uniformly, nor will expression necissarily move in one direction or another.
Normalized expression is expected change following changes associated with technical variability within controls. Figure for example 02 generated by the ViolinBox plotting plugin, available here: https://www.flowjo.com/exchange/#/plugin/profile?id=13
• Data for this initial benchmarking pulled from Flow Repository(2): FR-FCM-Z247(1).
References:
1. “CytoNorm: A Normalization Algorithm for Cytometry Data” Van Gassen S, Gaudilliere B, Angst MS, Saeys Y, Aghaeepour N Cytometry A. 2019
2. Spidlen J, Breuer K, Rosenberg C, Kotecha N and Brinkman RR. “FlowRepository – A Resource of Annotated Flow Cytometry Datasets Associated with Peer-reviewed Publications.” Cytometry A. (2012)
3. Conrad, Valerie K., et al. “Implementation and validation of an automated flow cytometry analysis pipeline for human immune profiling.” Cytometry Part A 95.2 (2019) FR-FCM-ZYXS
4. Source (CytoNorm GitHub): https://github.com/saeyslab/CytoNorm
Please review FlowJo documentation for installing plugins https://www.flowjo.com/docs/flowjo10/experiment-based-platforms/plugins/installing-plugins