FlowGateVR – A Discovery Tool for Flow Cytometry

 

How to Prepare and Export Your Cytometry Data

– Updated August 2026

 

Summary

FlowGateVR loads compensated event CSV files — one row per event (cell), one column per parameter (marker, scatter channel, or computed dimension). Every column becomes an axis you can map to X, Y, Z, Color, or Brightness in VR. The header row names your markers; those names are what you’ll see and speak when assigning axes and asking the AI Assistant about your data.

FlowGateVR does not transform, compensate, or rescale your data. It plots the values exactly as exported. All compensation, transformation (arcsinh / logicle / biexponential), and any dimensionality reduction must be done before export, in FlowJo or your analysis pipeline. This keeps your data under your control and means what you see in VR matches what you saw at your desk.

Basic Format Requirements

  • Delimiter: Comma (,) only
  • Header row: Required. The first line must contain the parameter/marker names. These names drive axis selection and AI Assistant queries.
  • Encoding: UTF-8 (standard). BOM detection supported.
  • Row consistency: Every row must have the same number of columns as the header. Mismatched rows stop parsing.
  • Whitespace: Column names and cell values are trimmed automatically.
  • Missing values: NULL, NaN, empty cells are stored as 0.0 for numeric columns, or blank for string columns.
  • One event per row: Each row is a single cell/event. No summary or statistics rows.

Data Must Be Compensated and Transformed Before Export

FlowGateVR plots values as-is. It applies no compensation and no transforms.

  • Compensation: Export compensated parameters. Spectral overlap is not corrected in-app.
  • Transforms: Apply your arcsinh / logicle / biexponential scaling in FlowJo (or equivalent) first. FlowGateVR renders on a linear axis from the values present in the file. If your fluorescence values are still raw/linear-scaled, populations will bunch against the axis floor and gating will be difficult.
  • Rule of thumb: If the channel looks the way you want it to look in FlowJo, export those displayed/scaled values to CSV.

This is the single most common data-loading issue. A file that “loads but looks wrong” (everything crushed into a corner) is almost always uncompensated or untransformed data, not a FlowGateVR bug.

Exporting From FlowJo: The Exact Settings

FlowJo v10, workspace ribbon: File tab → Document band → Data Export/Concatenate → Export/Concatenate Populations (or Group).

Select the population you want first. Highlighting a gated subset in the gating tree exports only that subset; highlighting the sample exports all events.

The export dialog offers three formats: FCS3, CSV – Channel values, and CSV – Scale values. This choice is the one that matters, and it is not obvious from the names.

Use CSV – Channel values (recommended for FlowGateVR)

Channel values are the values as displayed on your FlowJo plot axes. FlowJo takes the distribution as you see it on the biexponential/logicle axis and bins it onto a linear scale, conventionally 0 to 1023. The transformation you tuned by eye in FlowJo, including width basis and low-end compression, is already baked into the numbers.

This is what FlowGateVR wants. Because FlowGateVR plots on linear axes and applies no transforms, channel values give you populations positioned in VR the way they were positioned in FlowJo.

CSV – Scale values

Scale values are the underlying compensated values in the original data scale, not the display scale. They are correct data, but they are effectively untransformed as far as visualization goes. Load them into FlowGateVR and dim populations crush toward the axis floor while a few bright outliers stretch the axis. This is the “loads but looks wrong” case above.

Use scale values only if you intend to apply your own arcsinh transform in your own pipeline before handing the file to FlowGateVR. If you do: a cofactor around 100 is a reasonable starting point for conventional flow data (approximates FlowJo v10 default LSR-II scaling), and around 15 for mass cytometry/CyTOF.

Parameters Dropdown: Choose All Compensated Parameters

The Parameters option offers all uncompensated parameters, all compensated parameters, or a custom set. Choose compensated (or a custom set of compensated parameters).

Note that FlowJo’s default is uncompensated, because that is the right default for round-tripping a file back into FlowJo. It is the wrong default for FlowGateVR. Changing this dropdown is an easy step to miss.

A custom set is worth using when you have a wide panel: exporting only the markers you plan to explore keeps the axis-selection menu in VR short and the file smaller.

Include Events: Down-sample Here If Needed

Include no more than N makes FlowJo randomly drop events to reach N. This is the cleanest way to get under FlowGateVR’s ~1,000,000 event working limit on Quest. Random down-sampling preserves population structure; it just thins it.

Summary of FlowJo Export Settings

Dialog option Set to
Format CSV – Channel values
Parameters All compensated parameters (or custom set of compensated)
Include Events All, or Include no more than 1,000,000 for Quest
Population selected The gated population you want, or the sample for all events

The two-setting version, if you remember nothing else: CSV – Channel values + compensated parameters. Those two dropdowns are the difference between data that looks right in VR and data that piles up in a corner.

Supported Panel Types

  • Conventional flow cytometry — scatter (FSC/SSC) plus fluorescence markers.
  • Mass cytometry (CyTOF) — loaded as-is. Export your compensated/transformed CyTOF event table to CSV the same way; FlowGateVR reads it without special handling.

Both are read identically: columns become axes, and the header row becomes your marker names.

Data Types

All columns default to numeric (double). If any non-numeric values are found in a column during parsing, the entire column is converted to string type. String columns are indexed internally (each unique value gets a numeric index) for axis mapping. Use string columns for categorical labels (such as a population or sample tag) rather than measured markers.

Computed Dimensions (tSNE / UMAP / Derived Columns)

FlowGateVR does not compute dimensionality reductions. Run tSNE, UMAP, or other derived dimensions in your own pipeline and add them as new columns to your event CSV before export.

  • Name them clearly (e.g., tSNE_1, tSNE_2, UMAP_1, UMAP_2).
  • They behave like any other column — map them to X/Y/Z and explore reduced-dimension clusters alongside the original markers that drove them.

Axis Mapping

  • Any numeric column can be mapped to X, Y, Z, Color, or Brightness.
  • A string column (categorical) can drive Color.
  • Switch axis assignments on the fly to explore different marker combinations; gates are preserved across axis switches.

Gating and Export

  • Draw 3D gates to select populations; apply multiple simultaneous gates, each with its own color.
  • Export gated subsets back to CSV for follow-up analysis in FlowJo or your own pipelines. Exported files keep the same column structure, so they round-trip cleanly.

Size and Performance

  • FlowGateVR runs natively on Meta Quest. Practical limit is ~1,000,000 events (rows) per dataset.
  • Larger files: down-sample before export, or use the Windows desktop version (higher memory, GPU-accelerated rendering) — contact support@immsci.com.

Quick Reference: Minimum to Get Plotting

  • Basic 3D scatter — any 3 or more numeric columns (markers/channels)
  • Color by marker — any numeric column
  • Color by category — a string column (e.g., sample or population label)
  • tSNE/UMAP view — add your reduction columns to the CSV, then map them to axes
  • Clean populations — data compensated and transformed before export (see above)

Example: Minimal Compensated Event CSV

FSC-A,SSC-A,CD3,CD4,CD8,CD19
102345,87211,3.42,2.10,0.05,0.01
98112,76540,3.55,0.08,2.98,0.02

Each row is one cell. Map CD3/CD4/CD8 to X/Y/Z, color by CD19, and draw gates to isolate populations. Values shown are already compensated and transformed.

Example: With Computed Dimensions

CD3,CD4,CD8,CD19,tSNE_1,tSNE_2
3.42,2.10,0.05,0.01,12.4,-8.7
3.55,0.08,2.98,0.02,-3.1,15.2

Map tSNE_1/tSNE_2 to X/Y and a marker (e.g., CD4) to Z or Color to see how reduced-dimension clusters relate to the underlying measurements.


This reference describes the input format FlowGateVR expects. FlowGateVR performs no compensation, transformation, or dimensionality reduction — those steps belong in your analysis software prior to CSV export.