itasc-tracking¶
Independent ITASC piece for nucleus tracking and interactive correction. It turns 2D+t foreground and contour maps into Ultrack candidate segments, a tracking database, solved tracks, and validated, corrected nucleus labels, all from a napari plugin.
Install¶
pip install itasc-tracking # correction + browsing
pip install "itasc-tracking[solve]" # + the Ultrack solver (db build / track)
This pulls in itasc-core. Everything installs into the shared itasc.*
namespace (PEP 420), so import itasc.tracking_ultrack works whether or not
the full ITASC orchestrator is present. The Ultrack engine is only imported
lazily when you actually run candidate generation / linking / solving, so
correction-only use does not require the [solve] extra.
Use¶
napari plugin: launch napari and add the Ultrack Segment + Track widget. It exposes three path fields:
Foreground: the foreground probability/intensity
.tif(2D+t).Contours: the contour/boundary
.tif(2D+t).Output dir: where every artifact is written (defaults to the foreground file’s folder when left blank).
The two inputs can have any name and live anywhere.
Standalone path contract:
<foreground.tif> (in, any name/location) <contours.tif> (in, any name/location) output_dir/ atoms.tif (out) ultrack_workdir/data.db (out) tracked_labels.tif (out) validated_cells.json (out) corrections.json (out)
The full itasc orchestrator drives the same widget through its staged
<pos>/1_cellpose + <pos>/2_nucleus layout instead; the piece supports both
via itasc.napari._paths.NucleusWorkspace (files() / flat() vs
staged()).
Backend¶
The headless backend lives under itasc.tracking_ultrack (candidate atoms,
database build, linking, solving, export, correction primitives, and the
validation_state validation/correction annotation store) and
itasc.correction (label-edit helpers). Generic tracked-label-stack IO is
shared substrate in itasc.core.label_store.