Particle Tracking: a pipeline architecture for trustworthy imaging.

01 · Phenotypic Discovery

Find meaningful biological responses across large experimental spaces.

High-content experiments generate more images than scientists can examine directly, but scale alone does not produce insight. The analysis must preserve the relationship between perturbations, controls, cells, wells, plates, and batches while turning millions of individual observations into comparable phenotypic profiles.

Fovea Lab supports the full path from image correction and cellular segmentation to feature extraction, representation learning, batch correction, and biological readout. Each result remains connected to the conditions and quality checks that produced it, allowing researchers to distinguish reproducible phenotypes from technical variation and investigate rare responses that would otherwise disappear inside population averages.

02 · Space & Time

Follow biological systems as they form, move, and change.

Volumetric and time-resolved imaging reveals processes that cannot be understood from a single field or endpoint. Cells migrate, tissues reorganize, structures develop, and rare events emerge across large image volumes. Extracting those events requires more than processing individual frames: the analysis must remain consistent across depth, time, scale, and changing image quality.

Fovea Lab brings acquisition context, restoration, segmentation, registration, tracking, and quantitative measurement into one inspectable workflow. Researchers can follow an observation from a rendered volume or trajectory back to the source data and processing decisions that created it, while quality checks expose where depth, motion, density, or signal loss may have changed the reliability of the result.

03 · Tissue & Spatial Biology

Connect cellular organization with molecular and pathological context.

Tissue images contain information at several scales at once: cellular morphology, local neighborhoods, larger anatomical structures, molecular measurements, and clinically meaningful regions. These signals are often processed in separate systems, making it difficult to understand how a final classification, spatial association, or tissue-level measurement was formed.

Fovea Lab structures image processing, registration, object detection, spatial measurement, and model interpretation as one traceable analysis. Imaging and molecular information can remain aligned through each transformation, while provenance, cohort-aware validation, and reviewable outputs help researchers examine whether a finding is consistent across samples, scanners, staining conditions, and experimental sites.

Pipeline architectures, module by module.

  • WHAT IT IS

    Motion as the readout

    Individual molecules are located far below the diffraction limit and followed frame by frame, so the measurement is how they move.

  • WHY IT FAILS

    Bias, not noise

    Fast molecules leave the focal plane sooner, so the trajectories that survive are the slow ones unless that skew is corrected.

  • QUALITY GATE

    No ground truth

    Nothing tells you the true diffusion of a molecule, so the pipeline has to be validated against physics and replication instead.

  • GET HELP WITH

    Diffusion pipelines

    Bring a dataset whose diffusion numbers move when the analysis settings change; localisation precision and linking choices are the first things to measure.

Pipeline backbone — reshapes per modality. Select a module for its sub-steps, tools, and deliverable.

Particle Tracking

High confidence

Ingest

Read high-frame-rate single-molecule camera streams — typically 2,000-50,000 frames at 5-50 ms exposure, written as ND2, OME-TIFF, raw binary or a Micro-Manager sequence — into a chunked, frame-indexed store without loading the movie into memory, and carry the camera calibration (per-pixel offset, gain/sensitivity in e-/ADU, read-noise variance map for sCMOS) through ingest alongside the pixels. The calibration is not an optional extra: localisation precision is quoted in nanometres from a photon count, the photon count is derived from ADU via offset and gain, and a stream ingested without them can never support a defensible precision claim downstream. Chunking must favour whole-frame sequential reads, because every downstream step walks the movie in time order.

Operations

  1. Stream format detection and reader dispatchIdentify the acquisition container (ND2, OME-TIFF, BigTIFF, Micro-Manager multipage TIFF sequence, vendor raw with a sidecar header) and dispatch to a reader that supports lazy, frame-by-frame access rather than whole-array loading.
  2. Frame index constructionBuild a frame-level index (frame number, byte offset or chunk key, per-frame timestamp where the acquisition software recorded one) so any frame can be addressed in constant time and the true frame interval can be reconstructed later.
  3. Axis and ROI validationAssert the stream is a single-plane time series (T,Y,X) and not a mis-labelled Z-stack; record the camera ROI origin and extent, since a cropped ROI is what makes the frame rate achievable and its origin is needed to map localisations back to sensor pixels.
  4. Camera calibration ingestLocate and attach the camera characterisation for the sensor and readout mode used — per-pixel offset (baseline), sensitivity in e-/ADU, and for sCMOS the per-pixel read-noise variance map — from a calibration acquisition or the vendor certificate. Fail closed if absent and the project claims a localisation precision.
  5. Chunked store conversionoptionalWrite the stream as OME-Zarr with a chunk shape spanning whole frames and a modest run of frames (for example 1 x 512 x 512 x 32 frames), so sequential temporal reads hit one chunk per block and random single-frame access stays cheap.
  6. Multi-file series assemblyReassemble acquisitions that the camera or acquisition software split across files at a size ceiling (Micro-Manager rolls over at 4 GB by default) into one logical, gap-free, strictly ordered frame sequence; detect and refuse silent overlaps or missing spans.
  7. Bit-depth and saturation auditRecord the digitiser bit depth and count pixels at full scale per frame; a saturated emitter cannot be fitted and a stream with widespread saturation is not recoverable by any downstream step.
  8. Integrity and provenance manifestEmit a manifest carrying source URIs, checksums, frame count, declared and reconstructed frame interval, ROI, camera identity and calibration provenance for the whole acquisition.

Inputs

  • High-frame-rate single-molecule camera streamND2 · OME-TIFF · BigTIFF · TIFF series · Micro-Manager TIFF sequence · raw binary + header · CZI
  • Camera characterisation (offset, gain/sensitivity, sCMOS variance map)TIFF · NPY · CSV · YAML · vendor certificate PDF
  • Acquisition log or experiment design (fields of view, conditions, laser sequence)CSV · JSON · TXT · XLSX

Outputs

  • Frame-indexed localisation movie in a chunked storeOME-Zarr · OME-TIFF
  • Ingest manifest with frame index, ROI, and camera calibration provenanceJSON · Parquet

QC checks

  • Frame count and ordering integrity — Confirm the reassembled series contains every frame exactly once, in strictly increasing order, with no overlap across the rollover boundaries of a split acquisition.
  • Camera calibration present and plausible — Require offset and sensitivity (and, for sCMOS, a variance map matching the ROI shape); check sensitivity is within an order of magnitude of the vendor specification.
  • Timestamp availability — Record whether per-frame timestamps were recovered. Their absence is not a failure but it removes the ability to verify frame-interval accuracy at the QC stage.
  • Saturation audit — Count pixels at full scale per frame; a stream where saturated pixels coincide with detected emitters cannot yield unbiased photon counts.
  • Sequential read throughput — Measure achieved frames per second on a sequential pass of the written store; a chunk shape chosen against the read pattern shows up here as an order-of-magnitude regression.

Failure modes it guards against

  • Camera offset and gain not captured at ingest — Fail closed at ingest when a precision claim is in scope; require the calibration URI in the manifest and verify the variance map shape against the ROI.
  • Multi-file acquisition silently truncated at the rollover boundary — Reassemble by declared frame index rather than filename sort order; assert the recovered frame count equals the acquisition request before the stream is accepted.
  • Time axis read as a Z axis — Assert a single focal plane and T greater than one; cross-check T against the acquisition request and the timestamp count.
  • ROI origin discarded — Carry roi_origin_px in the manifest and index calibration maps through it; refuse to apply a full-sensor map to a cropped stream without an origin.
  • Chunking chosen for random access — Chunk whole frames by a run of frames in time; benchmark sequential read throughput as a QC metric rather than assuming the default is adequate.
  • Pixel size taken from the objective nominal magnification — Require a measured pixel size from a calibration target or bead grid; treat vendor metadata as a cross-check, not as the source of truth.

Tools (15)

  • Bio-FormatsPRIMARYOSS · GPL-2.0-or-later

    Reference reader for vendor acquisition formats; extracts OME-XML acquisition metadata (exposure, per-plane DeltaT timestamps, pixel size, objective, channel) that the frame index and the later diffusion calibration both depend on.

  • Micro-ManagerPRIMARYOSS · BSD-3-Clause (user interface) + LGPL-2.1 (MMCore); device adapters BSD or LGPL

    Open-source acquisition software that produces a large share of academic SPT streams; writes per-frame metadata including an ElapsedTime-ms stamp per image, which is the only direct evidence of the realised frame interval as opposed to the requested one.

  • Pycro-ManagerPRIMARYOSS · BSD-3-Clause

    Python control and data-access layer over Micro-Manager; streams frames and their metadata out of a running acquisition, allowing ingest and QC to run concurrently with imaging rather than after it.

  • nd2PRIMARYOSS · BSD-3-Clause

    Pure-Python Nikon ND2 reader with lazy dask-backed access; the fast path for Nikon TIRF streams, avoiding the JVM entirely.

  • tifffilePRIMARYLibrary · BSD-3-Clause

    Reads and writes OME-TIFF, BigTIFF and multipage TIFF series with memory-mapped access; handles the Micro-Manager sequence layout and raw-stack ingest.

  • ome-zarr-pyPRIMARYOSS · BSD-2-Clause

    Writes and validates spec-compliant OME-Zarr; the store format for the frame-indexed output and the carrier for acquisition metadata in .zattrs.

  • PicassoPRIMARYOSS · MIT

    SMLM package whose Localize module takes raw camera frames plus an explicit camera configuration (baseline, sensitivity in e-/ADU, quantum efficiency, EM gain) — a working model of what an SPT ingest must capture for photon counts to be meaningful.

  • bioioOSS · BSD-3-Clause

    Plugin-based Python reader presenting ND2, CZI, OME-TIFF and OME-Zarr behind one dimension-labelled, lazily-loaded interface; the successor to AICSImageIO.

  • AICSImageIOOSS · BSD-3-Clause

    Established xarray-backed reader with consistent TCZYX labelling; still the pinned dependency in many existing client pipelines.

  • zarrLibrary · MIT

    Chunked, compressed array storage underneath the OME-Zarr layer; the level at which chunk shape and codec are chosen for a stream that is always read in frame order.

  • daskLibrary · BSD-3-Clause

    Out-of-core and parallel execution over the frame index; lets per-frame QC and localisation run across a stream that does not fit in memory.

  • storm-analysisOSS · Mixed (per-module; see repository)

    Zhuang-lab analysis suite including sCMOS camera calibration utilities that produce the per-pixel offset, gain and variance maps consumed by sCMOS-aware localisation fitters.

  • Acquisition and analysis environment for localisation microscopy; reads and writes its own streaming formats and carries camera noise models through to fitting.

  • OMEROOSS · AGPL-3.0

    Institutional store and provenance layer for the raw streams and their derived artefacts; useful where the client already runs it and requires access-controlled retention.

  • napariOSS · BSD-3-Clause

    Frame-accurate visual inspection of the ingested stream — stepping through the first and last hundred frames is the fastest way to catch a mis-assembled series or a dead sensor region before any compute is spent.

Metadata captured

FieldTypeExampleStandard
pipeline_run_idstringspt-ingest-2026-08-31-fov012
software_versionsobject{'nd2': '0.10.1', 'tifffile': '2024.9.20', 'ome_zarr': '0.9.0', 'python': '3.11', 'container': 'sha256:abc123'}REMBI
input_dataset_uriuris3://client-study/raw/spt/cond_A/fov012.nd2
output_dataset_uriuris3://client-study/zarr/spt/cond_A/fov012.zarrOME-NGFF
n_framesint (frame)20000OME-XML
frame_interval_declared_sfloat (second)0.0101OME-XML
frame_timestamps_sarray (second)0.0, 0.0101, 0.0202, 0.0303OME-XML
exposure_msfloat (millisecond)10.0OME-XML
pixel_size_nmfloat (nanometer)108.0OME-XML
camera_modelstringHamamatsu ORCA-Fusion BT (sCMOS)4DN-BINA-OME
camera_typeenumsCMOS4DN-BINA-OME
camera_offset_adufloat (ADU)100.0
camera_sensitivity_e_per_adufloat (e-/ADU)0.46
camera_variance_map_uriuris3://client-study/calibration/orca-fusion-bt/var_map_2026-06.tif
roi_origin_pxarray (pixel)512, 384OME-XML
bit_depthint (bit)16OME-XML
source_file_countint (count)3

You get

  • Indexed localization movie · OME-Zarr
  • Ingest manifest · JSON

References