本文へ移動
cccskills
無料GitHub で公開

bio-flow-cytometry-gating-analysis

Defines cell populations in flow and spectral cytometry through manual gates (rectangle, polygon, quadrant, boolean) and reproducible automated gating (openCyto gating templates, flowDensity data-driven thresholds, flowClust model-based gates), organized as a hierarchical GatingSet (flowWorkspace) and round-tripped with FlowJo via CytoML. Covers the canonical gate order (time -> debris -> singlets -> live -> lineage), FMO-vs-isotype boundary setting, gate-order dependence and recompute semantics, rare-event/MRD gating, and per-population statistics. Use when building a gating strategy, automating a manual FlowJo scheme across samples, choosing manual vs data-driven gates, or extracting population frequencies.

インストール方法を見る

含まれるファイル(3)

  • SKILL.md8.9 KB
  • examples/gating_workflow.R1.2 KB
  • usage-guide.md3.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Version Compatibility

Reference examples tested with: flowWorkspace 4.14+, openCyto 2.14+, flowDensity 1.36+, flowCore 2.14+, CytoML 2.14+.

Before using code patterns, verify installed versions match. If versions differ:

  • R: packageVersion('<pkg>') then ?function_name to verify parameters

openCyto gating-method names drift across versions - confirm with gt_list_methods() on the installed package (e.g. gate_flowclust_2d vs flowClust.2d). Adapt rather than retrying.

Gating Analysis

"Gate my data to identify cell populations" -> Define populations by drawing boundaries in marker space, organized as a hierarchy, manually or with reproducible data-driven methods.

  • R (manual + hierarchy): flowCore gates -> flowWorkspace::GatingSet -> gs_pop_add -> recompute
  • R (automated): openCyto gating template (CSV) or flowDensity::deGate

The Single Most Important Modern Insight -- FMO, Not Isotype, Sets the Boundary; and Gate Order Is a Funnel

The position of a positive/negative boundary is governed by SPREADING ERROR - the variance that every other bright fluorophore spills into the channel of interest - NOT by nonspecific antibody binding (Roederer 2001 Cytometry 45:194). An FMO control (full panel minus the one channel) reproduces exactly that spreading and is the correct way to set the gate; an isotype control addresses only nonspecific binding, has a different total fluorochrome load, and sits in the wrong place. Isotypes are deprecated for boundary-setting (still fine for a qualitative new-reagent check). Equally load-bearing is gate ORDER: time -> debris (FSC/SSC) -> singlets (FSC-A vs FSC-H) -> live/dead -> lineage. This is a funnel that removes the broadest, least-specific contaminants first (time instability corrupts ALL channels; doublets are scatter-normal AND viable AND double-positive; dead cells bind antibody nonspecifically) so each narrower downstream gate operates on clean input. Reorder it - gate lineage before singlets - and artifacts are baked into the result that no later gate can remove.

Automated-Gating Taxonomy

MethodCitationMechanismWhen to use
openCytoFinak 2014 PLoS Comput Biol 10:e1003806CSV gatingTemplate + per-gate algorithmsreproduce a manual SOP across many samples; human-readable + automated
mindensity (openCyto)-KDE valley between two peaksclear bimodal marker, 1D cut
tailgate (openCyto)-KDE-derivative tail onsetrare positive tail, no clean second peak
quantileGate (openCyto)-cut at a fixed event quantilethreshold should track a fraction
flowDensityMalek 2015 Bioinformatics 31:606sequential bivariate density cutoffsreproduce an entire predefined manual strategy
flowClust / gate_flowclust_2dLo 2009 BMC Bioinformatics 10:145t-mixture + Box-Cox, K by BICoverlapping elliptical populations
DAFiLee 2018 Cytometry A 93:597recursive filter + clustering on a hierarchydiscovery WITH interpretability

Rule of thumb: 1D bimodal -> mindensity; rare tail -> tailgate; overlapping ellipses -> flowClust.2d; replicate a full manual SOP -> flowDensity; discovery-with-interpretability -> DAFi.

Build a Gating Hierarchy

Goal: Apply gates in the canonical order and extract population statistics.

Approach: Build a GatingSet, add gates parent-by-parent, then recompute() - WITHOUT it, child populations are empty. Gates apply on the TRANSFORMED scale if the GatingSet is transformed.

library(flowWorkspace); library(flowCore)

gs <- GatingSet(fs)
# matrix dimnames preserve 'FSC-A'/'FSC-H'; data.frame() would mangle them to FSC.A
singlet <- polygonGate('singlets', .gate = matrix(
  c(2e4, 1e4, 25e4, 2e5, 25e4, 26e4, 2e4, 4e4), ncol = 2, byrow = TRUE,
  dimnames = list(NULL, c('FSC-A', 'FSC-H'))))
gs_pop_add(gs, singlet, parent = 'root')
gs_pop_add(gs, rectangleGate('CD3+', CD3 = c(1.5, Inf)), parent = 'singlets')  # transformed scale
recompute(gs)                                   # REQUIRED - else children are empty
gs_pop_get_stats(gs, type = 'count')

Automated Gating with an openCyto Template

Goal: Apply a reproducible, declarative gating strategy across all samples.

Approach: A CSV template (alias/pop/parent/dims/gating_method/gating_args) defines the hierarchy; gt_gating applies it. Confirm method names with gt_list_methods().

library(openCyto); library(data.table)

tmpl <- fread('
alias,pop,parent,dims,gating_method,gating_args
nonDebris,+,root,FSC-A,mindensity,
singlets,+,nonDebris,"FSC-A,FSC-H",singletGate,
live,-,singlets,"Live_Dead",mindensity,
CD3,+,live,CD3,mindensity,
CD4CD8,+,CD3,"CD4,CD8",gate_flowclust_2d,K=2
')
gt <- gatingTemplate(tmpl)
gs <- GatingSet(fs)
gt_gating(gt, gs)

Rare-Event / MRD Gating

Goal: Detect a rare population (e.g. MRD at 1e-4 to 1e-5).

Approach: Unsupervised clustering FAILS here (a 1e-5 population is ~10 events, invisible to density/SOM); MRD stays supervised/template-gated. Compute the acquisition depth needed from the target sensitivity and the ~50-event Poisson rule BEFORE acquiring; never downsample.

# Need ~50-60 target events for CV < ~15%; sensitivity 1e-5 => acquire ~1e6 cells.
target_sensitivity <- 1e-5
events_needed <- ceiling(50 / target_sensitivity)   # cells to acquire
# Gate the rare population with a prespecified template; report observed LOD from cells acquired.

Per-Method Failure Modes

Empty child populations

Trigger: querying stats right after gs_pop_add. Mechanism: membership not computed. Symptom: zero counts. Fix: recompute(gs).

Gate coordinates on the wrong scale

Trigger: raw-scale gate values on a transformed GatingSet (or vice versa). Mechanism: scale mismatch. Symptom: gate in the wrong place / empty. Fix: set gate values on the same (transformed) scale the GS uses.

Isotype-defined boundary

Trigger: isotype control to set positivity. Mechanism: spreading error, not nonspecific binding, sets the edge. Symptom: wrong negative boundary. Fix: use FMO.

Clustering used for rare events

Trigger: FlowSOM for a 1e-5 population. Mechanism: too few events. Symptom: rare pop absorbed into a neighbor. Fix: supervised/template gating; size acquisition for the Poisson floor.

Quantitative Thresholds

ThresholdSourceRationale
~50-60 events for CV < 15%Poisson statisticsrare-event detection floor
sensitivity 1e-5 needs ~1e6 cellsPoisson floorto collect ~50 events at that frequency
FMO for boundary, not isotypeRoederer 2001; Maecker & Trotter 2006spreading error dominates the boundary

Common Errors

Error / symptomCauseSolution
zero counts in childrenno recompute()call it after adding gates
gt_gating method not foundversion-renamed methodcheck gt_list_methods()
filter() vs Subset() confusionfilter returns a mask, Subset the datause Subset(ff, gate) for the population
FlowJo .jo won't importonly .wsp supportedre-save as wsp; use CytoML

References

  • Roederer 2001 Cytometry 45(3):194-205 — spreading error sets the gate boundary.
  • Maecker & Trotter 2006 Cytometry A 69(9):1037-1042 — FMO doctrine, controls, positivity.
  • Finak 2014 PLoS Comput Biol 10(8):e1003806 — openCyto automated gating templates.
  • Malek 2015 Bioinformatics 31(4):606-607 — flowDensity data-driven gating.
  • Lo 2009 BMC Bioinformatics 10:145 — flowClust model-based gating.
  • Lee 2018 Cytometry A 93(6):597-610 — DAFi directed filtering + clustering.
  • Spidlen 2015 Cytometry A 87(7):683-687 — Gating-ML 2.0 portable gate standard.

Related Skills

  • compensation-transformation - Preprocess before gating; gate on the transformed scale
  • doublet-detection - The singlet step of the gating funnel
  • clustering-phenotyping - Unsupervised alternative for high-dim discovery
  • differential-analysis - Compare gated population frequencies between conditions
  • fcs-handling - Load FCS and import FlowJo workspaces via CytoML

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Predicts ADMET properties using ADMETlab 3.0 (119 platform features, including 77 prediction models with modeled-endpoint uncertainty), ADMET-AI, DeepChem MolNet, and chemprop D-MPNN with explicit handling of OECD QSAR principles, applicability domain assessment, calibration, hERG/CYP/AMES endpoints, and PAINS / Lipinski / Ro5 / Veber / BBB druglikeness filters. Use when filtering compounds for drug-likeness, prioritizing leads by predicted safety, or building an in-house ADMET QSAR model.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Trim PCR primers from aligned reads in amplicon-panel BAMs using samtools ampliconclip. Use when processing SARS-CoV-2 ARTIC, hereditary cancer panels, ctDNA hot-spot panels, or any amplicon assay where primer-derived bases would falsely confirm reference at primer footprints.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Filter alignments by flags, mapping quality, and regions using samtools view and pysam. Use when extracting specific reads, removing low-quality alignments, or subsetting to target regions.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Create and use BAI/CSI indices for BAM/CRAM files using samtools and pysam. Use when enabling random access to alignment files or fetching specific genomic regions.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Read, write, and convert multiple sequence alignment files using Biopython Bio.AlignIO. Supports Clustal, PHYLIP, Stockholm, FASTA, Nexus, and other alignment formats for phylogenetics and conservation analysis. Use when reading, writing, or converting alignment file formats.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Parse and analyze multiple sequence alignments using Biopython. Extract sequences, identify conserved regions, analyze gaps, work with annotations, and manipulate alignment data for downstream analysis. Use when parsing or manipulating multiple sequence alignments.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

GPTomics のスキルをすべて見る

このスキルの問題を報告する