Regression and lab-check artifacts live under validation/. Each intentional run should include manifest.json, metrics CSV, and usually report.md (plus optional mesh/preview).
morphostack doctor
pytest -q
cd apps/web && npm run buildOptional heavy tests that load large real files:
pytest -m slowpython scripts/validate_synthetic.py
python scripts/validate_synthetic_ellipsoid.py
python scripts/validate_synthetic_touching.pyOutputs under:
validation/runs/synthetic-sphere/validation/runs/synthetic-ellipsoid/validation/runs/synthetic-touching-failure/(negative / hard case)
Sphere and ellipsoid regressions should PASS within their configured tolerances.
python scripts/validate_crowded.pyCreates multi-object seed runs such as:
validation/runs/czi-1650-crowded-two-objects/validation/runs/rbc-image46-crowded-two-objects/
Each object folder records threshold, profile, seed, Z range, voxel source, tracking diagnostics, and mesh path in manifest.json.
# PowerShell helper
./scripts/validate_dopc.ps1
# or seeded variant
python scripts/validate_dopc_seeded.pySee validation/data-notes/dopc-movie1.md and citations.md for dataset attribution.
python scripts/validate_all.pyWrites validation/reports/validation-all.md (and JSON companion).
python scripts/compare_active_surfaces_threshold.pyReports land in validation/reports/active-surfaces-vs-threshold-*.md.
morphostack validate reference_metrics.csv new_metrics.csv --tolerance 0.000001
morphostack validate ref_batch.csv new_batch.csv --key-column source_path --all-columnsCSV validation proves numeric regression stability, not biological truth, unless the reference is a curated lab standard.
voxel_source— never treatdefaultas calibrated biology.object_seed/tracking— same object for preview, analyze, mesh.warnings—default_voxel_size,tracking_lost_*,roi_boundary_touch,likely_neighbor_merge.- Crowded pairs — distinct mean
area_um2for object A vs B when both are real separate objects. - Preview PNGs — human visual QC.