Semantic 4D kinematics and fracture tracking for operando diffraction using foundation vision models.
braggtrack/— Python package (I/O, segmentation, semantic embeddings, tracking, CLIs).data/sample_operando/— bundled example scans (scan0001…scan0003, each withpco_nf_0000_cropped.h5). Seedata/sample_operando/README.md.docs/— architecture and coding practices.artifacts/— generated outputs (gitignored).
Contributing: see CONTRIBUTING.md.
Bundled under data/sample_operando/:
data/sample_operando/scan0001/pco_nf_0000_cropped.h5data/sample_operando/scan0002/pco_nf_0000_cropped.h5data/sample_operando/scan0003/pco_nf_0000_cropped.h5
Implemented segmentation stack:
- 3D LoG enhancement (
log_enhance_3d) - h-maxima seed detection (
h_maxima_seeds) - 3D seeded watershed-style region growing (
watershed_from_seeds) - post-processing (small-object cleanup + 3D hole fill)
- feature extraction table (centroid, bbox, integrated intensity, covariance, eigenvalues)
Run end-to-end segmentation artifacts on the three scans (omit the path to use the bundled sample automatically, or pass it explicitly):
python -m braggtrack.cli.segment_dataset --outdir artifacts/week2
python -m braggtrack.cli.segment_dataset data/sample_operando --outdir artifacts/week2Outputs:
artifacts/week2/segmentation_summary.jsonartifacts/week2/segmentation_summary.csvartifacts/week2/scanXXXX/summary.jsonartifacts/week2/scanXXXX/features.csvartifacts/week2/qc/week2_visual_qc.ipynb
Note: if h5py is not available, the CLI uses a deterministic synthetic fallback volume per scan file so CI and schema checks remain reproducible.
GitHub Actions CI runs:
python scripts/ci_report.py
ci_report.py executes unit tests, Week 1 acceptance, Week 2 smoke, and Week 2 acceptance checks, then prints explicit PASS/FAIL criteria and overall status.
Before opening a PR, run:
python scripts/pre_pr_check.pyThis checks for unresolved conflict markers and (when origin/main exists) reports ahead/behind divergence with a rebase hint.
Week 1 focuses on data contracts, beamline adaptation, and dataset validation.
Implemented modules:
braggtrack.io.models: canonical contracts (ScanVolumeMeta,ExperimentSequence, axis definitions)braggtrack.io.beamline: beamline adapter to map discovered scan files into contract objectsbraggtrack.io.validation: sequence and metadata validation checksbraggtrack.cli.inspect_datasets: scan discovery + metadata extraction reportbraggtrack.cli.validate_dataset: sequence validation report
Week 2 starts with a robust classical baseline, including Otsu thresholding as the standard first-pass separator.
Implemented modules:
braggtrack.segmentation.otsu: pure-Python Otsu threshold estimationbraggtrack.segmentation.pipeline: threshold segmentation + 3D connected component countingbraggtrack.segmentation.classical: LoG enhancement + local-max seed extraction + seeded region growingbraggtrack.cli.segment_synthetic: synthetic smoke test for segmentation harnessbraggtrack.cli.segment_dataset: dataset scan segmentation CLI
python -m braggtrack.cli.inspect_datasets
python -m braggtrack.cli.validate_dataset
python -m braggtrack.cli.segment_synthetic
python -m braggtrack.cli.segment_dataset --outdir artifacts/week2Each command resolves the dataset root via braggtrack.io.paths: bundled data/sample_operando when present, otherwise the current working directory. Pass an explicit path to use another dataset root.
If h5py is unavailable in your environment, scan discovery and validation still run and include a clear warning in the output payload.
GitHub Actions CI now runs:
- unit tests (
python -m unittest discover -s tests -v) - Week 1 acceptance checks (
python scripts/check_acceptance.py)
The acceptance script verifies scan discovery/order/monotonicity and fails only on unmet acceptance criteria (warnings are reported but do not fail by themselves).