Architecture overview¶
This page is the high-altitude map. It is kept deliberately conceptual so it changes slowly; the authoritative, always-current detail lives in the API Reference, generated from the code.
Distribution / dependency graph¶
Every distribution depends only on itasc-core and communicates with the
others through files on disk, not Python calls — so each stage can be installed,
run, and tested in isolation.
flowchart TD
core["itasc-core<br/><i>TIFF/path/label IO · lineage model · napari UI primitives</i>"]
cp["itasc-cellpose"]
trk["itasc-tracking"]
agg["itasc-aggregate"]
cp --> core
trk --> core
agg --> core
Source layout¶
Each top-level subpackage under src/itasc/ is one importable stage. Most map
to a standalone distribution (itasc-cellpose, itasc-tracking,
itasc-aggregate, itasc-core); itasc.segmentation ships only inside
the full itasc app.
Subpackage |
Role |
|---|---|
|
Shared TIFF/path/logging helpers, label-stack IO, the interactive-correction base, the track lineage model |
|
Local Cellpose-SAM runner + divergence-based foreground/contour map building |
|
Ultrack candidate generation, database, linking, solving |
|
Divergence-based geodesic-Voronoi cell segmentation |
|
Interactive nucleus/cell label correction operations |
|
Pooling per-position sources into plottable quantities (contacts, T1 events, NLS classes) |
|
The Qt/napari UI layer that orchestrates the above into the unified workflow widget |
Tip
Each subpackage’s own module docstring is the canonical one-paragraph description of what it does, and it is surfaced at the top of that package’s API page. Keeping the high-level description in the module docstring is deliberate — it lives next to the code and is reviewed with it.
Design records¶
Point-in-time design documents under docs/superpowers/specs/ capture why
specific features were built the way they were. They are snapshots, not living
documentation — read them as history, and do not expect them to track the
current code.