Skip to content

Split tests rfc5#3

Merged
jo-mueller merged 51 commits into
jo-mueller:splash-ngff_specfrom
clbarnes:split-tests-rfc5
Dec 15, 2025
Merged

Split tests rfc5#3
jo-mueller merged 51 commits into
jo-mueller:splash-ngff_specfrom
clbarnes:split-tests-rfc5

Conversation

@clbarnes
Copy link
Copy Markdown

@clbarnes clbarnes commented Nov 18, 2025

Fixes ome#37
Supercedes ome#26

  • Refactor test cases to one file per test
  • Factor into two types of test
    • "attributes" which represents single attributes object from a single zarr.json
    • "zarr" which represents a zarr hierarchy in a filesystem store (with no chunks)
  • Provide a CLI tool which feeds these test cases into a simple "dingus" CLI of the implementor's choice

Example usage:

git clone https://github.com/clbarnes/ngff-spec.git
ngff-spec/ome_zarr_conformance.py attributes -- path/to/my/dingus --dingus-arg

This will iterate over all attributes tests (concurrently) and, with the test path $TEST_PATH, calls path/to/my/dingus --dingus-arg $TEST_PATH.

The dingus is expected to read the test from the given path and return {"valid": true} if it believes the test data is valid (false if not; optionally "message": str with more details). Prints out a TSV of all test names and their status pass/fail/error.

In "attributes" mode, $TEST_PATH is a path to a JSON file containing the Zarr attributes object (i.e. {"ome": {...}}). In "zarr" mode, $TEST_PATH is a path to directory representing the root of a zarr container (i.e. containing a zarr.json).

Test cases are not guaranteed to be correct for the moment.

I recommend ignoring most of the diff (mainly just moving around JSON files); look at ome_zarr_conformance.py and the changes in the schemas/ directory.

jo-mueller and others added 15 commits October 22, 2025 22:08
affine/rotation matrices should always be 2D
I'm merging this so that all necessary changes regarding the addition of rfc5-stuff to the main branch of the ngff-spec repo can be in one place. This branch was supposed to be a break-out to keep the commit-history of ome#17 clean.

* Update input/output to input_axes/output_axes in schema

* Add description and required field to byDimension

* Update mapAxis schema to use integer array

* Add path and interpolation to displacements schema

The displacements object now includes a required 'path' property for specifying the zarr array location and an 'interpolation' property with supported methods. This enhances the schema's ability to describe displacement fields and their application.

* Add path and interpolation to coordinates schema

Introduces 'path' and 'interpolation' properties to the 'coordinates' object in the schema, specifying the location of the coordinate field and the interpolation method to use. The 'path' property is now required.

* only allow paths, no URLs

* move required fields to correct places

* name musnt't be empty

* added axis types to schema

* Added descriptions to schemas

* updated versions to 0.6dev2

* fix paths and versions

* pull schema from correct location

* Added action to run the tests

* update config reference

* update versions in test suite

* Revert "update config reference"

This reverts commit ff3fedd.

* update all version references to "0.6dev2"

* update version reference

* at least two spatial axes

* allow any axis type

* update version reference

* Add maxItems constraint to axes schema

Set a maximum of 5 items for the axes array in the schema to enforce limits on the number of axes allowed.

* Refactor image schema for coordinate transformations

Refactors the definition of coordinateTransformations and coordinateSystems to use inline array schemas with stricter constraints. Adds a new multiscale_coordinateTransformations definition to support scale and translate transformations for multiscale datasets.

* Update to NGFF 0.6dev2 and refactor coordinate systems

Updated example and test JSON files to use the NGFF 0.6dev2 specification. Replaced 'axes' with 'coordinateSystems', added explicit 'input' and 'output' fields to coordinateTransformations, and restructured transformation chains for clarity and compliance with the new spec.

* fix schema resolution
Co-authored-by: Will Moore <900055+will-moore@users.noreply.github.com>
Co-authored-by: David Stansby <d.stansby@ucl.ac.uk>
Co-authored-by: Davis Bennett <davis.v.bennett@gmail.com>
Also minor refactor test_validation
@github-actions
Copy link
Copy Markdown

Automated Review URLs

@clbarnes clbarnes mentioned this pull request Nov 18, 2025
@jo-mueller jo-mueller changed the base branch from RFC5 to splash-ngff_spec December 15, 2025 11:13
@jo-mueller jo-mueller marked this pull request as ready for review December 15, 2025 11:13
@jo-mueller
Copy link
Copy Markdown
Owner

Hi @clbarnes, before I proceed with changing the ngff-spec repo structure, I think it would be wise to first get your changes here in board. I'm fairly certain you should be able to resolve the merge blockers by simply choosing your incoming changes over the current code everywhere.

I already got going on restructuring the repo (ome#35) but that shouldn't go in before this here is done :)

@jo-mueller jo-mueller merged commit 352b836 into jo-mueller:splash-ngff_spec Dec 15, 2025
2 checks passed
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.

2 participants