By addressing the limit of measurable fluorescent parameters due to instrumentation and spectral overlap, mass cytometry (CyTOF) combines heavy metal spectrometry to allow examination of up to (theoretically) 100 parameters at the single cell level. While spectral overlap is significantly less pronounced in CyTOF than flow cytometry, spillover due to detection sensitivity, isotopic impurities, and oxide formation can impede data interpretability. We designed CATALYST (Cytometry dATa anALYSis Tools) to provide tools for (pre)processing and analysis of cytometry data, including compensation and in particular, an improved implementation of the single-cell deconvolution algorithm.
CATALYST 1.2.0
assignPrelim
: Assignment of preliminary IDsestCutoffs
: Estimation of separation cutoffsapplyCutoffs
: Applying deconvolution parametersoutFCS
: Output population-wise FCS filesplotYields
: Selecting barcode separation cutoffsplotEvents
: Normalized intensitiesplotMahal
: All barcode biaxial plotraw_data
is a flowSet
with 3 experiments, each containing 2’500 raw measurements with a variation of signal over time. Samples were mixed with DVS beads capture by mass channels 140, 151, 153, 165 and 175.sample_ff
which follows a 6-choose-3 barcoding scheme where mass channels 102, 104, 105, 106, 108, and 110 were used for labeling such that each of the 20 individual barcodes are positive for exactly 3 out of the 6 barcode channels. Accompanying this, sample_key
contains a binary code of length 6 for each sample, e.g. 111000, as its unique identifier.cells
, the package contains 36 single-antibody stained controls in ss_exp
where beads were stained with antibodies captured by mass channels 139, 141 through 156, and 158 through 176, respectively, and pooled together. Note that, to decrease running time, we downsampled to a total of 10’000 events. Lastly, isotope_list
contains a named list of isotopic compositions for all elements within 75 through 209 u corresponding to the CyTOF mass range at the time of writing (1).CATALYST provides an implementation of bead-based normalization as described by Finck et al. (2). Here, identification of bead-singlets (used for normalization), as well as of bead-bead and cell-bead doublets (to be removed) is automated as follows:
concatFCS
: Concatination of FCS filesMultiple flowFrame
s or FCS files can be concatenated via concatFCS
, which takes either a flowSet
, a list of flowFrame
s, a character specifying the location of the FCS files to be concatinated, or a vector of FCS file names as input. If out_path=NULL
(the default), the function will return a single flowFrame
containing the measurement data of all files. Otherwise, an FCS 3.0 standard file of the concatenated data will be written to the specified location.
library(CATALYST)
data(raw_data)
ff <- concatFCS(raw_data)
normCytof
: Normalization using bead standardsSince bead gating is automated here, normalization comes down to a single function that takes a flowFrame
as input and only requires specification of the beads
to be used for normalization. Valid options are:
"dvs"
for bead masses 140, 151, 153, 165, 175"beta"
for bead masses 139, 141, 159, 169, 175By default, we apply a \(median\;\pm5\;mad\) rule to remove low- and high-signal events from the bead population used for estimating normalization factors. The extent to which bead populations are trimmed can be adjusted via trim
. The population will become increasingly narrow and bead-bead doublets will be exluded as the trim
value decreases. Notably, slight over-trimming will not affect normalization. It is therefore recommended to choose a trim
value that is small enough to assure removal of doublets at the cost of a small bead population to normalize to.
normCytof(x=ff, y="dvs", k=300)
## Identifying beads...
## Computing normalization factors...