Question: Exporting FCS from FlowJo for flowCore & cytofkit analysis
gravatar for vsmuir
26 days ago by
vsmuir10 wrote:

Scientists that perform the benchwork and acquisition of flow cytometry data at my institute export FCS files from FlowJo after both compensating the data and removing dead cells/populations that are not of interest.  This data is then delivered to our computational group for additional analysis.  I'm a relative novice when it comes to flow data, and I have a couple of general questions about shifting the data from FlowJo to R and performing the pre-processing steps. 

The biexponential transformation is applied to some of the data when our wet-lab folks open and start gating the data.  The exported FCS files then often end up with some markers being transformed (sometimes this affects the most recently opened marker alone, sometimes this affects nearly all of the markers).  When the analysts receive the data, we generally want one transformation (typically either logicle or asinh with b=1/150) applied to each of the markers.  Clearly, we do not want to double-transform any of the data.

1.  Does transformation = "linearize" in read.FCS only act on data that are stored with different exponentiation?  I've received some compensated and compensated + transformed files that are identical when read in with transformation = F.  These files' expression values differ when imported using transformation = "linearize", but the output of keyword($P¡n¿E) looks the same for both files.  

2.  Is there a way to remove FlowJo's transformations from the exported FCS files?  Alternatively, is there a way to select the portion of the data for export and then remove all transformations in FlowJo?

3.  Are there best practices when exporting from FlowJo before importing with flowCore or analyzing with the core cytofkit function (i.e. options which should always be checked or methods cleaning/prepping data that won't change just a subset of the data)?  We'd like to avoid bringing in partially-transformed data with boundary events and other noise, but we would like to be able to hone in on our population of interest without asking a whole new set of people to apply gates to the data (particularly since we occasionally work with rare populations that aren't amenable to automatic gating).

4.  Can we trust that the compensation has been appropriately applied to all of the markers in FlowJo, or should we (re)apply compensation once the data is in R?

5.  I've read that, at least for CyTOF data, it's important to standardize marker values to z-scores or something similar in order to prevent markers with a higher dynamic range from dominating downstream clustering/dimension reduction.  Is this also true for flow data?


ADD COMMENTlink modified 26 days ago by SamGG130 • written 26 days ago by vsmuir10
gravatar for SamGG
26 days ago by
SamGG130 wrote:


I will give you quick answers, letting place for improvements by others more qualified than I am.

1. IIRC, linearize transform data linearly such that minimal value is zero and maximal is one. I always set transformation to FALSE.

2. If export is FCS v2, data are usually compensated and transformed. Use export in FCS 3, that preserves raw data with high definition and compensation matrix. Then you will have do compensate the data and transform them.

3. You can ask experimentalists to do data cleaning (ie pre-gating) in order to get confident with the rest of the pipeline you are going to develop, but OpenCyto is a very good alternative. As OpenCyto aims at reproducing and automating a manual gating strategy, it should be able to gate correctly rare populations.

4. I think commercial software do a good job at computing compensation. Their graphical interface allows experimentalists to check the coefficients and modify them if it is really necessary. I trust such compensations unless I have the feeling that I observe very strange patterns in 2D plots.

5. IMHO this is true also, but probably not too a large extent, as it's to me that nobody correct it. z-scores (ie subtract mean, divide by sd) is not a good correction, and I would prefer a linearize transformation (after compensation of course).

If you are interesting in exporting FCS from FlowJo you should consider reading the documentation of flowWorkspace and OpenCyto.


ADD COMMENTlink written 26 days ago by SamGG130

Here is the related post regarding to linearization

ADD REPLYlink written 26 days ago by Jiang, Mike1.1k
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.2.0
Traffic: 333 users visited in the last hour