Skip to content

feat(io): native OME-TIFF/OME-Zarr metadata parsing and axis-aware volumetric reads - #397

Open
darkclad wants to merge 3 commits into
PolusAI:mainfrom
darkclad:main-io-reorg-1
Open

feat(io): native OME-TIFF/OME-Zarr metadata parsing and axis-aware volumetric reads#397
darkclad wants to merge 3 commits into
PolusAI:mainfrom
darkclad:main-io-reorg-1

Conversation

@darkclad

Copy link
Copy Markdown

Part 1 of 4 of the native 5D (X,Y,Z,C,T) OME-TIFF/OME-Zarr IO series. Stacked on main-io-reorg-vetting — please review/merge that one first; this PR's base will be retargeted to main once it lands.

Lays the groundwork for native OME input:

  • OmeAxes descriptor + OME metadata parsers, with unified format detection
  • Axis-aware tile loading (channel/timeframe)
  • Native OME-TIFF and OME-Zarr reads honoring the file's own DimensionOrder
  • ImageLoader::load_volume to assemble a whole X*Y*Z volume for the volumetric pipeline
  • All 3D volumetric consumers wired onto load_volume
  • A NIfTI load_volume equivalence regression guard, protecting the existing consumer path through the rewrite

Standalone build/test verified green (C++ gtest + pytest tests/python/).

Demian Vladi added 3 commits July 30, 2026 12:35
…of the IO series)

Foundation branch for the main-io-reorg-* stack. Bundles oracle-vetting
promotions for the moments/GLCM/GLRLM/GLSZM/GLDM/morphology/caliper feature
families, a release-please manifest fix, and the CLAUDE.md workflow guide --
none of which are IO/OME work. Kept separate from the 4 IO PRs; should be
reviewed/merged via its own track.

Absorbed commits (oldest to newest):
73f6ca8 fix(moments): correct Hu invariant h5/h6 formulas (9x bracket, stray +eta03)
a500bd9 ci(release-please): use manifest config so 0.x breaking = minor, and pin 0.12.0
79d0974 fix(3d): compute 3ROBUST_MEAN (was hardcoded 0) + vet 18 3D first-order features
60a1ebb fix(glcm): normalize HOM2/ENTROPY by sum_p (2D+3D) + fully oracle-vet GLCM
d44dde7 test(glrlm): vet 12 2D gray-level-run joint-emphasis features vs IBSI
cb07b9d test(glrlm): vet 14 3D _AVE features vs PyRadiomics -> glrlm 100%
285bc39 docs(vetting): record the config scope of the glrlm promotions
7db4532 test(glszm): vet 6 2D gray-level-zone joint-emphasis features vs IBSI -> glszm 100%
c4bb8b1 docs(vetting): record the config scope of the glszm promotions
d213b50 test(gldm): vet 14 2D grey-level-dependence features vs IBSI -> gldm 100%
0780912 docs(vetting): record the config scope of the gldm promotions (7 are mode-invariant)
0af100b fix(3d-shape): correct mislabeled axis lengths + vet 7 morphology features
bc3e92a fix(caliper): correct Martin/Nassenstein diameters + vet 12 features vs imea
059998c test(morphology): vet Feret diameters vs imea + promote 6 features
701201b test(morphology): vet min-enclosing-circle diameter vs imea/cv2
965ab47 test(morphology): vet 8 EXTREMA coords vs matlab regionprops
992d5e6 test(morphology): promote FRACT_DIM_BOXCOUNT/PERIMETER (fraclac oracle)
a9ddc15 test(morphology): vet FRACT_DIM (fraclac) + CIRCULARITY/ROUNDNESS (analytic)
3377183 fix(caliper): float-precision hull rotation + address PR PolusAI#381 review
cc5b4de docs(caliper): correct inaccurate/stale comments (no code change)
b924f8e docs(vetting): retract unproven 3D NGLDM "ibsi" promotions; document MIRP disagreement
e301fe6 docs: add CLAUDE.md codebase and workflow guide
a548b57 docs(CLAUDE): add git workflow and tests/vetting conformance rules
466c038 docs(CLAUDE): address PR PolusAI#388 review - C++20; agentic git workflow
4235e0c docs(CLAUDE): address PR PolusAI#388 review - generalize paths, drop z5py pin, add no-local-paths rule
…lumetric reads

Step 1 of the IO project: lays the groundwork for native 5D (X,Y,Z,C,T) OME
input. Adds the OmeAxes descriptor and OME metadata parsers with unified
format detection, axis-aware tile loading (channel/timeframe), native
OME-TIFF and OME-Zarr reads honoring the file's own DimensionOrder,
ImageLoader::load_volume to assemble a whole X*Y*Z volume for the volumetric
pipeline, and wires all 3D volumetric consumers onto it. A NIfTI load_volume
equivalence guard protects the existing consumer path through the rewrite.

Absorbed commits (oldest to newest):
c916752 feat(io): OmeAxes descriptor, OME metadata parsers, unified format detection
364e802 feat(io): axis-aware loadTileFromFile (channel/timeframe) + 5D OME-Zarr addressability tests
33686dd feat(io): OME-Zarr native axis-order read via OmeAxes + rank/order/negative tests
a0d88be feat(io): OME-TIFF native read, full DimensionOrder permutations, adversarial hardening
eba3d4a feat(io): ImageLoader::load_volume - assemble whole X*Y*Z volume for the volumetric pipeline
958e1e1 test(io): NIfTI load_volume equivalence guard for the volumetric consumer rewrite
3e613cf feat(io): wire all 3D volumetric consumers onto load_volume + end-to-end consumer tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant