First distinguish a matrix from processed event values
The FCS 3.1 standard defines $SPILLOVER to store spillover information; older/export-specific keyword conventions also exist. A matrix describes channel mixing, while event values may have a separate processing history. See the FCS 3.1 standard paper.
| What you have | What to check next |
|---|---|
| A recognized file matrix | Inspect each file's source, channel match and applied status. A recognized matrix is not proof that it is appropriate. |
| No recognized matrix; values are raw | Retrieve the acquisition matrix or suitable single-stain controls. |
| No recognized matrix; values may already be corrected | Verify the acquisition/export settings before applying another matrix. |
| Unmatched or invalid matrix | Resolve channel naming, dimensions and numerical validity; do not treat the global On switch as success for every file. |
Open Compensation from the sample toolbar or workflow. The default Matrix in sample files tab uses each file's own matrix rather than a matrix copied from the focused sample. Check the per-file rows, not just the global mode. Applying a correction again to already corrected values can distort the measurements.
Use embedded matrices does not recover missing metadata or calculate a new matrix. Preserve the original files and document the processing used for the analysis.
Import compensation controls directly in their own tab
Controls are a separate source of correction information, not the experimental samples you want to compare. In FlowApp, they do not need to be imported into the Samples list first.
- Load the experimental samples, then open Compensation → Compensation controls.
- Choose FCS files or a folder of controls. Only supported control files are read; do not substitute an ordinary multicolor experimental sample because it has the right filename.
- Assign each file as Single stain, Unstained or Ignore. For each single stain, choose its actual primary detector/channel.
- Check coverage of the fluorochromes and detectors being corrected. Do not assign every control to the first channel or assume that a calculated matrix proves all required controls exist.
- Click Calculate, inspect the matrix and warnings, then review the application scope below before applying.

The current builder estimates positive/negative populations and spillover slopes from the assigned controls. This is not a promise that control selection, reagent matching or population identification is automatically correct.
Review the controls, warnings and affected samples
For conventional compensation, use the matching fluorochrome and acquisition settings, sufficiently bright unsaturated positives, and appropriate negative populations. A bead positive and an unrelated cellular negative are not interchangeable. FMO controls answer a gating question; they are not a substitute for a complete set of single-stain compensation controls. See the flow-core guidance on compensation controls.
- Verify each target channel and that the expected control files cover the correction panel.
- Review warnings about insufficient positive/negative events, unusual coefficients or matrix inversion failure. Successful calculation alone is not a validity certificate.
- Inspect relevant channel pairs after correction. Compensated values can be negative; a symmetric log-like display can make them visible without changing the matrix.
- Do not try to erase spillover spreading by repeatedly adjusting coefficients. Compensation corrects average spillover, not the increased spread described in the flow-core guidance.
Current FlowApp scope: Apply processes the ready analysis samples in the current experiment, not only the focused sample or currently selected group. Channel matching is checked per file. Verify every resulting status; incompatible channels must not be assumed to have been corrected.
Keep samples requiring different panels or correction settings separate, and preserve the original data. The controls tab does not yet offer a separate group-selection dialog for applying the calculated matrix.
Conventional compensation and spectral unmixing are not interchangeable workflows. This importer is not a full spectral-reference/unmixing wizard. See the immunological flow-cytometry guidelines for the distinction.
No matrix and no controls: keep the limitation visible
First request the original export, acquisition configuration or controls from the instrument operator or data owner. “Not detected” can reflect an export convention or processed data, not simply an omitted laboratory step.
FlowApp does not provide a validated, control-free reconstruction of a conventional compensation matrix from arbitrary multicolor samples. A visually attractive plot or an AI suggestion is not a verified correction. If the history cannot be recovered, document the uncertainty and avoid presenting affected fluorescence measurements as established results.
Compensation, display transforms and QC solve different problems
Compensation corrects channel mixing. A display transform changes how a numerical range is shown. Acquisition QC flags suspicious measurement patterns. Adjusting a plot scale or accepting QC marks does not calculate compensation or repair unsuitable controls.
After the input and correction history are confirmed, review the population hierarchy and percentage denominators before reporting results.