Setup and staging data
Overview
The pipeline can be configured using Nextflow options. We recommend specifying options on the command line (they override other configuration sources). See the pipeline nextflow.config or the options.md page for the full list of options.
Step 1: Pipeline inputs
Main inputs:
-
manifest_plate.tsv: one line per plate (tab-separated) with the following named columns:plate,index_xml,channels,bp_channels,cp_nucl_channel,cp_cell_channel,dc_channels,dc_psfs,mask_channels,scaling_factors. -
manifest_registration.tsv(optional): details how cyclic plates link together. Columns:reference_plate,reference_channel,query_plates,query_channels. -
blacklist.tsv(optional): two-column TSV (no header) withplateandwellto skip.
Step 2: Staging data
Staging converts inputs to .ome.tiff files, one per field, stored as <plate_name>/<row>/<col>/<field>.ome.tiff. Each <plate_name> folder gets a manifest.tsv index used by downstream steps.
Workflow entries:
Outputs include .ome.tiff files organized per plate, <plate_name>/manifest.tsv, optional <plate_name>/acquisition_info.txt and <plate_name>/index.xml or index.json.
Option B: Manual staging
You can provide already-staged .ome.tiff files and a per-plate manifest.tsv with an index of files in the required layout. The pipeline will run from run_pipeline without the stage entry.
Section 1 — Manual staging (required layout & OME axes)
Required layout:
- Files must be organized under:
<publish_root>/<plate_name>/<row>/<col>/<field>.ome.tiff - Example:
images/my_plate/A/1/1.ome.tiff
OME-TIFF requirements:
- Each file is a single-field OME-TIFF containing the image data for that field.
- The pipeline expects the image axes to be ordered as CZYX (Channels, Z, Y, X). In other words, the file should expose channels first, then the Z (slices) dimension, then the Y (rows) dimension, then X (columns). Ensure the OME metadata and internal page order reflect this layout.
- Include channel names and physical pixel size (X/Y and Z) in the OME metadata when possible — these are used for scaling and channel mapping.
How to produce a correct OME-TIFF (example using aicsimageio):
Notes:
- Channel indexing in manifests is 1-based (e.g.
1,2,3), but in python (and the pipeline) its 0-based - You do not need to create the plate manifests, if missing the pipeline will index this structure itself.
Section 2 — Staging from a Phenix or Operetta export
If you have a Revity/PerkinElmer Opera Phenix (or Operetta) export, the pipeline includes tooling to parse the export index and assemble per-field OME-TIFFs with metadata populated.
What the Phenix staging does:
- Parses the Phenix index XML to discover wells, fields, channel order, z-stack sizes and physical pixel sizes.
- Groups raw per-file TIFFs into multi-dimensional OME-TIFF files in the target layout:
<plate_name>/<row>/<col>/<field>.ome.tiff. - Extracts and stores channel names, pixel sizes and the original index for provenance (e.g.
index.xmlsaved into the plate folder). - Creates a copy of
index.xmlin JSON format for easier parsing.
Typical usage (pipeline stage entry — example):
Tips and notes:
- Stage into a separate folder.
- The OME format used can be quite a bit more efficient in terms of storage (1.5-2x) compared to the raw export, and file numbers are reduced substantially enabling usage on most fileystems.
- Validate one well/field first by running the staging entry for a small subset (use
--rn_wells) before full staging. Check how many wells you can calculate and how large the dataset will be. - This can be quite IO heavy, default settings for the executor limit to 40 concurrent jobs, but that could change depending on the cluster profile. You can set
exectutor.queueSizeto control the maximum number of concurrent jobs.