OME-Zarr RFC-4 — Orientation Sample Data

Sample datasets for RFC-4 (Axis Anatomical Orientation) of OME-Zarr (spec · ome/ngff#528). Validator and conformance suite: github.com/fideus-labs/ome-zarr-rfc4-validation.

RFC-4 adds one optional field to spatial axes (type: "space"):

{ "name": "x", "type": "space",
  "orientation": { "type": "anatomical", "value": "left-to-right" } }

value is one of 24 controlled-vocabulary directions naming the axis's lowest→highest coordinate direction. The field is optional per axis: an axis with no anatomical direction is left unannotated.

Overview

  • 38 cases across 9 formats: OME-Zarr, DICOM, NIfTI, NRRD, MINC, Analyze, Bruker ParaVision, Varian FDF, whole-slide imaging (Aperio SVS).
  • 30 real, 8 synthetic.
  • 36 valid, 2 invalid (must-reject).
  • All 24 vocabulary terms are present. palmar/dorsal appear only in the synthetic hand phantom; the other 22 appear in real data.
  • All 24 terms appear as written OME-Zarr orientation metadata; for the source-format files the orientation is derived from the native header (DICOM IOP, NIfTI affine, NRRD space directions, MINC direction cosines).

Every case is indexed in manifest.csv: test_id, format, path, category, expect, rfc4_rules, orientation, data, source, license, notes.

Download

Clone this repo (git + git-lfs) or browse the file tree above. The data is also mirrored to a public Filebase S3 bucket, readable without credentials:

# a single file over plain HTTP
curl -O https://ome-zarr-rfc4.s3.filebase.io/manifest.csv

# the whole corpus via the anonymous S3 API (endpoint https://s3.filebase.io)
s5cmd --no-sign-request --endpoint-url=https://s3.filebase.io sync 's3://ome-zarr-rfc4/*' ./data/
# or with the AWS CLI
aws --no-sign-request --endpoint-url=https://s3.filebase.io s3 sync s3://ome-zarr-rfc4 ./data

An OME-Zarr can also be read straight from the mirror — e.g. ngff_zarr.from_ngff_zarr("https://ome-zarr-rfc4.s3.filebase.io/ome-zarr/heart_sunnybrook_apex_base.ome.zarr") (with the ngff-zarr[remote] extra).

Contents

One folder per format at the repo root.

manifest.csv              index of all 38 cases

ome-zarr/  18  OME-Zarr volumes with RFC-4 orientation written (16 valid + 2 invalid)
dicom/      4  synthetic HFDR/HFDL pair · axial CT · oblique CT
nifti/      5  avg152T1 LR/RL · Canon DTI oblique/axial · qform≠sform
nrrd/       1  MRHead.nrrd
minc/       3  ICBM152 T1 full · z-flip · xy-flip
analyze/    1  avg152T1.hdr/.img
bruker/     3  PV6.0 FLASH · rat PV5.1 · human PV5.1
fdf/        2  Varian test.fdf · synthetic HFS supine
wsi/        1  Aperio CMU-1-Small-Region.svs
screenshots/
  derived/  3-panel L/R/A/P/S/I orientation overlays (nibabel/ITK) — 33
  slicer/   3D Slicer captures — 13
  itksnap/  ITK-SNAP captures — 8
  niivue/   NiiVue captures — 14
  napari/   napari captures — 16

Test datasets

Orientation is listed per axis in lowest→highest coordinate order; marks an axis left unannotated (no applicable RFC-4 term).

OME-Zarr — orientation written in the metadata

ID File Orientation Data License
TC-21 ome-zarr/mouse_allen_quadruped.ome.zarr z rostral-to-caudal · y dorsal-to-ventral · x right-to-left real CC BY 4.0
TC-39 ome-zarr/mouse_allen_quadruped_flip.ome.zarr z caudal-to-rostral · y ventral-to-dorsal · x left-to-right real CC BY 4.0
TC-22 ome-zarr/foot_cmb_limb.ome.zarr z distal-to-proximal · y dorsal-to-plantar · x — real CC BY 4.0
TC-40 ome-zarr/foot_cmb_limb_flip.ome.zarr z proximal-to-distal · y plantar-to-dorsal · x — real CC BY 4.0
TC-24 ome-zarr/skin_janelia_superficial_deep.ome.zarr z superficial-to-deep · y — · x — real CC BY 4.0
TC-41 ome-zarr/skin_janelia_flip.ome.zarr z deep-to-superficial · y — · x — real CC BY 4.0
TC-25 ome-zarr/heart_sunnybrook_apex_base.ome.zarr z apex-to-base · y — · x — real CC0 1.0
TC-42 ome-zarr/heart_sunnybrook_flip.ome.zarr z base-to-apex · y — · x — real CC0 1.0
TC-44 ome-zarr/airway_epithelium.ome.zarr z apical-to-basal · y — · x — real CC BY 4.0
TC-45 ome-zarr/airway_epithelium_flip.ome.zarr z basal-to-apical · y — · x — real CC BY 4.0
TC-46 ome-zarr/mouse_rosenhain_wholebody.ome.zarr z caudal-to-cranial · y dorsal-to-ventral · x — real CC0
TC-47 ome-zarr/mouse_rosenhain_flip.ome.zarr z cranial-to-caudal · y dorsal-to-ventral · x — real CC0
TC-49 ome-zarr/brain_icbm_ras.ome.zarr z inferior-to-superior · y posterior-to-anterior · x left-to-right real MNI
TC-50 ome-zarr/brain_icbm_ras_flip.ome.zarr z superior-to-inferior · y anterior-to-posterior · x right-to-left real MNI
VC-1 ome-zarr/vocab-quad-limb.ome.zarr z cranial-to-caudal · y dorsal-to-palmar · x proximal-to-distal synthetic CC0
VC-2 ome-zarr/vocab-quad-limb-flip.ome.zarr z caudal-to-cranial · y palmar-to-dorsal · x distal-to-proximal synthetic CC0

Invalid (must be rejected):

ID File Violation Code
TC-C ome-zarr/TC-C_invalid_vocabulary.ome.zarr LPS is not one of the 24 terms bad-value
TC-D ome-zarr/TC-D_orientation_on_time_axis.ome.zarr orientation on a type: "time" axis orientation-on-non-space

Source formats — orientation derived from the native header

ID File Orientation Data License
TC-05 dicom/TC-05_HFDR.dcm x posterior-to-anterior · y right-to-left · z inferior-to-superior synthetic CC0
TC-06 dicom/TC-06_HFDL.dcm x anterior-to-posterior · y left-to-right · z inferior-to-superior synthetic CC0
TC-37 dicom/real_ct_small.dcm x right-to-left · y anterior-to-posterior · z inferior-to-superior real pydicom test data
TC-48 dicom/real_ct_oblique.dcm x right-to-left · y anterior-to-posterior · z inferior-to-superior real pydicom test data
TC-08 nifti/avg152T1_LR_nifti.nii.gz i right-to-left · j posterior-to-anterior · k inferior-to-superior real public domain
TC-09 nifti/avg152T1_RL_nifti.nii.gz i left-to-right · j posterior-to-anterior · k inferior-to-superior real public domain
TC-10 nifti/TC-10_canon_DTI_oblique_20d.nii.gz i right-to-left · j posterior-to-anterior · k inferior-to-superior real BSD-2-Clause
TC-23 nifti/TC-23_canon_DTI_axial.nii.gz i right-to-left · j posterior-to-anterior · k inferior-to-superior real BSD-2-Clause
TC-11 nifti/TC-11_qform_sform_mismatch.nii.gz i right-to-left · j posterior-to-anterior · k inferior-to-superior synthetic CC0
TC-13 nrrd/MRHead.nrrd 0 anterior-to-posterior · 1 superior-to-inferior · 2 left-to-right real donated, no restrictions
TC-26 minc/mni_icbm152_t1.mnc xspace left-to-right · yspace posterior-to-anterior · zspace inferior-to-superior real MNI
TC-27 minc/icbm152_t1_2mm_zflip.mnc xspace left-to-right · yspace posterior-to-anterior · zspace superior-to-inferior real MNI
TC-28 minc/icbm152_t1_2mm_xyflip.mnc xspace right-to-left · yspace anterior-to-posterior · zspace inferior-to-superior real MNI
TC-30 analyze/avg152T1.hdr i right-to-left · j posterior-to-anterior · k inferior-to-superior real BSD-3-Clause
TC-31 bruker/PV6.0_FLASH read left-to-right · phase dorsal-to-ventral · slice rostral-to-caudal real Apache-2.0
TC-34 bruker/rat_PV5.1/9 read left-to-right · phase dorsal-to-ventral · slice rostral-to-caudal real CC BY 4.0
TC-36 bruker/human_PV5.1 axis0 right-to-left · axis1 superior-to-inferior · axis2 posterior-to-anterior real CC BY 4.0
TC-32 fdf/test.fdf — (no patient position; geometric orientation[] only) real Apache-2.0
TC-33 fdf/synthetic_HFS_supine.fdf x left-to-right · y posterior-to-anterior · z inferior-to-superior synthetic CC0
TC-38 wsi/CMU-1-Small-Region.svs z superficial-to-deep · y — · x — real OpenSlide testdata

Screenshots

Derived orientation overlays

Three-panel axial/coronal/sagittal views with L/R/A/P/S/I markers, rendered from the file's own header via nibabel/ITK. One per case, 35 total in screenshots/derived/.

TC-49 brain_icbm_ras

TC-13 MRHead

TC-21 mouse_allen_quadruped

A flip pair renders as mirrored markers — TC-49 above, and its exact axis-flip:

TC-50 brain_icbm_ras_flip

Viewers

The same files opened in four viewers.

3D Slicerscreenshots/slicer/, 13 captures (DICOM, NIfTI, NRRD, MINC, Analyze)

TC-13 MRHead in 3D Slicer

ITK-SNAPscreenshots/itksnap/, 8 captures

TC-26 ICBM152 T1 in ITK-SNAP

NiiVuescreenshots/niivue/, 14 captures

TC-08 avg152T1 LR in NiiVue

napariscreenshots/napari/, 16 captures (OME-Zarr, NRRD, WSI)

TC-49 brain_icbm_ras in napari

napari reads the OME-Zarr but does not apply the RFC-4 orientation field; its axis labels are the axis names, not anatomical directions.

Usage

git clone https://huggingface.co/fideus-labs/ome-zarr-rfc4-data
git clone https://github.com/fideus-labs/ome-zarr-rfc4-validation
cd ome-zarr-rfc4-validation
uv sync
uv run python validate_rfc4.py --data-dir ../ome-zarr-rfc4-data

validate_rfc4.py exits 0 when every case meets the expectation recorded in manifest.csv.

Conformance testing

conformance/run_conformance.py drives any tool's CLI against conformance/manifest.yaml and diffs its output. The tool must read one dataset and print this JSON to stdout:

{
  "input": "<path>",
  "format": "ome-zarr",
  "rfc4_valid": true,
  "axes": { "z": "inferior-to-superior", "y": "posterior-to-anterior", "x": "left-to-right" },
  "violations": [],
  "warnings": []
}

rfc4_valid is true/false for OME-Zarr, null for derived formats that carry no OME-Zarr schema. axes maps axis name → RFC-4 value, omitting unannotated axes. violations/warnings are code lists.

With ngff-zarr

ngff-zarr exposes this contract through a conformance subcommand (PR #605):

ngff-zarr conformance ome-zarr/brain_icbm_ras.ome.zarr

Drive the whole suite through it:

uv run python conformance/run_conformance.py \
    --data-dir ../ome-zarr-rfc4-data \
    --tool "ngff-zarr conformance {input}"

Exit code 0 means the tool matched the expected verdict on every case. The same driver runs the reference validator:

uv run python conformance/run_conformance.py \
    --data-dir ../ome-zarr-rfc4-data \
    --tool "python validate_rfc4.py --emit-canonical {input}"

Restrict to one format with --format ome-zarr; write a machine-readable report with --json report.json.

Violation and warning codes

Code Condition Rule
orientation-on-non-space orientation on a time/channel axis R1
missing-value orientation object without value R2
bad-type orientation.type != "anatomical" R3
bad-value value not in the 24-term vocabulary R4
duplicate-anatomical-axis two axes on the same antonym pair R5
null-orientation (warning) orientation: null — SHOULD omit R6
not-roughly-aligned (warning) axis > 15° off the nearest anatomical axis R8

Licensing & attribution

Redistributed here under CC BY 4.0 (umbrella). Per component:

Data License Source
Synthetic cases (ome-zarr/vocab-quad-limb{,_flip}, ome-zarr/TC-C,TC-D, dicom/TC-05,TC-06, nifti/TC-11, fdf/synthetic_HFS_supine) CC0 / generated generated
ome-zarr/mouse_allen_quadruped (TC-21/39) CC BY 4.0 Allen Mouse Brain CCFv3 (Wang et al., Cell 2020, Allen Institute); packaged by BrainGlobe
ome-zarr/foot_cmb_limb (TC-22/40) CC BY 4.0 CMB-MEL foot CT, The Cancer Imaging Archive (TCIA)
ome-zarr/skin_janelia_superficial_deep (TC-24/41) CC BY 4.0 OpenOrganelle jrc_mus-skin-1 (HHMI Janelia); doi:10.25378/janelia.24085269
ome-zarr/heart_sunnybrook_apex_base (TC-25/42) CC0 1.0 Sunnybrook Cardiac Data, patient SCD0000101 CINESAX (cine short-axis MRI); Cardiac Atlas Project (cardiacatlas.org)
ome-zarr/airway_epithelium (TC-44/45) CC BY 4.0 OpenOrganelle cam_hum-airway-14500, human airway epithelium FIB-SEM (CellMap / HHMI Janelia); doi:10.25378/janelia.26035168
ome-zarr/mouse_rosenhain_wholebody (TC-46/47) CC0 Rosenhain et al. 2018, whole-body mouse micro-CT (figshare 7058615; Sci Data 5:180294), volume M10 CT280
ome-zarr/brain_icbm_ras{,_flip} (TC-49/50) MNI license (BSD-like) ICBM152 T1 converted to OME-Zarr (RAS canonical + exact flip)
nrrd/MRHead.nrrd (TC-13) donated without restrictions 3D Slicer sample data
nifti/avg152T1_{LR,RL} (TC-08/09) public domain MNI avg152T1 (MONAI-extra-test-data)
nifti/TC-10,TC-23 (Canon DTI) BSD-2-Clause dcm_qa_canon_61 (Chris Rorden / neurolabusc); Canon 3T Galan, GHU Paris
minc/mni_icbm152_t1 (TC-26) MNI license (BSD-like) MNI ICBM152 2009c nonlinear symmetric T1 (V. Fonov / D.L. Collins, McConnell Brain Imaging Centre, MNI)
minc/icbm152_t1_2mm_{zflip,xyflip} (TC-27/28) MNI license (BSD-like) 2 mm-subsampled, axis-flipped copies of the ICBM152 T1
analyze/avg152T1 (TC-30) BSD-3-Clause VTK test data (Testing/Data/ANALYZE.*); SPM avg152T1
bruker/PV6.0_FLASH (TC-31) Apache-2.0 ITK test suite (Modules/IO/Bruker/test); ParaVision 6.0 FLASH QA phantom
bruker/rat_PV5.1 (TC-34) CC-BY-4.0 brkraw sample data — Sprague-Dawley rat, ParaVision 5.1 TurboRARE (anatomical scan); Center for Animal MRI, UNC Chapel Hill
bruker/human_PV5.1 (TC-36) CC-BY-4.0 Zenodo 10.5281/zenodo.18461488 — MRSI semiLASER PV5.1; includes the subject file (SUBJECT_entry=HeadFirst, SUBJECT_position=Supine)
fdf/test.fdf (TC-32) Apache-2.0 ITK test suite (Modules/IO/IOFDF/test); Varian VnmrJ mgre phantom
fdf/synthetic_HFS_supine.fdf (TC-33) CC0 / generated header schema from OpenVnmrJ FdfToDcm
dicom/real_ct_small,real_ct_oblique (TC-37/48) pydicom test data pydicom bundled CT samples; TC-37 axial identity IOP, TC-48 ~22° oblique IOP
wsi/CMU-1-Small-Region.svs (TC-38) OpenSlide testdata Aperio CMU-1 sample (OpenSlide test data)
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support