Output files
The output files Cells2Stats produces
The following table lists the files and folders that Cells2Stats outputs. Parquet files are column-based files that efficiently store data. For more information, see the Apache Parquet Documentation.
In the table, {root} is the output directory, which defaults to RUN_DIRECTORY/Cytoprofiling/{timestamp}. {well} is the well folder name, such as WellA1, and {RunName} is the run name from RunParameters.json.
| File | Directory and File Name | Description | Quantity |
|---|---|---|---|
| Spatial Data Object | {root}/SpatialData/{RunName}.zarr.zip | Zarr-based structured object containing all modalities from a run for downstream analysis and visualization. See Spatial Data Object. | One per run |
| CytoCanvas™ Visualization File | {root}/SpatialData/cyto.viz | Manifest that the Element Biosciences CytoCanvas tool opens to load a run. Lists the visualization files and targets. | One per run |
| CytoCanvas Image Index | {root}/SpatialData/{RunName}.zarr-index.bin | Index over the images in the Spatial Data Object, which lets CytoCanvas read images without extracting the zip | One per run |
| CytoCanvas Points | {root}/SpatialData/points-zarr.zip | Polony positions and target assignments for display in CytoCanvas | One per run |
| CytoCanvas Points Index | {root}/SpatialData/{RunName}.points-zarr-index.bin | Index over points-zarr.zip | One per run |
| CytoCanvas Cell Shapes | {root}/SpatialData/cell-shapes-zarr.zip | Cell boundary shapes for display in CytoCanvas | One per run |
| CytoCanvas Cell Shapes Index | {root}/SpatialData/{RunName}.cell-shapes-zarr-index.bin | Index over cell-shapes-zarr.zip | One per run |
| CytoCanvas Nuclear Shapes | {root}/SpatialData/nuclear-shapes-zarr.zip | Nuclear boundary shapes for display in CytoCanvas | One per run |
| CytoCanvas Nuclear Shapes Index | {root}/SpatialData/{RunName}.nuclear-shapes-zarr-index.bin | Index over nuclear-shapes-zarr.zip | One per run |
| Run Stats | {root}/RunStats.json | JSON file that records run, well, batch, and target statistics for every assay in the run. See RunStats.json. | One per run |
| Raw Cell Statistics, Parquet | {root}/RawCellStats.parquet | Parquet file that reports per-cell position, size, morphology, target counts, and intensity values. See RawCellStats.parquet. | One per run |
| Average Normalized Well Statistics | {root}/AverageNormWellStats.csv | Filtered and average metrics for each well in the run | One per run |
| Versions, JSON | {root}/Versions.json | File that reports the version number for CSV output files and bundled software programs. See Versions. | One per run |
| QC Report, HTML | {root}/qc_report.html | Interactive HTML quality control (QC) report for the run. See QC report. | One per run |
| Run Manifest, CSV | {root}/RunManifest.csv | Run manifest for the Cells2Stats execution | One per run |
| Run Manifest, JSON | {root}/RunManifest.json | JSON file that is reserved for Element processes | One per run |
| Run Parameters | {root}/RunParameters.json | JSON file that records information about the run configuration | One per run |
| Panel | {root}/Panel.json | JSON file that records information about the targets for the run | One per run |
| Cell Segmentation Mask | {root}/CellSegmentation/{well}/{tile}_Cell.tif or {tile}_Cell.zarr | Cell segmentation masks for a well, where the Cell ID is the value for a pixel in a cell. The format follows the run, as described in Segmentation mask formats. | One per tile per well |
| Nuclear Segmentation Mask | {root}/CellSegmentation/{well}/{tile}_Nuclear.tif or {tile}_Nuclear.zarr | Nuclear segmentation masks for a well, where 1 is the value for a pixel in a nucleus. The format follows the run, as described in Segmentation mask formats. | One per tile per well |
| Corrected Projection Image | {root}/Projection/{well}/{batch}_{tile}_{target}.tif | Corrected projection images of imaging targets. Present only when --process-imaging-targets is used. | One per target per tile |
| Log Files | {root}/Logs/ | Cells2Stats.log, manifest error files such as RunManifestErrors.json, and logs from bundled tools | One folder per run |
| Barcodes | {root}/Wells/{well}/{batch}/{tile}_barcodes.parquet | (Barcoding) Parquet files that provide barcoding information for each polony in a tile. See Barcoding output files. | One per tile per batch per well |
| Guide RNA Reads | {root}/Wells/{well}/{batch}/{tile}_reads.parquet | (Guide RNA) Parquet files that provide alignment and cell assignment information for each polony in a tile. See Guide RNA output files. | One per tile per batch per well |
| Target Counts, JSON | {root}/SpecializedTargetedCounts.json | (Guide RNA) JSON file that records read counts per spacer target across the run | One per run |
| Target Cell Assignment Manifest, CSV | {root}/TargetCellAssignmentManifest.csv | (Guide RNA) Copy of the target cell assignment manifest used in this run | One per run |
| Target Cell Assignment Manifest, JSON | {root}/TargetCellAssignmentManifest.json | (Guide RNA) JSON file that is reserved for Element processes | One per run |
| Guide RNA Alignments, BAM | {root}/Wells/{well}/{batch}/{well}_{targetSite}_alignments.bam | (Guide RNA) Concatenated alignments for a target site. Present only when --generate-specialized-targeted-bams is used. | One per target site per batch per well |
| 3′ Transcriptome Reads | {root}/Wells/{well}/{batch}/{tile}_rawreads.parquet | (3′ Transcriptome) Parquet files that provide position and cell assignment information for each polony in a tile. See 3′ Transcriptome output files. | One per tile per batch per well |
Key output files
Most downstream analyses start from three files:
- Spatial Data Object: All modalities from the run in a single structured object.
RunStats.json: Run-level and well-level quality metrics for each assay.RawCellStats.parquet: One row per cell, with position, size, and per-assay measurements.
Spatial Data Object
SpatialData/{RunName}.zarr.zip is a Zarr-based structured object that contains all modalities from the run, including images, segmentation labels, cell and nuclear shapes, polony points, and a per-cell table. It is the primary output for downstream analysis and visualization. The CytoCanvas visualization files are written next to it in SpatialData/.
For the structure and contents of the Spatial Data Object, see Spatial Data Object.
RunStats.json
RunStats.json reports statistics at the run, well, batch, and target levels. Each assay writes its statistics to a dedicated top-level section:
| Top-level section | Assay |
|---|---|
CytoStats | General, Cell Paint, and Barcoding |
ImagingTargetsStats | Cell Paint and Protein |
DemuxStats | Barcoding |
SpecializedTargetedStats | Guide RNA |
ThreePrimeUntargetedStats | 3′ Transcriptome |
A section for an assay that is not in the run is present but contains no batches. A metric that cannot be calculated is reported as -999.
General
The following fields describe the run and cell population, independent of assay:
| Field | Location | Description | Data Type |
|---|---|---|---|
AnalysisID | Top level | Unique ID for the analysis | String |
AnalysisVersion | Top level | Version of the analysis software | String |
FileVersion | Top level | Version of the file format | String |
FlowCellID | Top level | ID of the flow cell that is used | String |
RunID | Top level | Unique ID for the run | String |
RunName | Top level | Name of the run | String |
CellCount | CytoStats, CytoStats.Wells | Number of segmented cells in the run or well | Integer |
Wells | CytoStats | List of well-specific statistics | Array of Objects |
WellLocation | CytoStats.Wells | Location of the well, for example A1 | String |
MedianCellDiameter | CytoStats.Wells | Median diameter of a cell after cell segmentation, in micrometers | Float |
Cell Paint
Cell Paint contributes segmentation quality metrics to CytoStats and intensity metrics to ImagingTargetsStats.
The following segmentation metrics are reported at the run level of CytoStats and for each entry in CytoStats.Wells:
| Field | Description | Data Type |
|---|---|---|
PercentConfluency | Percentage of the analyzed well area covered by segmented cells | Float |
PercentNucleatedCells | Percentage of cells that contain a segmented nucleus | Float |
PercentVisualConfluency | Percentage of the analyzed well area that is foreground in the primary cell boundary image, by Otsu thresholding | Float |
CellBoundaryPPV | Positive predictive value of the cell masks: the share of bright pixels in the cell boundary target image that fall inside a cell | Float |
CellBoundaryBalancedAccuracy | Balanced accuracy of the cell masks at separating cell boundary target signal from background | Float |
SupplementaryCellBoundaryPPV | Positive predictive value of the cell masks for the supplementary cell boundary target | Float |
SupplementaryCellBoundaryBalancedAccuracy | Balanced accuracy of the cell masks for the supplementary cell boundary target | Float |
NuclearPPV | Positive predictive value of the nuclear masks for the nuclear target | Float |
NuclearBalancedAccuracy | Balanced accuracy of the nuclear masks for the nuclear target | Float |
The segmentation targets are set in the panel. A metric for a segmentation target that the panel does not define is reported as -999.
ImagingTargetsStats reports intensity metrics for each Cell Paint target with the following structure:
ImagingTargetsStats
└── Batches[]
├── BatchName
└── Wells[]
├── WellLocation
└── ImagingTargets[]
├── Target
├── CellSegmentationTarget
└── Metrics[]
├── MetricName
└── MetricValue
MetricName | Description |
|---|---|
MeanIntensity | Mean intensity of the target inside cells |
NuclearMeanIntensity | Mean intensity of the target inside nuclei |
ExtracellularMeanIntensity | Mean intensity of the target outside cells |
MeanIntensityAboveThreshold | Mean intensity of the pixels above the intensity threshold |
NuclearRatio | Share of the above-threshold area of cells that lies within the nucleus |
Per-batch background targets, Bkg_RED and Bkg_GRN, and per-target background targets, Bkg_{target}, appear as imaging targets when they are quantified. For details, see Intensity quantification columns.
Protein
ProteinIF imaging targets are reported in ImagingTargetsStats with the same structure and metrics as Cell Paint targets. See Cell Paint.
Protein contributes no other fields to RunStats.json. Barcoded protein targets are reported under Barcoding.
Guide RNA
Guide RNA statistics are reported in SpecializedTargetedStats with the following structure:
SpecializedTargetedStats
└── Batches[]
├── BatchName
├── PolonyAssignmentStats
│ ├── PercentAssigned, PercentMismatch, PercentPerfect
│ └── TargetSitePolonyAssignmentStats[]
│ ├── TargetSiteName, IsControl
│ ├── PercentAssigned, PercentMismatch, PercentPerfect, PercentTrimmed
│ └── UnassignedSequences[]
│ ├── Sequence
│ └── Count
├── TargetSites[]
│ ├── TargetSiteName, IsControl
│ └── CellAssignmentStats
└── Wells[]
├── WellLocation
├── PolonyAssignmentStats
└── TargetSites[]
| Field | Description | Data Type |
|---|---|---|
PercentAssigned | Percentage of polonies that are assigned to a target | Float |
PercentMismatch | Percentage of assigned polonies with at least one mismatch to the target sequence | Float |
PercentPerfect | Percentage of assigned polonies that match the target sequence exactly | Float |
PercentTrimmed | Percentage of polonies at the target site that are trimmed | Float |
TargetSiteName | Name of the target site as provided in Panel.json | String |
IsControl | Whether the target site is a control site. Control sites receive polony assignment only. | Boolean |
UnassignedSequences | Most frequent sequences detected at the target site that do not match any manifest entry | Array of Objects |
CellAssignmentStats | Cell assignment metrics for the target site. See Target cell assignment metrics. | Object |
3′ Transcriptome
3′ Transcriptome statistics are reported in ThreePrimeUntargetedStats.ReadStats with the following structure:
ThreePrimeUntargetedStats
└── ReadStats
├── NumPoloniesBeforeTrimming
└── Wells[]
├── WellLocation
├── NumPoloniesBeforeTrimming
└── Batches[]
├── BatchName
├── NumPoloniesBeforeTrimming
├── NumPoloniesPerCellBeforeTrimming
├── NumPoloniesPerMM2BeforeTrimming
└── ExtraCellularRatioBeforeTrimming
| Field | Description | Data Type |
|---|---|---|
NumPoloniesBeforeTrimming | Number of pass-filter polonies in the run, well, or batch, counted before trimming | Integer |
NumPoloniesPerCellBeforeTrimming | Mean number of pass-filter polonies per cell | Float |
NumPoloniesPerMM2BeforeTrimming | Number of pass-filter polonies per mm² of cell area | Float |
ExtraCellularRatioBeforeTrimming | Ratio of extracellular to intracellular polony density | Float |
Barcoding
Barcoding contributes demultiplexing statistics to DemuxStats and cell-level count statistics to CytoStats.
DemuxStats has the following structure:
DemuxStats
├── NumPolonies, PercentAssignedReads, PercentMismatch
└── Batches[]
├── BatchName, NumPolonies, PercentAssignedReads, PercentMismatch
├── Targets[]
│ └── TargetName, ExpectedSequence, NumPolonies, PercentMismatch
├── Wells[]
│ └── WellLocation, NumPolonies, PercentAssignedReads, PercentMismatch
└── UnassignedSequences[]
└── Count, Sequence
| Field | Description | Data Type |
|---|---|---|
NumPolonies | Number of polonies detected in the run, batch, or well, or assigned to the target | Integer |
PercentAssignedReads | Percentage of reads that are assigned to targets | Float |
PercentMismatch | Percentage of assigned reads with at least one base pair mismatch | Float |
TargetName | Name of the barcoding target | String |
ExpectedSequence | Expected barcode sequence for the target | String |
Sequence | Barcode sequence of unassigned reads | String |
Count | Number of times the unassigned sequence appears | Integer |
CytoStats reports the following barcoding fields:
| Field | Location | Description | Data Type |
|---|---|---|---|
AverageAssignedCountsPerMM2 | CytoStats | Assigned counts per mm² of cell area for all barcoding targets, averaged across wells | Float |
MeanAssignedBarcodingCountPerCell | CytoStats.Wells | Mean number of polonies assigned to a barcoding target per cell | Float |
AssignedCountsPerMM2 | CytoStats.Wells, CytoStats.Wells.Batches | Assigned counts per mm² of cell area for all barcoding targets | Float |
Batches | CytoStats.Wells | List of barcoding batch statistics for the well | Array of Objects |
BatchName | CytoStats.Wells.Batches | Name of the batch | String |
MeanAssignedCountPerCell | CytoStats.Wells.Batches, target lists | Mean number of assigned polonies per cell | Float |
ExtraCellularRatio | CytoStats.Wells.Batches | Ratio of extracellular to intracellular assigned target density | Float |
PercentCellularAssigned | CytoStats.Wells.Batches | Percentage of assigned reads that are inside cells | Float |
ControlTargets | CytoStats.Wells.Batches | Statistics for quality control targets, with TargetName, ControlType, MeanAssignedCountPerCell, and AssignedCountPerMM2 | Array of Objects |
AssignedCountPerMM2 | Target lists | Assigned counts per mm² of cell area for the target | Float |
ManifestLabel | AntibodyTargets | Label of the custom protein in the manifest | String |
NuclearFraction | AntibodyTargets | Fraction of the cellular assigned reads of the target that are in the nucleus | Float |
RawCellStats.parquet
RawCellStats.parquet contains one row per cell. Assay-specific columns are named {target}{suffix}.{batch} or {column}.{targetSite}.{batch}, so a column name identifies its batch. The Parquet file metadata records FileVersion and AnalysisID.
Cells2Stats also writes {root}/RawCellStats.csv, which contains the same information in CSV format.
General
The following columns are present for every run:
| Column | Description |
|---|---|
Cell | Cell ID |
Well | Well location, for example A1 |
WellLabel | Well label from the run manifest |
Tile | Tile that contains the cell |
X, Y | Cell position in the tile, in pixels |
Xum, Yum | Cell position in the tile, in micrometers |
WellX, WellY | Cell position in the well, in pixels |
WellXum, WellYum | Cell position in the well, in micrometers |
Area | Cell area, in pixels |
AreaUm | Cell area, in µm² |
NuclearArea | Nuclear area, in pixels |
NuclearAreaUm | Nuclear area, in µm² |
Cell Paint
Cell Paint targets contribute intensity quantification columns and, unless --skip-cellprofiler is used, CellProfiler morphology columns.
Intensity quantification columns
For each imaging target in each batch, RawCellStats.parquet reports intensity quantification columns named {target}{suffix}.{batch}. The suffix identifies the compartment and the measurement:
| Suffix | Measurement |
|---|---|
| None | Mean intensity across the whole cell |
_Nuclear | Mean intensity in the nuclear compartment |
_Cytoplasmic | Mean intensity in the cytoplasmic compartment |
_FractionAboveThreshold | Fraction of whole-cell pixels above the intensity threshold |
_FractionAboveThreshold_Nuclear | Fraction of nuclear pixels above the intensity threshold |
_FractionAboveThreshold_Cytoplasmic | Fraction of cytoplasmic pixels above the intensity threshold |
_MeanIntensityOfFractionAboveThreshold | Mean intensity of the whole-cell pixels above the threshold |
_MeanIntensityOfFractionAboveThreshold_Nuclear | Mean intensity of the nuclear pixels above the threshold |
_MeanIntensityOfFractionAboveThreshold_Cytoplasmic | Mean intensity of the cytoplasmic pixels above the threshold |
_NuclearRatio | Share of the above-threshold area of the cell that lies within the nucleus |
_NuclearRatio is empty for a cell with no above-threshold pixels, because the ratio is undefined.
Per-batch background intensity is quantified as the synthetic targets Bkg_RED and Bkg_GRN. To omit them, run analyze with --disable-per-batch-background. Per-target background is reported as Bkg_{target} when RecipeValues.SavePerTargetBkgImages is true in RunParameters.json.
CellProfiler morphology columns
For each imaging target other than background targets, RawCellStats.parquet reports metrics from the following CellProfiler modules:
MeasureObjectSizeShapeMeasureGranularityMeasureObjectIntensityMeasureObjectIntensityDistributionMeasureTexture
Certain metrics from these modules are not reported. For example, Zernike metrics and Z-axis metrics are not included.
For more information on these metrics, see the measurement information in the CellProfiler Manuals.
Protein
ProteinIF imaging targets contribute the same intensity quantification and CellProfiler morphology columns as Cell Paint targets, named with the ProteinIF target and batch. See Cell Paint.
Protein contributes no other columns to RawCellStats.parquet. Barcoded protein targets are reported under Barcoding.
Guide RNA
For each target site in each Guide RNA batch, RawCellStats.parquet reports the following columns:
| Column | Description |
|---|---|
MostAbundantTarget.{targetSite}.{batch} | Target with the most assigned polonies in the cell. NA for control target sites. |
MostAbundantTargetCount.{targetSite}.{batch} | Number of polonies in the cell assigned to the most abundant target |
TotalCount.{targetSite}.{batch} | Total number of polonies in the cell assigned to any target at the target site |
Confidence.{targetSite}.{batch} | Assignment confidence, calculated as MostAbundantTargetCount / (TotalCount + 1). Empty for control target sites. |
Gene.{targetSite}.{batch} | Gene of the most abundant target, from the target cell assignment manifest |
ControlType.{targetSite}.{batch} | Control type of the most abundant target, from the target cell assignment manifest |
For how these values determine pure, mixed, and unassigned cells, see Cell assignment logic.
3′ Transcriptome
3′ Transcriptome contributes no columns to RawCellStats.parquet. Per-polony data is available in the _rawreads.parquet files and the Spatial Data Object.
Barcoding
For each target in each barcoding batch, RawCellStats.parquet reports the following columns:
| Column | Description |
|---|---|
{target}.{batch} | Number of polonies in the cell assigned to the target |
{target}_Nuclear.{batch} | Number of polonies in the nucleus assigned to the target |
Assay-specific output files
The following sections describe output files that Cells2Stats writes only when the run includes a particular assay.
Cell Paint
When --process-imaging-targets is used, Cells2Stats writes corrected projection images of the imaging targets to {root}/Projection/{well}/{batch}_{tile}_{target}.tif and uses them for the rest of the analysis. The run directory Projection/ folder is not modified.
Cell Paint has no other assay-specific output files. Cell Paint results are reported in the key output files and the QC report.
Protein
ProteinIF imaging targets are included in the corrected projection images described in Cell Paint. Protein has no other assay-specific output files.
Guide RNA
When target cell assignment is enabled for at least one target site in a run, Cells2Stats populates SpecializedTargetedStats in RunStats.json and generates the following additional output files. For more information on how cell assignment works, see Cell assignment logic.
Cells are classified as pure (single spacer detected), mixed (multiple spacers, one dominant), or unassigned based on a confidence score. For a full explanation of these categories and how cell assignment is calculated, see Pure cells vs. mixed cells.
Key target cell assignment output files
| File | What to use it for |
|---|---|
SpecializedTargetedCounts.json | See total reads detected per spacer. High dropout (many spacers with zero reads) may indicate a manifest or TargetMask issue. Control targets marked with IsControl receive polony assignment only and do not appear as cell-assigned guides. |
TargetCellAssignmentManifest.csv | Confirm which sequences and settings were applied. Compare against your source library file to catch discrepancies. |
Panel.json | Contains the TargetMask that was applied per target site. Check here if assignment rates are unexpectedly low. |
RunStats.json | Contains all target cell assignment-specific quality metrics. See Target cell assignment metrics. |
RawCellStats.parquet | Per-cell assignment and counts at each target site. See Guide RNA columns. |
Wells/{well}/{batch}/{tile}_reads.parquet | Per-polony alignment and cell assignment. See Guide RNA reads files. |
Wells/{well}/{batch}/{well}_{targetSite}_alignments.bam | Alignments for a target site, for inspection in standard BAM tools. Present only when --generate-specialized-targeted-bams is used. |
Guide RNA reads files
Each {tile}_reads.parquet file contains one row per polony, with the following columns:
| Column | Description |
|---|---|
ReadID | Read identifier. See Read identifiers. |
PolonyIndex | Polony index within the tile |
X, Y | Polony position in the tile, in pixels |
Xum, Yum, Zum | Polony position, in micrometers |
WellX, WellY, WellXum, WellYum | Polony position in the well, in pixels and micrometers |
TargetName | Target that the polony is assigned to |
Cell | ID of the cell that contains the polony |
IsNuclear | Whether the polony is inside the nucleus |
MapQ | Mapping quality of the alignment |
AlignmentLength | Length of the alignment |
NM | Edit distance between the read and the target |
IsSoftclipped | Whether the alignment is soft-clipped |
Target cell assignment metrics in RunStats.json
The following fields are reported in each CellAssignmentStats object in SpecializedTargetedStats, at the batch and well levels. UnassignedSequences is reported in each TargetSitePolonyAssignmentStats object.
| Field | Description | What to watch for |
|---|---|---|
PercentAssignedPureCells | Cells assigned to a single dominant spacer (confidence >0.5, meets minimum read count) | Primary metric — aim as high as possible for your MOI |
PercentAssignedMixedCells | Cells with multiple spacers detected, but one is dominant (confidence >0.5) | Expected to increase with higher MOI; still valid data |
PercentUnassignedMixedCells | Cells with multiple spacers; no spacer exceeds 50% confidence | High values suggest MOI may be too high for reliable single-guide assignment |
PercentUnassignedLowCountCells | Spacer was matched but read count is below the minimum threshold | High values suggest low expression or insufficient sequencing depth |
PercentTargetDropout | Percentage of spacers in the manifest not assigned to any cell | High dropout may indicate library representation problems |
AssignedCountsPerMM2 | Assigned counts per mm² of cell area at the target site | Indicator of overall guide detection density |
MeanAssignedCountPerCell | Mean number of assigned polonies per cell at the target site | Indicator of per-cell sequencing depth at target site |
MedianAbundantTargetCount | Median read count of dominant spacer in assigned cells | Indicator of per-cell sequencing depth at target site |
MeanUniqueTargetsPerCell | Mean number of unique spacers detected per cell | Values substantially above 1 suggest high MOI |
ExtraCellularRatio | Ratio of extracellular to intracellular assigned polony density | High values suggest signal outside cells or segmentation issues |
UnassignedSequences | List of sequences detected at target site but not matching any manifest entry | Primary troubleshooting resource — see Using UnassignedSequences for troubleshooting |
Using UnassignedSequences for troubleshooting
The UnassignedSequences field lists actual nucleotide sequences of reads detected at the target locus that did not match any spacer in the manifest. Inspect this field when assignment rates are low.
| What you see | Likely cause | Resolution |
|---|---|---|
| Sequences that look like your spacers but reversed | Orientation error in manifest | Re-enter spacers in 5' to 3' direction |
| Spacer-like sequences of a different length | TargetMask or sequence length mismatch | Confirm the Y cycle count in TargetMask equals spacer length |
| Recognizable spacers from your library | Spacers missing from manifest | Add missing entries to [TARGET INFORMATION] |
| Unrecognizable sequences | Off-target reads or artifacts | Contact Element Technical Support |
For more information on assignment thresholds and additional troubleshooting, see Cell assignment logic.
3′ Transcriptome
For each 3′ Transcriptome batch, Cells2Stats writes {root}/Wells/{well}/{batch}/{tile}_rawreads.parquet. Each file contains one row per polony, with the following columns:
| Column | Description |
|---|---|
ReadID | Read identifier. See Read identifiers. |
PolonyIndex | Polony index within the tile |
X, Y | Polony position in the tile, in pixels |
Xum, Yum, Zum | Polony position, in micrometers |
WellX, WellY, WellXum, WellYum | Polony position in the well, in pixels and micrometers |
Cell | ID of the cell that contains the polony |
IsNuclear | Whether the polony is inside the nucleus |
Barcoding
For each barcoding batch, Cells2Stats writes {root}/Wells/{well}/{batch}/{tile}_barcodes.parquet. Each file contains one row per polony, with the following columns:
| Column | Description |
|---|---|
ReadID | Read identifier. See Read identifiers. |
PolonyIndex | Polony index within the tile |
X, Y | Polony position in the tile, in pixels |
Xum, Yum, Zum | Polony position, in micrometers |
WellX, WellY, WellXum, WellYum | Polony position in the well, in pixels and micrometers |
BarcodeIndex | Index of the barcode assigned to the polony |
TargetName | Target that the polony is assigned to |
Cell | ID of the cell that contains the polony |
IsNuclear | Whether the polony is inside the nucleus |
QC report
Cells2Stats generates qc_report.html, an interactive HTML quality control report for the run, in the root of the output directory. The report summarizes run-level and well-level quality, per-target intensity and segmentation metrics, and detected spatial artifacts, and includes a flow cell summary image. The report includes a tab for each assay in the run.
Versions
The Versions.json reports the version number for CSV output files and bundled software programs. The following table describes the fields:
| Field | Description | Data Type |
|---|---|---|
FileVersion | Overall version of the file | String |
FileVersions | Versions of individual files in the dataset | Object |
AverageNormWellStats.csv | Version of AverageNormWellStats.csv file | String |
RawCellStats.csv | Version of RawCellStats.csv file | String |
ProgramVersions | Versions of programs that are used in the analysis | Object |
CellProfiler | Version of the CellProfiler program | String |
Segmentation mask formats
Cells2Stats copies segmentation masks from the run directory without converting them, so the mask format follows the AVITI24™ software version that produced the run:
| AVITI OS version | Cell mask | Nuclear mask |
|---|---|---|
| 4.1.0 and later | {tile}_Cell.zarr, Zarr v3, uint32 | {tile}_Nuclear.zarr, Zarr v3, uint8 |
| Earlier than 4.1.0 | {tile}_Cell.tif | {tile}_Nuclear.tif |
Cells2Stats reads both formats, so a run in either format analyzes without additional configuration. For the input-side detail, see Segmentation mask formats. Downstream tools that read mask files directly must handle whichever format the run carries.
A tool that reads only TIFF masks fails on a run produced by AVITI OS 4.1.0 or later. CellProfiler requires uint16 TIFF input, so a Zarr cell mask must be chunked and converted before you use it for re-segmentation. For the full procedure, see Evaluating and applying alternate segmentation models.
Read identifiers
Cell screening read identifiers carry a trailing polony index, a 7-digit integer that resets for each z-tile. In the following example, 0002538 is the polony index:
@…:0:B01:0002538
Other files
Some files are copied from the run directory, such as RunManifest.json, RunParameters.json, Panel.json, cell segmentation masks, and nuclear segmentation masks. For more information on these files, see Cell Screening Run Output Files.