Flow Cytometry#
Tutorials for the omicverse.flow module — flow, spectral and mass cytometry.
New to ov.flow? Start with the case study — one complete analysis on real published data, in short ov.* calls with the reasoning in the text.
An event is a cell, but nothing else transfers from single-cell RNA-seq. The
file format is FCS; the value a detector reports is contaminated by every other
fluorochrome in the panel; the axis you look at is a nonlinear display scale;
and the analysis is a sequential gating hierarchy rather than a clustering.
ov.flow owns those, and ov.io.read_fcs owns the reading.
The rule the module is built around: a gate carries the display scale its boundary was drawn on. The same vertices mean different populations on a linear and a logicle axis, so a gate without its transform cannot be re-applied, saved or shared honestly. Saving to Gating-ML, running one strategy across a batch, and drawing the gate on the right axis all follow from that one decision.
Layer |
Functions |
|---|---|
display transforms |
|
gate geometry |
|
gating strategy |
|
compensation |
|
interchange (Gating-ML 2.0) |
|
clustering |
|
plots |
|
Notebooks 01-04 write their own simulated FCS file — nine known populations, a
real $SPILLOVER keyword and a noise floor that goes negative — so they run with
no data of your own. Notebook 05 runs the same module on two real, published,
CC-BY-4.0 experiments downloaded from their original repositories.
Installation#
pip install omicverse
No extra needed. The transforms are derived from the Gating-ML 2.0 and Parks
2006 specifications and verified bit-for-bit against the reference C
implementation, rather than wrapped from flowutils — whose numpy>=2
requirement would otherwise be imposed on every omicverse user. FlowSOM is pure
numpy, with no R or Java dependency.