Skip to content

Dev Plan #1

Description

@jameslehoux

6-Week Execution Plan (Milestones + Acceptance Criteria)
Week 1 — Data Contracts + Beamline Adapter
Goal: lock down how your 3 sequential scans are interpreted as one operando time series.

Tasks
Define canonical coordinate/data model:

ScanVolume: voxel array + axes (mu, chi, d) + units + timestamps.

ExperimentSequence: ordered list of scans (scan0001, scan0002, scan0003, …).

Implement a beamline-specific NeXus adapter:

Parse your exact group paths and attributes.

Validate scan ordering and metadata continuity (start/end times, motor ranges, detector config).

Add a validate_dataset command that reports missing fields, shape mismatches, and non-monotonic time.

Acceptance criteria
Can load all three scans into a single ordered sequence object.

Metadata schema validation passes with a machine-readable report.

Unit tests cover path parsing + ordering + required-field checks.

Week 2 — Segmentation Baseline (Classical CV)
Goal: produce stable per-scan 3D spot instances without foundation models yet.

Tasks
Implement:

3D LoG enhancement

h-maxima seed extraction

3D watershed segmentation

Add post-processing:

remove tiny objects

hole fill / mask cleanup

Compute object-level descriptors:

centroid in (mu,chi,d)

covariance/eigenvalues

integrated intensity and bbox

Acceptance criteria
Segmentation runs end-to-end on all three scans.

Produces spot table (N spots/scan) and masks in a reproducible format.

Visual QC notebook shows at least 20 representative objects with overlays.

Week 3 — Tracking v1 (Physics-Only Association)
Goal: establish a robust baseline tracker before semantic embeddings.

Tasks
Build frame-to-frame association using:

gated distance in position/shape space

Hungarian global assignment

Add basic lifecycle events:

born, continued, terminated

Build trajectory outputs + simple lineage graph.

Acceptance criteria
Tracks are generated across all three scans.

ID-switch rate and track fragmentation are computed.

Manual QC on selected difficult regions (near-overlap cases) documented.

Week 4 — 2.5D Multi-View Semantic Features
Goal: integrate your key novelty.

Tasks
For each segmented spot, generate 3 orthogonal MIPs:

proj along mu → (chi,d)

proj along chi → (mu,d)

proj along d → (mu,chi)

Extract frozen features (DINO family) per view, concatenate + normalize.

Update association cost:

C
i
j

α

x
i

x
j

2
+
β
(
1

s
i
m
(
f
i
,
f
j
)
)
C
ij

=α∥x
i

−x
j


2
+β(1−sim(f
i

,f
j

))
Run ablation: geometry-only vs geometry+semantic.

Acceptance criteria
Semantic feature extraction completes for all scans.

Tracking with semantic term reduces ID switches on overlap-heavy subsets.

Ablation report with tuned
α
,
β
α,β and confidence intervals.

Week 5 — Split/Merge + Fracture Precursor Logic
Goal: capture chemomechanical failure events, not just trajectories.

Tasks
Add lineage DAG event handling:

split (1→2+), merge (2+→1)

Implement precursor score:

clustering on dense/patch features

persistence requirement (e.g., ≥2 consecutive scans/frames)

Emit event table with timestamps and parent/child track IDs.

Acceptance criteria
Split/merge events are explicitly represented and queryable.

Precursor detection produces ranked candidates with confidence.

At least 5 manually reviewed event examples included in notebook/report.

Week 6 — Packaging, Benchmarking, and Release Candidate
Goal: make this usable by others and reproducible for publication.

Tasks
Harden CLI workflows:

validate, segment, track, events, report

Add configs and reproducible run manifests.

Write docs:

install, data layout, quickstart, FAQ, troubleshooting

Create benchmark outputs:

metrics summary + sample visualizations + runtime profiling.

Acceptance criteria
One-command pipeline run on your three-scan sample sequence.

Documentation allows a new user to reproduce baseline outputs.

v0.1.0 release candidate tagged with changelog and known limitations.

Weekly Deliverables (what you should have in-hand every Friday)
Code merged on a stable branch.

Run artifact (JSON/CSV/Parquet + plots) for the current milestone.

Short decision memo: what worked, what failed, what changed next week.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions