Skip to content

v0.7.3 — debarcoding from the sample table, moving several populations at once, FlowJo import fixes

Choose a tag to compare

@david-priest david-priest released this 04 Sep 10:44
· 20 commits to master since this release
d93d2cf

Debarcoding from the sample table

A multiplexed CyTOF tube is debarcoded in GateLab by manual gating on the barcode planes: four gates per plane, one per state of the isotope pair, and one population per sample that intersects one gate from each plane. Until now that strategy was drawn from scratch and named by hand. Import barcode scheme builds it from the wet-lab record instead.

The table is a CSV or TSV with one row per sample and one column per barcode channel holding 1 or 0, the header naming the isotope (89Y, 194Pt, or 89 alone). A name column names the population and a file_name column names its FCS export; any other column becomes population metadata. The lab's string form (89+196-113+115-194-195- in a barcode column) is accepted too. A blank state, a duplicate combination, or a channel that cannot be matched stops the import with the row named.

Which channels are drawn together is a separate choice, because it is a drawing decision and it is where the odd-channel case lives. Channels are paired in column order, an odd channel is drawn against the DNA channel as a display-only axis, the dialog lets you re-pair, and # plane: 195Pt x 194Pt lines in the file declare the layout for the record.

The gates come from a template. The built-in one is taken from a real workspace and carries two things: the QC chain above the samples (the Gaussian parameter gates against Time, singlets on event length against DNA, a DNA-positive bead-negative gate, then a live gate), in the same forms they are drawn in, and the four polygons per plane. Every barcode gate is a polygon of seven or eight vertices, so it can be bent as well as resized. A gate whose channel the file lacks is left out and named. Save barcode scheme writes a workspace's existing strategy back out as both files, the scheme table as CSV and the template as JSON, and the written table imports to the same strategy.

Moving several populations at once

In the population tree the blue highlight is now a selection. Shift-click highlights the range from the active population to the clicked row, Cmd or Ctrl-click adds or removes a row, and a shift-drag on a highlighted row moves every highlighted row together, keeping their order and each one's subtree. The checkboxes keep their old job of pooling the display and feeding duplicate, move and delete, and All / None buttons for them sit above the list.

Fixed

Three FlowJo workspace conventions imported wrong without any error, found with a public dataset (Michaelis et al. 2025). FlowJo writes a parameter named LIVE/DEAD Aqua-A as LIVE_DEAD Aqua-A in its keyword table and spillover matrix, so that matrix row was dropped and the other channels were compensated without it; the import now tries that one substitution when nothing else matches. FlowJo stores a Time-axis gate in seconds, raw Time multiplied by $TIMESTEP, so in ticks the root gate selected nothing; Time coordinates are now divided by the file's $TIMESTEP before anything else. Leaf names that recur under several parents (IFNy FITC + under four cytokine gates) collided in counts and exports; such names are qualified with as many parents as they need.

A workspace saved by 0.7.0 or later could not be reopened: the file carried two per-sample scale lists that the reader had not been told about.