Compensation removes fluorophore spillover on conventional cytometers (a linear matrix subtraction); spectral cytometers instead solve an overdetermined unmixing of the full emission spectrum, with autofluorescence modeled as an extra signature. Transformation (logicle/biexponential for fluorescence, arcsinh for mass) then stabilizes variance so populations separate. The key expert point this skill encodes: neither compensation nor unmixing removes spreading error - the Poisson-driven widening of negative populations - which is fixed at panel design, not downstream. It also covers the compensate-then-transform ordering, which cannot be swapped, and the arcsinh cofactor decision.
# R/Bioconductor
BiocManager::install(c('flowCore', 'flowStats', 'flowWorkspace', 'CATALYST'))
# Optional per-channel cofactor optimization
BiocManager::install('flowVS')
Tell your AI agent what you want to do: - "Apply the recorded spillover matrix and logicle-transform my fluorescence channels" - "Estimate a compensation matrix from my single-stain controls" - "Arcsinh-transform my CyTOF data with the right cofactor" - "My data is from a spectral cytometer - unmix it rather than compensate"
"These FACS files have a $SPILLOVER keyword from the cytometer. Apply it, then estimate and apply a logicle transform on the fluorescent channels, and show me a before/after CD3 vs CD4 plot." "Build a spillover matrix from my single-stained controls and unstained tube - my controls are beads, so flag if any are dimmer than the experimental sample."
"Arcsinh-transform this CyTOF data with cofactor 5, then check whether my dimmest marker is being compressed - if so, suggest a per-channel cofactor." "This is high-parameter fluorescence going into FlowSOM - what cofactor or logicle settings should I use, and why not cofactor 5?"
"Explain whether I should compensate or unmix this Aurora spectral data, and what the unstained control is for." "My dim marker sits in a channel that catches spillover from a bright lineage marker - is this fixable by compensation, or a panel-design problem?"
estimateLogicle on compensated data so the linearization width matches the real negative spread.