How closely FlowCyto matches FlowJo — measured, not claimed.
Every figure below is a measured value from a reproducible suite that runs the production FlowCyto engine against external references: FlowJo's own recorded population counts embedded in public, openly-licensed .wsp workspaces, the published Parks–Moore–Roederer logicle equations, ISAC GatingML 2.0 gate definitions, and each FCS file's own header bytes. No licensed FlowJo seat is used — FlowJo's numbers are read from public datasets. We state the tolerance for every number and list what we do not claim.
measured 2026-06-24 · regenerate from apps/api/concordance/
By capability
Concordant / comparable, with the tolerance each number is measured at. These are the independently-verified tracks.
| Capability | Reference | Match | % | Tolerance |
|---|---|---|---|---|
| Gating — population counts | FlowJo's own recorded count= attributes in public .wsp workspaces57/80 (71.25%) at strict ±2/1%; Δ ≤3.6% for populations ≥200 events (4 rare low-count cytokine+ gates differ more — see notes) | 80/80 | 100% | FlowJo standard (±50 events or 5%) |
| Transforms — logicle / log / linear / asinh | Published Parks–Moore–Roederer logicle equations + closed formsmax logicle error 9.9e-13 | 13/13 | 100% | 1e-4 display units |
| Compensation — spillover matrix | Embedded 11×11 spilloverMatrix in the public .wsp (re-parsed independently)import exact; engine inv(S)·S=I to 2.2e-16 | 121/121 | 100% | 1e-6 per element |
| FCS reading — header fidelity | Each file's own HEADER/TEXT bytes, re-parsed independently33/33 instrument files byte-faithful (1 header-only stub skipped) | 231/231 | 100% | exact ($TOT/$PAR/$PnN/$PnB) |
| GatingML 2.0 — gate geometry | ISAC GatingML 2.0 raw-coordinate gate definitionsindependent rows only; 308 BD DIVA round-trip rows excluded — see notes | 224/224 | 100% | raw 0.5 / display 1e-6 |
| Statistics — frequency of parent | Frequencies derived from FlowJo's own recorded countstracks the strict-tolerance gating drift; channel-stat values are an internal NumPy check only | 41/57 | 71.93% | strict ±0.05pp / 1% |
Headline gating concordance is measured at FlowJo's own standard tolerance (±50 events or 5%). At a strict tolerance (±2 events or 1%) the gating figure is 57/80 — see the per-population tables and limitations below. We show both so the number is not cherry-picked.
Gating, population by population
FlowCyto imports each public FlowJo workspace, re-runs the gating hierarchy on the same events, and reports every population beside FlowJo's own recorded count. Δ is the relative difference; a green dot marks a population that also lands within the strict ±2-event / 1% band.
| Population | FlowJo | FlowCyto | Δ | |
|---|---|---|---|---|
| Live | 49,542 | 49,484 | -0.12% | |
| Live / APC | 4,141 | 4,162 | +0.51% | |
| Live / APC / B Cell | 2,271 | 2,190 | -3.57% | |
| Live / APC / mDC | 502 | 513 | +2.19% | |
| Live / APC / mDC / IFNa+ | 2 | 1 | -50.00% | |
| Live / APC / mDC / IL-6+ | 22 | 22 | 0.00% | |
| Live / APC / mDC / IL-12+ | 2 | 2 | 0.00% | |
| Live / APC / mDC / TNFa+ | 71 | 72 | +1.41% | |
| Live / APC / pDC | 446 | 431 | -3.36% | |
| Live / APC / pDC / IFNa+ | 1 | 0 | -100.00% | |
| Live / APC / pDC / IL-6+ | 0 | 0 | 0.00% | |
| Live / APC / pDC / IL-12+ | 250 | 246 | -1.60% | |
| Live / APC / pDC / TNFa+ | 0 | 0 | 0.00% | |
| Live / CD14-MHC2- | 26,795 | 26,738 | -0.21% | |
| Live / Monocytes | 2,931 | 2,917 | -0.48% | |
| Live / Monocytes / IFNa+ | 13 | 11 | -15.38% | |
| Live / Monocytes / IL-6+ | 694 | 694 | 0.00% | |
| Live / Monocytes / IL-12+ | 146 | 138 | -5.48% | |
| Live / Monocytes / TNFa+ | 754 | 731 | -3.05% |
| Population | FlowJo | FlowCyto | Δ | |
|---|---|---|---|---|
| not debris | 91,720 | 91,720 | 0.00% | |
| not debris / singlets | 87,033 | 87,022 | -0.01% | |
| not debris / singlets / CD3+ | 54,737 | 55,074 | +0.62% | |
| not debris / singlets / CD3+ / CD4 | 34,083 | 34,380 | +0.87% | |
| not debris / singlets / CD3+ / CD4 / 38- DR+ | 1,124 | 1,135 | +0.98% | |
| not debris / singlets / CD3+ / CD4 / 38+ DR+ | 1,030 | 1,036 | +0.58% | |
| not debris / singlets / CD3+ / CD4 / 38+ DR- | 14,686 | 14,739 | +0.36% | |
| not debris / singlets / CD3+ / CD4 / 38- DR- | 17,240 | 17,470 | +1.33% | |
| not debris / singlets / CD3+ / CD4 / CCR7- 45RA+ | 733 | 756 | +3.14% | |
| not debris / singlets / CD3+ / CD4 / CCR7+ 45RA+ | 12,109 | 12,142 | +0.27% | |
| not debris / singlets / CD3+ / CD4 / CCR7+ 45RA- | 14,762 | 14,874 | +0.76% | |
| not debris / singlets / CD3+ / CD4 / CCR7- 45RA- | 6,476 | 6,608 | +2.04% | |
| not debris / singlets / CD3+ / CD8 | 14,530 | 14,430 | -0.69% | |
| not debris / singlets / CD3+ / CD8 / 38- DR+ | 1,307 | 1,300 | -0.54% | |
| not debris / singlets / CD3+ / CD8 / 38+ DR+ | 1,323 | 1,328 | +0.38% | |
| not debris / singlets / CD3+ / CD8 / 38+ DR- | 4,435 | 4,440 | +0.11% | |
| not debris / singlets / CD3+ / CD8 / 38- DR- | 7,468 | 7,362 | -1.42% | |
| not debris / singlets / CD3+ / CD8 / CCR7- 45RA+ | 3,918 | 3,886 | -0.82% | |
| not debris / singlets / CD3+ / CD8 / CCR7+ 45RA+ | 6,787 | 6,810 | +0.34% | |
| not debris / singlets / CD3+ / CD8 / CCR7+ 45RA- | 1,561 | 1,531 | -1.92% | |
| not debris / singlets / CD3+ / CD8 / CCR7- 45RA- | 2,267 | 2,203 | -2.82% | |
| not debris / singlets / CD3+ / DNT | 1,342 | 1,355 | +0.97% | |
| not debris / singlets / CD3+ / DPT | 807 | 790 | -2.11% |
| Population | FlowJo | FlowCyto | Δ | |
|---|---|---|---|---|
| not debris | 91,450 | 91,450 | 0.00% | |
| not debris / singlets | 86,802 | 86,804 | +0.00% | |
| not debris / singlets / CD3+ | 54,755 | 55,125 | +0.68% | |
| not debris / singlets / CD3+ / CD4 | 33,810 | 34,116 | +0.91% | |
| not debris / singlets / CD3+ / CD4 / 38- DR+ | 1,129 | 1,141 | +1.06% | |
| not debris / singlets / CD3+ / CD4 / 38+ DR+ | 1,124 | 1,131 | +0.62% | |
| not debris / singlets / CD3+ / CD4 / 38+ DR- | 14,204 | 14,264 | +0.42% | |
| not debris / singlets / CD3+ / CD4 / 38- DR- | 17,360 | 17,580 | +1.27% | |
| not debris / singlets / CD3+ / CD4 / CCR7- 45RA+ | 725 | 750 | +3.45% | |
| not debris / singlets / CD3+ / CD4 / CCR7+ 45RA+ | 11,825 | 11,851 | +0.22% | |
| not debris / singlets / CD3+ / CD4 / CCR7+ 45RA- | 14,841 | 14,961 | +0.81% | |
| not debris / singlets / CD3+ / CD4 / CCR7- 45RA- | 6,426 | 6,554 | +1.99% | |
| not debris / singlets / CD3+ / CD8 | 14,770 | 14,688 | -0.56% | |
| not debris / singlets / CD3+ / CD8 / 38- DR+ | 1,403 | 1,399 | -0.28% | |
| not debris / singlets / CD3+ / CD8 / 38+ DR+ | 1,342 | 1,357 | +1.12% | |
| not debris / singlets / CD3+ / CD8 / 38+ DR- | 4,499 | 4,500 | +0.02% | |
| not debris / singlets / CD3+ / CD8 / 38- DR- | 7,527 | 7,432 | -1.26% | |
| not debris / singlets / CD3+ / CD8 / CCR7- 45RA+ | 3,909 | 3,883 | -0.67% | |
| not debris / singlets / CD3+ / CD8 / CCR7+ 45RA+ | 7,036 | 7,087 | +0.72% | |
| not debris / singlets / CD3+ / CD8 / CCR7+ 45RA- | 1,620 | 1,588 | -1.98% | |
| not debris / singlets / CD3+ / CD8 / CCR7- 45RA- | 2,206 | 2,130 | -3.44% | |
| not debris / singlets / CD3+ / DNT | 1,268 | 1,282 | +1.10% | |
| not debris / singlets / CD3+ / DPT | 942 | 931 | -1.17% |
| Population | FlowJo | FlowCyto | Δ | |
|---|---|---|---|---|
| Lymphocytes | 19,212 | 19,225 | +0.07% | |
| Lymphocytes / Singlets | 18,689 | 18,702 | +0.07% | |
| Lymphocytes / Singlets / Singlets2 | 18,573 | 18,585 | +0.07% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1+ | 923 | 923 | 0.00% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1+ / NK cells | 312 | 312 | 0.00% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1+ / NK T cells | 535 | 535 | 0.00% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- | 17,458 | 17,470 | +0.07% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- / B cells | 2,459 | 2,460 | +0.04% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- / T cells | 10,745 | 10,747 | +0.02% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- / T cells / ab T cells | 9,188 | 9,191 | +0.03% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- / T cells / ab T cells / CD4 T cells | 7,480 | 7,482 | +0.03% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- / T cells / ab T cells / CD8 T cells | 1,407 | 1,407 | 0.00% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- / T cells / ab T cells / DN T cells | 266 | 267 | +0.38% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- / T cells / ab T cells / DP T cells | 6 | 6 | 0.00% | |
| Lymphocytes / Singlets / Singlets2 / NK1_1- / T cells / gd T cells | 1,470 | 1,470 | 0.00% |
What this does not claim
Concordance is only meaningful if its limits are stated. These are the honest caveats behind the numbers above.
- Gating reaches 100% at FlowJo's standard tolerance (±50 events or 5%). At strict tolerance (±2 events or 1%) it is 57/80 (71.25%). For populations of ≥200 events all differences are ≤3.6%, concentrated in deep sub-populations near biexponential gate boundaries. 4 rare cytokine-positive gates with low counts differ more — up to 100% (1→0 events); the largest miss on a population above 100 events is Live / Monocytes / IL-12+ at -5.5% (146→138), driven by ±1–2 event differences that stay within FlowJo's ±50-event standard. The FlowSOM v10 panel matches 15/15 even at strict.
- Coverage is 4 samples across 3 public FlowJo workspaces — a focused, reproducible validation set, not an exhaustive certification.
- The compensation track verifies matrix-import fidelity and the engine's inv(S)·S=I identity, not an independent re-derivation of a spillover matrix from single-stain controls.
- The GatingML headline counts only the 224 independently-verified geometry rows. A further 308 BD FACSDiva rows are a round-trip consistency check (oracle computed with our own display encoder) and are deliberately excluded from the headline figure.
- Channel statistic values (median / MFI / CV) are checked against a NumPy re-derivation over the engine's own gated events — an internal consistency check, not an external oracle. Only the frequency-of-parent figures above use FlowJo's own numbers.
Datasets & references
Every input is public and openly licensed. We cite the source rather than redistributing it. FlowJo's counts are read from these files as published — no licensed seat is used.
| Source | Repository | License |
|---|---|---|
| flowjo_A2004_v9.2.wsp | RGLab/flowWorkspaceData | GPL-2 |
| flowjo_manual_v9.5.2.wsp | RGLab/flowWorkspaceData | GPL-2 |
| flowjo_flowsom_v10.5.3.wsp | saeyslab/FlowSOM | GPL-2+ |
| gatingml_logtGml.xml | RGLab/CytoML | AGPL-3.0 |
| gatingml_flowsom_manual.xml | saeyslab/FlowSOM | GPL-2+ |
| mixed (GPL-2/2+, MIT) — see validation/manifest.json per file |
FlowJo, FACSDiva, and BD are trademarks of Becton, Dickinson and Company. FlowCyto is an independent product and is not affiliated with, sponsored by, or endorsed by BD. The comparisons on this page describe file-format interoperability and measured numerical concordance against openly-licensed, publicly available datasets, using FlowJo's own published values as the reference. All figures are reproducible from the open suite in apps/api/concordance/ and are provided for technical evaluation, without warranty.