From 11e46d20c9bdcd3f423a7644dafa8b73e169c755 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 11:29:09 +0200 Subject: [PATCH 01/26] Update input/output to input_axes/output_axes in schema --- .../schemas/coordinate_transformations.schema | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index 413b9815..4d3d9372 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -111,18 +111,24 @@ { "$ref": "#/$defs/coordinateTransformation" }, { "properties": { - "input": { + "input_axes": { "type": "array", "items": { "type": "string" - } + }, + "description": "Names of the input axes for this transformation." }, - "output": { + "output_axes": { "type": "array", "items": { "type": "string" - } - } + }, + "description": "Names of the output axes for this transformation." + }, + "required": [ + "input_axes", + "output_axes" + ] } } ], From 0615a22a18325cb1ee54b9852458e961c98f5205 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 11:29:32 +0200 Subject: [PATCH 02/26] Add description and required field to byDimension --- ngff_spec/schemas/coordinate_transformations.schema | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index 4d3d9372..f037917e 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -325,8 +325,12 @@ "type": "array", "items": { "$ref": "#/$defs/byDimensionTransformation" - } - } + }, + "description": "List of transformations, each specifying input_axes and output_axes." + }, + "required": [ + "transformations" + ] } }, "displacements": { From 90d49bcdc66059226863506e43b36c5dea10a9b5 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 11:29:43 +0200 Subject: [PATCH 03/26] Update mapAxis schema to use integer array --- ngff_spec/schemas/coordinate_transformations.schema | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index f037917e..a9d2e054 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -150,12 +150,11 @@ "const": "mapAxis" }, "mapAxis": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } + "type": "array", + "items": { + "type": "integer" + }, + "description": "An array of integers representing the new axis order as zero-based indices of the input axes." }, "required": [ "mapAxis" From c083688c575cd762e328efee9405f0d8dddc6a65 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 11:29:54 +0200 Subject: [PATCH 04/26] 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. --- .../schemas/coordinate_transformations.schema | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index a9d2e054..c6113e7a 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -335,8 +335,21 @@ "displacements": { "type": "object", "properties": { - "type": { "const": "displacements" } - } + "type": { "const": "displacements" }, + "path": { + "type": "string", + "description": "Path to the zarr array containing the displacement field." + }, + "interpolation": { + "type": "string", + "enum": ["nearest", "linear", "cubic"], + "default": "linear", + "description": "Interpolation method to use when applying the displacement field." + } + }, + "required": [ + "path" + ] }, "coordinates": { "type": "object", From 53f2ae824303bc6273ae621ab108fcd390d029c9 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 11:30:01 +0200 Subject: [PATCH 05/26] 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. --- .../schemas/coordinate_transformations.schema | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index c6113e7a..95525af2 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -354,8 +354,21 @@ "coordinates": { "type": "object", "properties": { - "type": { "const": "coordinates" } - } + "type": { "const": "coordinates" }, + "path": { + "type": "string", + "description": "Path to the zarr array containing the coordinate field." + }, + "interpolation": { + "type": "string", + "enum": ["nearest", "linear", "cubic"], + "default": "linear", + "description": "Interpolation method to use when applying the coordinate field." + } + }, + "required": [ + "path" + ] } } } From da238c1f04226cdecd465ccac962fa35f1c26492 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 13:22:03 +0200 Subject: [PATCH 06/26] only allow paths, no URLs --- .../schemas/coordinate_transformations.schema | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index 95525af2..ffab9522 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -29,22 +29,6 @@ ] }, "$defs": { - "path_w_url": { - "description": "Path specification. Schema local solution until https://github.com/ome/ngff/issues/144 is resolved.", - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "path" - ] - }, "coordinateTransformation": { "description": "OME-NGFF coordinate transformation.", "allOf": [ @@ -170,7 +154,15 @@ }, "oneOf": [ { - "$ref": "#/$defs/path_w_url" + "properties": { + "path": { + "type": "string", + "description": "Path to a zarr array containing the scale factors." + } + }, + "required": [ + "path" + ] }, { "properties": { @@ -197,7 +189,15 @@ }, "oneOf": [ { - "$ref": "#/$defs/path_w_url" + "properties": { + "path": { + "type": "string", + "description": "Path to a zarr array containing the translation vectors." + } + }, + "required": [ + "path" + ] }, { "properties": { @@ -223,7 +223,15 @@ }, "oneOf": [ { - "$ref": "#/$defs/path_w_url" + "properties": { + "path": { + "type": "string", + "description": "Path to a zarr array containing the affine matrix." + } + }, + "required": [ + "path" + ] }, { "properties": { @@ -252,7 +260,15 @@ }, "oneOf": [ { - "$ref": "#/$defs/path_w_url" + "properties": { + "path": { + "type": "string", + "description": "Path to a zarr array containing the rotation matrix." + } + }, + "required": [ + "path" + ] }, { "properties": { From 9969e4d78b69efde9f57c27164fbe8e0c5e05135 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 13:22:16 +0200 Subject: [PATCH 07/26] move required fields to correct places --- .../schemas/coordinate_transformations.schema | 60 ++++++++++--------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index ffab9522..e4e4ff6f 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -108,15 +108,14 @@ "type": "string" }, "description": "Names of the output axes for this transformation." - }, - "required": [ - "input_axes", - "output_axes" - ] - } + } + }, + "required": [ + "input_axes", + "output_axes" + ] } - ], - "required": ["input", "output"] + ] }, "identity": { "type": "object", @@ -243,11 +242,11 @@ "type": "number" } } - }, - "required": [ - "affine" - ] - } + } + }, + "required": [ + "affine" + ] } ] }, @@ -280,11 +279,11 @@ "type": "number" } } - }, - "required": [ - "rotation" - ] - } + } + }, + "required": [ + "rotation" + ] } ] }, @@ -300,7 +299,8 @@ }, "required": [ "transformation" - ] + ], + "description": "The inverse of another coordinate transformation." }, "bijection": { "type": "object", @@ -317,7 +317,8 @@ }, "required": [ "forward", "inverse" - ] + ], + "description": "A pair of forward and inverse coordinate transformations." }, "sequence": { "description": "A sequence of transformations", @@ -330,7 +331,10 @@ "$ref": "#/$defs/coordinateTransformation" } } - } + }, + "required": [ + "transformations" + ] }, "byDimension": { "type": "object", @@ -340,13 +344,13 @@ "type": "array", "items": { "$ref": "#/$defs/byDimensionTransformation" - }, - "description": "List of transformations, each specifying input_axes and output_axes." - }, - "required": [ - "transformations" - ] - } + } + } + }, + "required": [ + "transformations" + ], + "description": "A set of transformations applied independently to each dimension." }, "displacements": { "type": "object", From 1440931dd49302d7cfb90481b6c8627e7444e173 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 15:48:23 +0200 Subject: [PATCH 08/26] name musnt't be empty --- ngff_spec/schemas/coordinate_systems.schema | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ngff_spec/schemas/coordinate_systems.schema b/ngff_spec/schemas/coordinate_systems.schema index 583d9941..1b9588be 100644 --- a/ngff_spec/schemas/coordinate_systems.schema +++ b/ngff_spec/schemas/coordinate_systems.schema @@ -15,7 +15,8 @@ "properties": { "name": { "type": "string", - "description": "Name of coordinate system" + "minLength": 1, + "description": "Name of coordinate system. Must be unique among all coordinate systems." }, "axes": { "$ref": "axes.schema" From f0fbb029ff9f13095184bd1b93f8881bd2b50c4c Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 15:48:36 +0200 Subject: [PATCH 09/26] added axis types to schema --- ngff_spec/schemas/axes.schema | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ngff_spec/schemas/axes.schema b/ngff_spec/schemas/axes.schema index 56b447f2..d92d1bc0 100644 --- a/ngff_spec/schemas/axes.schema +++ b/ngff_spec/schemas/axes.schema @@ -35,7 +35,8 @@ "properties": { "name": { "type": "string", - "description": "Name of the axis" + "minLength": 1, + "description": "Name of the axis. Must be unique within the coordinate system." }, "longName": { "type": "string", @@ -43,7 +44,15 @@ }, "type": { "type": "string", - "description": "Dimension of the axis" + "description": "Type of the axis. Should be one of the predefined types.", + "enum": [ + "array", + "space", + "time", + "channel", + "coordinate", + "displacement" + ] }, "discrete": { "type": "boolean", From 763cb91e89b2d353df5dc4d63fde212729059049 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 15:53:18 +0200 Subject: [PATCH 10/26] Added descriptions to schemas --- ngff_spec/schemas/coordinate_systems_and_transforms.schema | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ngff_spec/schemas/coordinate_systems_and_transforms.schema b/ngff_spec/schemas/coordinate_systems_and_transforms.schema index 3b6a4606..58c8f0c2 100644 --- a/ngff_spec/schemas/coordinate_systems_and_transforms.schema +++ b/ngff_spec/schemas/coordinate_systems_and_transforms.schema @@ -6,10 +6,12 @@ "type": "object", "properties": { "coordinateSystems": { - "$ref": "coordinate_systems.schema" + "$ref": "coordinate_systems.schema", + "description": "Coordinate systems to combine with transforms to define spatial relationships" }, "coordinateTransformations": { - "$ref": "coordinate_transformations.schema" + "$ref": "coordinate_transformations.schema", + "description": "Coordinate transformations defining spatial relationships between coordinate systems" }, "arrayCoordinateSystem": { "type": "object", From 85afeea0127a8db69d0f0e47eefb0c29d735e13b Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:28:47 +0200 Subject: [PATCH 11/26] updated versions to 0.6dev2 --- ngff_spec/schemas/_version.schema | 4 ++-- ngff_spec/schemas/axes.schema | 2 +- ngff_spec/schemas/bf2raw.schema | 4 ++-- ngff_spec/schemas/coordinate_systems.schema | 2 +- .../coordinate_systems_and_transforms.schema | 2 +- .../schemas/coordinate_transformations.schema | 2 +- ngff_spec/schemas/image.schema | 6 +++--- ngff_spec/schemas/label.schema | 4 ++-- ngff_spec/schemas/ome.schema | 4 ++-- ngff_spec/schemas/ome_zarr.schema | 14 +++++++------- ngff_spec/schemas/plate.schema | 4 ++-- ngff_spec/schemas/strict_axes.schema | 4 ++-- ngff_spec/schemas/strict_coordinate_systems.schema | 2 +- ngff_spec/schemas/strict_image.schema | 4 ++-- ngff_spec/schemas/strict_label.schema | 4 ++-- ngff_spec/schemas/strict_plate.schema | 4 ++-- ngff_spec/schemas/strict_well.schema | 4 ++-- ngff_spec/schemas/well.schema | 4 ++-- 18 files changed, 37 insertions(+), 37 deletions(-) diff --git a/ngff_spec/schemas/_version.schema b/ngff_spec/schemas/_version.schema index 3845691c..f1541e9f 100644 --- a/ngff_spec/schemas/_version.schema +++ b/ngff_spec/schemas/_version.schema @@ -1,10 +1,10 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/_version.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema", "title": "OME-Zarr Metadata version", "description": "The version of the OME-Zarr Metadata", "type": "string", "enum": [ - "0.6.dev1" + "0.6.dev2" ] } diff --git a/ngff_spec/schemas/axes.schema b/ngff_spec/schemas/axes.schema index d92d1bc0..2822fe96 100644 --- a/ngff_spec/schemas/axes.schema +++ b/ngff_spec/schemas/axes.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/axes.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/axes.schema", "title": "NGFF Axes", "description": "JSON from OME-NGFF .zattrs", "type": "array", diff --git a/ngff_spec/schemas/bf2raw.schema b/ngff_spec/schemas/bf2raw.schema index bb42ea87..2f92993b 100644 --- a/ngff_spec/schemas/bf2raw.schema +++ b/ngff_spec/schemas/bf2raw.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/bf2raw.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/bf2raw.schema", "title": "OME-Zarr container produced by bioformats2raw", "description": "The zarr.json attributes key", "type": "object", @@ -17,7 +17,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" } }, "required": [ diff --git a/ngff_spec/schemas/coordinate_systems.schema b/ngff_spec/schemas/coordinate_systems.schema index 1b9588be..7ce4460e 100644 --- a/ngff_spec/schemas/coordinate_systems.schema +++ b/ngff_spec/schemas/coordinate_systems.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/coordinate_systems.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_systems.schema", "title": "NGFF CoordinateSystem", "description": "JSON from OME-NGFF .zattrs", "type": "array", diff --git a/ngff_spec/schemas/coordinate_systems_and_transforms.schema b/ngff_spec/schemas/coordinate_systems_and_transforms.schema index 58c8f0c2..715b6fe9 100644 --- a/ngff_spec/schemas/coordinate_systems_and_transforms.schema +++ b/ngff_spec/schemas/coordinate_systems_and_transforms.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/coordinate_systems_and_transforms.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_systems_and_transforms.schema", "title": "NGFF Coordinate Systems and Transforms", "description": "Coordinate Systems and transforms for OME-NGFF", "type": "object", diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index e4e4ff6f..3ecbc7f5 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/coordinate_transformations.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_transformations.schema", "title": "NGFF Coordinate Systems and Transforms", "description": "Coordinate Systems and transforms for OME-NGFF", "type": "array", diff --git a/ngff_spec/schemas/image.schema b/ngff_spec/schemas/image.schema index 4623f826..ff10c7cb 100644 --- a/ngff_spec/schemas/image.schema +++ b/ngff_spec/schemas/image.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/image.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema", "title": "OME-Zarr Image", "description": "The zarr.json attributes key", "type": "object", @@ -16,7 +16,7 @@ "$ref": "#/$defs/omero" }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" } }, "required": [ @@ -60,7 +60,7 @@ "version": { "type": "string", "enum": [ - "0.6.dev1" + "0.6.dev2" ] }, "coordinateSystems": { diff --git a/ngff_spec/schemas/label.schema b/ngff_spec/schemas/label.schema index 5692edca..4ab19c27 100644 --- a/ngff_spec/schemas/label.schema +++ b/ngff_spec/schemas/label.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/label.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/label.schema", "title": "OME-Zarr labelled image schema", "description": "The zarr.json attributes key", "type": "object", @@ -13,7 +13,7 @@ "$ref": "#/$defs/image-label" }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" } }, "required": [ diff --git a/ngff_spec/schemas/ome.schema b/ngff_spec/schemas/ome.schema index 2a3e5fa2..75b92648 100644 --- a/ngff_spec/schemas/ome.schema +++ b/ngff_spec/schemas/ome.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/ome.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome.schema", "title": "OME-Zarr group produced by bioformats2raw to contain OME metadata", "description": "The zarr.json attributes key", "type": "object", @@ -18,7 +18,7 @@ "minContains": 1 }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" } }, "required": [ diff --git a/ngff_spec/schemas/ome_zarr.schema b/ngff_spec/schemas/ome_zarr.schema index 632d0192..47c80c0d 100644 --- a/ngff_spec/schemas/ome_zarr.schema +++ b/ngff_spec/schemas/ome_zarr.schema @@ -1,24 +1,24 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/ome_zarr.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome_zarr.schema", "anyOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/bf2raw.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/bf2raw.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/label.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/ome.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/plate.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/well.schema" } ] } diff --git a/ngff_spec/schemas/plate.schema b/ngff_spec/schemas/plate.schema index e1626a27..382093f7 100644 --- a/ngff_spec/schemas/plate.schema +++ b/ngff_spec/schemas/plate.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/plate.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/plate.schema", "title": "OME-Zarr plate schema", "description": "The zarr.json attributes key", "type": "object", @@ -138,7 +138,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" } }, "required": [ diff --git a/ngff_spec/schemas/strict_axes.schema b/ngff_spec/schemas/strict_axes.schema index 522602d2..7420293d 100644 --- a/ngff_spec/schemas/strict_axes.schema +++ b/ngff_spec/schemas/strict_axes.schema @@ -1,11 +1,11 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/strict_axes.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_axes.schema", "title": "NGFF Strict Axes", "description": "JSON from OME-NGFF .zattrs", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/axes.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/axes.schema" }, { "items": { diff --git a/ngff_spec/schemas/strict_coordinate_systems.schema b/ngff_spec/schemas/strict_coordinate_systems.schema index 425ccbe5..e39c5955 100644 --- a/ngff_spec/schemas/strict_coordinate_systems.schema +++ b/ngff_spec/schemas/strict_coordinate_systems.schema @@ -1,5 +1,5 @@ { - "$id": "https://ngff.openmicroscopy.org/latest/schemas/strict_coordinate_systems.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_coordinate_systems.schema", "allOf" : [ { "$ref": "coordinate_systems.schema" diff --git a/ngff_spec/schemas/strict_image.schema b/ngff_spec/schemas/strict_image.schema index 4c51c95e..d0508687 100644 --- a/ngff_spec/schemas/strict_image.schema +++ b/ngff_spec/schemas/strict_image.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/strict_image.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_image.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema" }, { "properties": { diff --git a/ngff_spec/schemas/strict_label.schema b/ngff_spec/schemas/strict_label.schema index 90e510c0..73625010 100644 --- a/ngff_spec/schemas/strict_label.schema +++ b/ngff_spec/schemas/strict_label.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/strict_label.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_label.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/label.schema" }, { "properties": { diff --git a/ngff_spec/schemas/strict_plate.schema b/ngff_spec/schemas/strict_plate.schema index 2fe258ce..532d5dfc 100644 --- a/ngff_spec/schemas/strict_plate.schema +++ b/ngff_spec/schemas/strict_plate.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/strict_plate.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_plate.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/plate.schema" }, { "properties": { diff --git a/ngff_spec/schemas/strict_well.schema b/ngff_spec/schemas/strict_well.schema index df7ad6c8..57018470 100644 --- a/ngff_spec/schemas/strict_well.schema +++ b/ngff_spec/schemas/strict_well.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/strict_well.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_well.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/well.schema" } ] } diff --git a/ngff_spec/schemas/well.schema b/ngff_spec/schemas/well.schema index f623adc4..9985430f 100644 --- a/ngff_spec/schemas/well.schema +++ b/ngff_spec/schemas/well.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/well.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/well.schema", "title": "OME-Zarr well schema", "description": "JSON from OME-Zarr zarr.json", "type": "object", @@ -41,7 +41,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev1/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" } }, "required": [ From 10e8e9fe7c10cab7c0878a74cbf893a4ad46cce5 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:28:59 +0200 Subject: [PATCH 12/26] fix paths and versions --- tests/test_validation.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_validation.py b/tests/test_validation.py index c2844f1a..163d7dde 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -11,13 +11,13 @@ from jsonschema.exceptions import ValidationError schema_store = {} -for schema_filename in glob.glob("schemas/*"): +for schema_filename in glob.glob("ngff_spec/schemas/*"): with open(schema_filename) as f: schema = json.load(f) schema_store[schema["$id"]] = schema GENERIC_SCHEMA = schema_store[ - "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema" + "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome_zarr.schema" ] print(schema_store) @@ -61,7 +61,7 @@ def pytest_generate_tests(metafunc): suites: List[Schema] = [] ids: List[str] = [] schema_store = {} - for filename in glob.glob("schemas/*.schema"): + for filename in glob.glob("ngff_spec/schemas/*.schema"): with open(filename) as o: schema = json.load(o) schema_store[schema["$id"]] = schema @@ -121,7 +121,7 @@ def test_example_configs(): Test that all example folders have a config file """ missing = [] - for subdir in os.walk("examples"): + for subdir in os.walk("ngff_spec/examples"): has_examples = glob.glob(f"{subdir[0]}/*.json") has_config = glob.glob(f"{subdir[0]}/.config.json") if has_examples and not has_config: From d15301ed97e10bbaac0c064d1ac49437d82f79e6 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:32:24 +0200 Subject: [PATCH 13/26] pull schema from correct location --- tests/image_suite.json | 2 +- tests/label_suite.json | 2 +- tests/plate_suite.json | 2 +- tests/strict_image_suite.json | 2 +- tests/strict_label_suite.json | 2 +- tests/strict_plate_suite.json | 2 +- tests/strict_well_suite.json | 2 +- tests/well_suite.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/image_suite.json b/tests/image_suite.json index df359ce4..b407a58d 100644 --- a/tests/image_suite.json +++ b/tests/image_suite.json @@ -1,7 +1,7 @@ { "description": "TBD", "schema": { - "id": "schemas/image.schema" + "id": "ngff_spec/schemas/image.schema" }, "tests": [ { diff --git a/tests/label_suite.json b/tests/label_suite.json index 66a2d35d..ac438cb0 100644 --- a/tests/label_suite.json +++ b/tests/label_suite.json @@ -1,7 +1,7 @@ { "description": "Tests for the image-label JSON schema", "schema": { - "id": "schemas/label.schema" + "id": "ngff_spec/schemas/label.schema" }, "tests": [ { diff --git a/tests/plate_suite.json b/tests/plate_suite.json index 3db70de7..61c36d97 100644 --- a/tests/plate_suite.json +++ b/tests/plate_suite.json @@ -1,7 +1,7 @@ { "description": "Tests for the plate JSON schema", "schema": { - "id": "schemas/plate.schema" + "id": "ngff_spec/schemas/plate.schema" }, "tests": [ { diff --git a/tests/strict_image_suite.json b/tests/strict_image_suite.json index b52fd2d3..ed297f82 100644 --- a/tests/strict_image_suite.json +++ b/tests/strict_image_suite.json @@ -1,7 +1,7 @@ { "description": "TBD", "schema": { - "id": "schemas/strict_image.schema" + "id": "ngff_spec/schemas/strict_image.schema" }, "tests": [ { diff --git a/tests/strict_label_suite.json b/tests/strict_label_suite.json index 1b3535c2..f06f4027 100644 --- a/tests/strict_label_suite.json +++ b/tests/strict_label_suite.json @@ -1,7 +1,7 @@ { "description": "Tests for the strict image-label JSON schema", "schema": { - "id": "schemas/strict_label.schema" + "id": "ngff_spec/schemas/strict_label.schema" }, "tests": [ { diff --git a/tests/strict_plate_suite.json b/tests/strict_plate_suite.json index 7cea0747..49cdecfc 100644 --- a/tests/strict_plate_suite.json +++ b/tests/strict_plate_suite.json @@ -1,7 +1,7 @@ { "description": "Tests for the strict plate JSON schema", "schema": { - "id": "schemas/strict_plate.schema" + "id": "ngff_spec/schemas/strict_plate.schema" }, "tests": [ { diff --git a/tests/strict_well_suite.json b/tests/strict_well_suite.json index f56b6c24..9eb62010 100644 --- a/tests/strict_well_suite.json +++ b/tests/strict_well_suite.json @@ -1,7 +1,7 @@ { "description": "Tests for the strict well JSON schema", "schema": { - "id": "schemas/strict_well.schema" + "id": "ngff_spec/schemas/strict_well.schema" }, "tests": [ { diff --git a/tests/well_suite.json b/tests/well_suite.json index 7fbf8ca2..cce25abf 100644 --- a/tests/well_suite.json +++ b/tests/well_suite.json @@ -1,7 +1,7 @@ { "description": "Tests for the well JSON schema", "schema": { - "id": "schemas/well.schema" + "id": "ngff_spec/schemas/well.schema" }, "tests": [ { From 40bf356409a1749a206e9e096998a0758e203ea3 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:40:05 +0200 Subject: [PATCH 14/26] Added action to run the tests --- .github/workflows/validation.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/validation.yml diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml new file mode 100644 index 00000000..2e2ab584 --- /dev/null +++ b/.github/workflows/validation.yml @@ -0,0 +1,16 @@ +name: Validation +on: + push: + pull_request: + +jobs: + validate: + name: Validation + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - run: python -mpip install --upgrade wheel tox + - run: tox \ No newline at end of file From ff3fedd4143d888ad5f107969042851ea86dc271 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:44:01 +0200 Subject: [PATCH 15/26] update config reference --- tests/test_validation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_validation.py b/tests/test_validation.py index 163d7dde..f4178574 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -78,7 +78,7 @@ def pytest_generate_tests(metafunc): suites.append(Suite(schema, test["data"], test["valid"])) # Examples - for config_filename in glob.glob("examples/*/.config.json"): + for config_filename in glob.glob("ngff_spec/examples/*/.config.json"): with open(config_filename) as o: data = json.load(o) schema = data["schema"] From bad006bddbb68bc94aaba0535fd934ac66894461 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:46:44 +0200 Subject: [PATCH 16/26] update versions in test suite --- tests/image_suite.json | 56 ++++++++++++++++---------------- tests/label_suite.json | 18 +++++------ tests/plate_suite.json | 60 +++++++++++++++++------------------ tests/strict_image_suite.json | 10 +++--- tests/strict_label_suite.json | 2 +- tests/strict_plate_suite.json | 10 +++--- tests/strict_well_suite.json | 4 +-- tests/well_suite.json | 4 +-- 8 files changed, 82 insertions(+), 82 deletions(-) diff --git a/tests/image_suite.json b/tests/image_suite.json index b407a58d..72735036 100644 --- a/tests/image_suite.json +++ b/tests/image_suite.json @@ -9,7 +9,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -51,7 +51,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -91,7 +91,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -128,7 +128,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "datasets": [ @@ -174,7 +174,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -215,7 +215,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -252,7 +252,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -287,7 +287,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -324,7 +324,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -361,7 +361,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -412,7 +412,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -466,7 +466,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -501,7 +501,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -533,7 +533,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -572,7 +572,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -609,7 +609,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -652,7 +652,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -683,7 +683,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -710,7 +710,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -736,7 +736,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "datasets": [ @@ -761,7 +761,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -798,7 +798,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -839,7 +839,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [], @@ -865,7 +865,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -908,7 +908,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [] } }, @@ -919,7 +919,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -973,7 +973,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -1005,7 +1005,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ diff --git a/tests/label_suite.json b/tests/label_suite.json index ac438cb0..ceeb9842 100644 --- a/tests/label_suite.json +++ b/tests/label_suite.json @@ -8,7 +8,7 @@ "formerly": "image-label/minimal", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "colors": [ { @@ -25,7 +25,7 @@ "formerly": "image-label/minimal_properties", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "colors": [ { @@ -47,7 +47,7 @@ "formerly": "image-label/empty_colors", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "colors": [] } @@ -59,7 +59,7 @@ "formerly": "image-label/empty_properties", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "properties": [] } @@ -71,7 +71,7 @@ "formerly": "image-label/colors_no_label_value", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "colors": [ { @@ -87,7 +87,7 @@ "formerly": "image-label/properties_no_label_value", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "properties": [ { @@ -103,7 +103,7 @@ "formerly": "image-label/colors_rgba_length", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "colors": [ { @@ -120,7 +120,7 @@ "formerly": "image-label/colors_rgba_type", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "colors": [ { @@ -137,7 +137,7 @@ "formerly": "image-label/colors_duplicate", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": { "colors": [ { diff --git a/tests/plate_suite.json b/tests/plate_suite.json index 61c36d97..70bbf3ff 100644 --- a/tests/plate_suite.json +++ b/tests/plate_suite.json @@ -8,7 +8,7 @@ "formerly": "plate/minimal_no_acquisitions", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -36,7 +36,7 @@ "formerly": "plate/minimal_acquisitions", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -69,7 +69,7 @@ "formerly": "plate/missing_rows", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -92,7 +92,7 @@ "formerly": "plate/empty_rows", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -116,7 +116,7 @@ "formerly": "plate/duplicate_rows", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -147,7 +147,7 @@ "formerly": "plate/missing_columns", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "rows": [ { @@ -170,7 +170,7 @@ "formerly": "plate/empty_columns", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [], "rows": [ @@ -194,7 +194,7 @@ "formerly": "plate/duplicate_columns", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -225,7 +225,7 @@ "formerly": "plate/missing_wells", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -246,7 +246,7 @@ "formerly": "plate/empty_wells", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -268,7 +268,7 @@ "formerly": "plate/duplicate_rows", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -304,7 +304,7 @@ "formerly": "plate/missing_column_name", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -332,7 +332,7 @@ "formerly": "plate/missing_row_name", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -360,7 +360,7 @@ "formerly": "plate/missing_well_path", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -387,7 +387,7 @@ "formerly": "plate/missing_well_rowIndex", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -414,7 +414,7 @@ "formerly": "plate/missing_well_columnIndex", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -441,7 +441,7 @@ "formerly": "plate/well_1group", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -468,7 +468,7 @@ "formerly": "plate/well_3groups", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -495,7 +495,7 @@ "formerly": "plate/non_alphanumeric_column", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -523,7 +523,7 @@ "formerly": "plate/non_alphanumeric_row", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -551,7 +551,7 @@ "formerly": "plate/missing_acquisition_id", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -584,7 +584,7 @@ "formerly": "plate/non_integer_acquisition_id", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -617,7 +617,7 @@ "formerly": "plate/negative_acquisition_id", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -650,7 +650,7 @@ "formerly": "plate/non_integer_acquisition_maximumfieldcount", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -684,7 +684,7 @@ "formerly": "plate/acquisition_zero_maximumfieldcount", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -718,7 +718,7 @@ "formerly": "plate/acquisition_noninteger_starttime", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -752,7 +752,7 @@ "formerly": "plate/acquisition_negative_starttime", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -786,7 +786,7 @@ "formerly": "plate/acquisition_noninteger_endtime", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -820,7 +820,7 @@ "formerly": "plate/negative_endtime", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -854,7 +854,7 @@ "formerly": "plate/zero_field_count", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { diff --git a/tests/strict_image_suite.json b/tests/strict_image_suite.json index ed297f82..eb209701 100644 --- a/tests/strict_image_suite.json +++ b/tests/strict_image_suite.json @@ -9,7 +9,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "name": "example", @@ -95,7 +95,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -143,7 +143,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "@id": "top", "@type": "ngff:Image", "multiscales": [ @@ -193,7 +193,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ @@ -235,7 +235,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { "axes": [ diff --git a/tests/strict_label_suite.json b/tests/strict_label_suite.json index f06f4027..d72dc241 100644 --- a/tests/strict_label_suite.json +++ b/tests/strict_label_suite.json @@ -8,7 +8,7 @@ "formerly": "image-label/no_colors", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "image-label": {} } }, diff --git a/tests/strict_plate_suite.json b/tests/strict_plate_suite.json index 49cdecfc..7a994108 100644 --- a/tests/strict_plate_suite.json +++ b/tests/strict_plate_suite.json @@ -8,7 +8,7 @@ "formerly": "plate/strict_no_acquisitions", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -37,7 +37,7 @@ "formerly": "plate/missing_name", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "columns": [ { @@ -65,7 +65,7 @@ "formerly": "plate/strict_acquisitions", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -101,7 +101,7 @@ "formerly": "plate/missing_acquisition_name", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { @@ -136,7 +136,7 @@ "formerly": "plate/missing_acquisition_maximumfieldcount", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "plate": { "acquisitions": [ { diff --git a/tests/strict_well_suite.json b/tests/strict_well_suite.json index 9eb62010..ee10a2c0 100644 --- a/tests/strict_well_suite.json +++ b/tests/strict_well_suite.json @@ -8,7 +8,7 @@ "formerly": "well/strict_no_acquisitions", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "well": { "images": [ { @@ -24,7 +24,7 @@ "formerly": "plate/strict_acquisitions", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "well": { "images": [ { diff --git a/tests/well_suite.json b/tests/well_suite.json index cce25abf..9f9fe663 100644 --- a/tests/well_suite.json +++ b/tests/well_suite.json @@ -8,7 +8,7 @@ "formerly": "well/minimal_no_acquisition", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "well": { "images": [ { @@ -24,7 +24,7 @@ "formerly": "well/minimal_acquisitions", "data": { "ome": { - "version": "0.5", + "version": "0.6dev2", "well": { "images": [ { From 7e97f37524e7ede46d770034007b3b19751be233 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:52:39 +0200 Subject: [PATCH 17/26] Revert "update config reference" This reverts commit ff3fedd4143d888ad5f107969042851ea86dc271. --- tests/test_validation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_validation.py b/tests/test_validation.py index f4178574..163d7dde 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -78,7 +78,7 @@ def pytest_generate_tests(metafunc): suites.append(Suite(schema, test["data"], test["valid"])) # Examples - for config_filename in glob.glob("ngff_spec/examples/*/.config.json"): + for config_filename in glob.glob("examples/*/.config.json"): with open(config_filename) as o: data = json.load(o) schema = data["schema"] From f0cd2ac0c581ca74fb285cc69fa8645270e38ce5 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 28 Oct 2025 14:05:37 +0100 Subject: [PATCH 18/26] update all version references to "0.6dev2" --- ngff_spec/schemas/_version.schema | 4 ++-- ngff_spec/schemas/bf2raw.schema | 4 ++-- ngff_spec/schemas/coordinate_systems.schema | 2 +- .../coordinate_systems_and_transforms.schema | 2 +- .../schemas/coordinate_transformations.schema | 2 +- ngff_spec/schemas/image.schema | 6 +++--- ngff_spec/schemas/label.schema | 4 ++-- ngff_spec/schemas/ome.schema | 4 ++-- ngff_spec/schemas/ome_zarr.schema | 14 +++++++------- ngff_spec/schemas/plate.schema | 4 ++-- ngff_spec/schemas/strict_axes.schema | 4 ++-- ngff_spec/schemas/strict_coordinate_systems.schema | 2 +- ngff_spec/schemas/strict_image.schema | 4 ++-- ngff_spec/schemas/strict_label.schema | 4 ++-- ngff_spec/schemas/strict_plate.schema | 4 ++-- ngff_spec/schemas/strict_well.schema | 4 ++-- ngff_spec/schemas/well.schema | 4 ++-- 17 files changed, 36 insertions(+), 36 deletions(-) diff --git a/ngff_spec/schemas/_version.schema b/ngff_spec/schemas/_version.schema index f1541e9f..b20a6702 100644 --- a/ngff_spec/schemas/_version.schema +++ b/ngff_spec/schemas/_version.schema @@ -1,10 +1,10 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/_version.schema", "title": "OME-Zarr Metadata version", "description": "The version of the OME-Zarr Metadata", "type": "string", "enum": [ - "0.6.dev2" + "0.6dev2" ] } diff --git a/ngff_spec/schemas/bf2raw.schema b/ngff_spec/schemas/bf2raw.schema index 2f92993b..edcfaaac 100644 --- a/ngff_spec/schemas/bf2raw.schema +++ b/ngff_spec/schemas/bf2raw.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/bf2raw.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/bf2raw.schema", "title": "OME-Zarr container produced by bioformats2raw", "description": "The zarr.json attributes key", "type": "object", @@ -17,7 +17,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/_version.schema" } }, "required": [ diff --git a/ngff_spec/schemas/coordinate_systems.schema b/ngff_spec/schemas/coordinate_systems.schema index 7ce4460e..f42d5b9a 100644 --- a/ngff_spec/schemas/coordinate_systems.schema +++ b/ngff_spec/schemas/coordinate_systems.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_systems.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/coordinate_systems.schema", "title": "NGFF CoordinateSystem", "description": "JSON from OME-NGFF .zattrs", "type": "array", diff --git a/ngff_spec/schemas/coordinate_systems_and_transforms.schema b/ngff_spec/schemas/coordinate_systems_and_transforms.schema index 715b6fe9..fd6b4b15 100644 --- a/ngff_spec/schemas/coordinate_systems_and_transforms.schema +++ b/ngff_spec/schemas/coordinate_systems_and_transforms.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_systems_and_transforms.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/coordinate_systems_and_transforms.schema", "title": "NGFF Coordinate Systems and Transforms", "description": "Coordinate Systems and transforms for OME-NGFF", "type": "object", diff --git a/ngff_spec/schemas/coordinate_transformations.schema b/ngff_spec/schemas/coordinate_transformations.schema index 3ecbc7f5..20dce275 100644 --- a/ngff_spec/schemas/coordinate_transformations.schema +++ b/ngff_spec/schemas/coordinate_transformations.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_transformations.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/coordinate_transformations.schema", "title": "NGFF Coordinate Systems and Transforms", "description": "Coordinate Systems and transforms for OME-NGFF", "type": "array", diff --git a/ngff_spec/schemas/image.schema b/ngff_spec/schemas/image.schema index ff10c7cb..5c534952 100644 --- a/ngff_spec/schemas/image.schema +++ b/ngff_spec/schemas/image.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/image.schema", "title": "OME-Zarr Image", "description": "The zarr.json attributes key", "type": "object", @@ -16,7 +16,7 @@ "$ref": "#/$defs/omero" }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/_version.schema" } }, "required": [ @@ -60,7 +60,7 @@ "version": { "type": "string", "enum": [ - "0.6.dev2" + "0.6dev2" ] }, "coordinateSystems": { diff --git a/ngff_spec/schemas/label.schema b/ngff_spec/schemas/label.schema index 4ab19c27..7f234ed8 100644 --- a/ngff_spec/schemas/label.schema +++ b/ngff_spec/schemas/label.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/label.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/label.schema", "title": "OME-Zarr labelled image schema", "description": "The zarr.json attributes key", "type": "object", @@ -13,7 +13,7 @@ "$ref": "#/$defs/image-label" }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/_version.schema" } }, "required": [ diff --git a/ngff_spec/schemas/ome.schema b/ngff_spec/schemas/ome.schema index 75b92648..9a44f6bc 100644 --- a/ngff_spec/schemas/ome.schema +++ b/ngff_spec/schemas/ome.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/ome.schema", "title": "OME-Zarr group produced by bioformats2raw to contain OME metadata", "description": "The zarr.json attributes key", "type": "object", @@ -18,7 +18,7 @@ "minContains": 1 }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/_version.schema" } }, "required": [ diff --git a/ngff_spec/schemas/ome_zarr.schema b/ngff_spec/schemas/ome_zarr.schema index 47c80c0d..2ce06ac6 100644 --- a/ngff_spec/schemas/ome_zarr.schema +++ b/ngff_spec/schemas/ome_zarr.schema @@ -1,24 +1,24 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome_zarr.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/ome_zarr.schema", "anyOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/bf2raw.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/bf2raw.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/image.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/label.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/ome.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/plate.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/well.schema" } ] } diff --git a/ngff_spec/schemas/plate.schema b/ngff_spec/schemas/plate.schema index 382093f7..06d7edb0 100644 --- a/ngff_spec/schemas/plate.schema +++ b/ngff_spec/schemas/plate.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/plate.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/plate.schema", "title": "OME-Zarr plate schema", "description": "The zarr.json attributes key", "type": "object", @@ -138,7 +138,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/_version.schema" } }, "required": [ diff --git a/ngff_spec/schemas/strict_axes.schema b/ngff_spec/schemas/strict_axes.schema index 7420293d..f6bab275 100644 --- a/ngff_spec/schemas/strict_axes.schema +++ b/ngff_spec/schemas/strict_axes.schema @@ -1,11 +1,11 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_axes.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/strict_axes.schema", "title": "NGFF Strict Axes", "description": "JSON from OME-NGFF .zattrs", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/axes.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/axes.schema" }, { "items": { diff --git a/ngff_spec/schemas/strict_coordinate_systems.schema b/ngff_spec/schemas/strict_coordinate_systems.schema index e39c5955..99474ce0 100644 --- a/ngff_spec/schemas/strict_coordinate_systems.schema +++ b/ngff_spec/schemas/strict_coordinate_systems.schema @@ -1,5 +1,5 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_coordinate_systems.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/strict_coordinate_systems.schema", "allOf" : [ { "$ref": "coordinate_systems.schema" diff --git a/ngff_spec/schemas/strict_image.schema b/ngff_spec/schemas/strict_image.schema index d0508687..812f706f 100644 --- a/ngff_spec/schemas/strict_image.schema +++ b/ngff_spec/schemas/strict_image.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_image.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/strict_image.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/image.schema" }, { "properties": { diff --git a/ngff_spec/schemas/strict_label.schema b/ngff_spec/schemas/strict_label.schema index 73625010..90daf564 100644 --- a/ngff_spec/schemas/strict_label.schema +++ b/ngff_spec/schemas/strict_label.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_label.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/strict_label.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/label.schema" }, { "properties": { diff --git a/ngff_spec/schemas/strict_plate.schema b/ngff_spec/schemas/strict_plate.schema index 532d5dfc..7b91ff38 100644 --- a/ngff_spec/schemas/strict_plate.schema +++ b/ngff_spec/schemas/strict_plate.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_plate.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/strict_plate.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/plate.schema" }, { "properties": { diff --git a/ngff_spec/schemas/strict_well.schema b/ngff_spec/schemas/strict_well.schema index 57018470..1192acda 100644 --- a/ngff_spec/schemas/strict_well.schema +++ b/ngff_spec/schemas/strict_well.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_well.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/strict_well.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/well.schema" } ] } diff --git a/ngff_spec/schemas/well.schema b/ngff_spec/schemas/well.schema index 9985430f..f81fafa9 100644 --- a/ngff_spec/schemas/well.schema +++ b/ngff_spec/schemas/well.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/well.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/well.schema", "title": "OME-Zarr well schema", "description": "JSON from OME-Zarr zarr.json", "type": "object", @@ -41,7 +41,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/_version.schema" } }, "required": [ From 571908286657343ee253792b145baf155fc6a1fd Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 28 Oct 2025 14:05:54 +0100 Subject: [PATCH 19/26] update version reference --- ngff_spec/schemas/axes.schema | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ngff_spec/schemas/axes.schema b/ngff_spec/schemas/axes.schema index 2822fe96..da175c4a 100644 --- a/ngff_spec/schemas/axes.schema +++ b/ngff_spec/schemas/axes.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/axes.schema", + "$id": "https://ngff.openmicroscopy.org/0.6dev2/schemas/axes.schema", "title": "NGFF Axes", "description": "JSON from OME-NGFF .zattrs", "type": "array", From 57bbfbaaa1acab31589115b49c3fcbe15af2f238 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 28 Oct 2025 14:06:07 +0100 Subject: [PATCH 20/26] at least two spatial axes --- ngff_spec/schemas/axes.schema | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ngff_spec/schemas/axes.schema b/ngff_spec/schemas/axes.schema index da175c4a..6d52777a 100644 --- a/ngff_spec/schemas/axes.schema +++ b/ngff_spec/schemas/axes.schema @@ -27,7 +27,7 @@ } } }, - "minContains": 0, + "minContains": 2, "maxContains": 3, "$defs": { "axis": { From 7691cb77d2912c4511a0c0de68d23ece8ee27466 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 28 Oct 2025 14:06:16 +0100 Subject: [PATCH 21/26] allow any axis type --- ngff_spec/schemas/axes.schema | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/ngff_spec/schemas/axes.schema b/ngff_spec/schemas/axes.schema index 6d52777a..aae81f23 100644 --- a/ngff_spec/schemas/axes.schema +++ b/ngff_spec/schemas/axes.schema @@ -44,15 +44,7 @@ }, "type": { "type": "string", - "description": "Type of the axis. Should be one of the predefined types.", - "enum": [ - "array", - "space", - "time", - "channel", - "coordinate", - "displacement" - ] + "description": "Type of the axis. Can be a predefined type or custom type." }, "discrete": { "type": "boolean", From 5c8bb7d43b77a8dea2b870399f85c2cb7d4de85e Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 28 Oct 2025 14:06:36 +0100 Subject: [PATCH 22/26] update version reference --- tests/test_validation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_validation.py b/tests/test_validation.py index 163d7dde..5de3ecb7 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -17,7 +17,7 @@ schema_store[schema["$id"]] = schema GENERIC_SCHEMA = schema_store[ - "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome_zarr.schema" + "https://ngff.openmicroscopy.org/0.6dev2/schemas/ome_zarr.schema" ] print(schema_store) From fd09279b374be5024e9cc94916576611736fd5d5 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:39:05 +0100 Subject: [PATCH 23/26] 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. --- ngff_spec/schemas/axes.schema | 1 + 1 file changed, 1 insertion(+) diff --git a/ngff_spec/schemas/axes.schema b/ngff_spec/schemas/axes.schema index aae81f23..3ed096da 100644 --- a/ngff_spec/schemas/axes.schema +++ b/ngff_spec/schemas/axes.schema @@ -6,6 +6,7 @@ "type": "array", "uniqueItems": true, "minItems": 1, + "maxItems": 5, "items": { "$ref": "#/$defs/axis" }, From b428ee29b6b03e1394cf9e82377bc827168fdbdd Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:39:35 +0100 Subject: [PATCH 24/26] 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. --- ngff_spec/schemas/image.schema | 46 +++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/ngff_spec/schemas/image.schema b/ngff_spec/schemas/image.schema index 5c534952..d50dc6af 100644 --- a/ngff_spec/schemas/image.schema +++ b/ngff_spec/schemas/image.schema @@ -48,7 +48,13 @@ "type": "string" }, "coordinateTransformations": { - "$ref": "coordinate_transformations.schema" + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/$defs/multiscale_coordinateTransformations" + }, + "minItems": 1, + "maxItems": 1 } }, "required": [ @@ -64,10 +70,18 @@ ] }, "coordinateSystems": { - "$ref": "coordinate_systems.schema" + "type": "array", + "minItems": 1, + "items": { + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/coordinate_systems.schema#/$defs/coordinateSystem" + } }, "coordinateTransformations": { - "$ref": "coordinate_transformations.schema" + "type": "array", + "minItems": 1, + "items": { + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/coordinate_transformations.schema#/$defs/coordinateTransformation" + } } }, "required": [ @@ -77,6 +91,32 @@ "minItems": 1, "uniqueItems": true }, + "multiscale_coordinateTransformations": { + "description": "OME-NGFF coordinate transformation for multiscale resolution level datasets (only scale or scale & translate).", + "oneOf": [ + {"$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/coordinate_transformations.schema#/$defs/scale"}, + { + "type": "object", + "properties": { + "type": {"const": "sequence"}, + "transformations": { + "type": "array", + "items": { + "oneOf": [ + {"$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/coordinate_transformations.schema#/$defs/scale"}, + {"$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/coordinate_transformations.schema#/$defs/translation"} + ] + }, + "minItems": 2, + "maxItems": 2 + }, + "input": {"type": "string"}, + "output": {"type": "string"} + }, + "required": ["type", "transformations", "input", "output"] + } + ] + }, "omero": { "type": "object", "properties": { From 7b32f3ac1ad09dfb5ad125592bab218c8be2002e Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:39:53 +0100 Subject: [PATCH 25/26] 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. --- .../multiscales_example.json | 2 +- .../multiscales_example_relative.json | 56 +- .../multiscales_transformations.json | 44 +- tests/image_suite.json | 722 +++++++++++------- tests/strict_image_suite.json | 286 +++++-- 5 files changed, 714 insertions(+), 396 deletions(-) diff --git a/ngff_spec/examples/multiscales_strict/multiscales_example.json b/ngff_spec/examples/multiscales_strict/multiscales_example.json index 55799eb2..a07d34d1 100644 --- a/ngff_spec/examples/multiscales_strict/multiscales_example.json +++ b/ngff_spec/examples/multiscales_strict/multiscales_example.json @@ -57,7 +57,7 @@ "input": "2", "output": "physical" } - ] + ] } ], "type": "gaussian", diff --git a/ngff_spec/examples/multiscales_strict/multiscales_example_relative.json b/ngff_spec/examples/multiscales_strict/multiscales_example_relative.json index 5b83bd4b..8bd828c9 100644 --- a/ngff_spec/examples/multiscales_strict/multiscales_example_relative.json +++ b/ngff_spec/examples/multiscales_strict/multiscales_example_relative.json @@ -1,21 +1,21 @@ { "multiscales": [ { - "version": "0.5-dev", + "version": "0.6dev2", "name": "example", "coordinateSystems" : [ { - "name" : "exampleCoordinateSystem", - "axes": [ - {"name": "t", "type": "time", "unit": "millisecond"}, - {"name": "c", "type": "channel"}, - {"name": "z", "type": "space", "unit": "micrometer"}, - {"name": "y", "type": "space", "unit": "micrometer"}, - {"name": "x", "type": "space", "unit": "micrometer"} - ] + "name" : "world", + "axes": { + "t": {"type": "time", "unit": "millisecond"}, + "c": {"type": "channel"}, + "z": {"type": "space", "unit": "micrometer"}, + "y": {"type": "space", "unit": "micrometer"}, + "x": {"type": "space", "unit": "micrometer"} + } }, { - "name" : "array_0", + "name" : "intrinsic", "axes": [ {"name": "t", "type": "time", "unit": "millisecond"}, {"name": "c", "type": "channel"}, @@ -27,12 +27,14 @@ ], "datasets": [ { - "path": "0", - // the transformation of other arrays are defined relative to this, the highest resolution, array + "path": "s0", + // the transformation of other arrays are + // defined relative to this, the highest resolution, array "coordinateTransformations": [{ - "type": "identity", - "input": "/0", - "output": "array_0" + "type": "scale", + "scale": [1, 1, 1, 1, 1], + "input": "s0", + "output": "intrinsic" }] }, { @@ -56,21 +58,15 @@ }] } ], - "coordinateTransformations": [{ - // the time unit (0.1 milliseconds), the voxel size for all spatial axes of "0" (0.5 micrometers) - "type": "scale", - "scale": [0.1, 1.0, 0.5, 0.5, 0.5], - "input" : "array_0", - "output" : "exampleCoordinateSystem" - }], - "type": "gaussian", - "metadata": { - "description": "the fields in metadata depend on the downscaling implementation. Here, the parameters passed to the skimage function are given", - "method": "skimage.transform.pyramid_gaussian", - "version": "0.16.1", - "args": "[true]", - "kwargs": {"multichannel": true} - } + "coordinateTransformations": [ + { + "name": "additional_translation", + "type": "translation", + "translation": [0, 0, 10, 20, 30], + "input": "intrinsic", + "output": "world" + } + ] } ] } diff --git a/ngff_spec/examples/multiscales_strict/multiscales_transformations.json b/ngff_spec/examples/multiscales_strict/multiscales_transformations.json index e4eb742a..14304c0a 100644 --- a/ngff_spec/examples/multiscales_strict/multiscales_transformations.json +++ b/ngff_spec/examples/multiscales_strict/multiscales_transformations.json @@ -3,19 +3,39 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.5", + "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" + "name": "physical", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] }, { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -24,7 +44,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -32,7 +54,9 @@ "coordinateTransformations": [ { "scale": [10, 10], - "type": "scale" + "type": "scale", + "input": "intrinsic", + "output": "physical" } ], "name": "image_with_coordinateTransformations", diff --git a/tests/image_suite.json b/tests/image_suite.json index 72735036..ee80509b 100644 --- a/tests/image_suite.json +++ b/tests/image_suite.json @@ -12,21 +12,26 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "t", - "type": "time", - "unit": "micrometer" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "t", + "type": "time", + "unit": "micrometer" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -35,7 +40,9 @@ "coordinateTransformations": [ { "scale": [0.13, 0.13], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -54,19 +61,24 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "angle" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "angle" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -75,6 +87,8 @@ "coordinateTransformations": [ { "scale": [1, 1, 1], + "input": "0", + "output": "intrinsic", "type": "scale" } ] @@ -94,24 +108,32 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micron" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micron" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], + "datasets": [ { "path": "0", "coordinateTransformations": [ { "scale": [0.13, 0.13], + "input": "0", + "output": "intrinsic", "type": "scale" } ] @@ -137,7 +159,9 @@ "coordinateTransformations": [ { "type": "scale", - "scale": [1, 1] + "scale": [1, 1], + "input": "path/to/0", + "output": "intrinsic" } ] } @@ -151,16 +175,21 @@ "multichannel": true } }, - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ] } @@ -177,20 +206,25 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "angle", - "type": "custom" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "angle", + "type": "custom" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -199,6 +233,8 @@ "coordinateTransformations": [ { "scale": [1, 1, 1], + "input": "0", + "output": "intrinsic", "type": "scale" } ] @@ -218,25 +254,33 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "x", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], + "datasets": [ { "path": "0", "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -255,23 +299,30 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "t", - "type": "time" - }, + "coordinateSystems": [ { - "name": "c", - "type": "channel" + "name": "intrinsic", + "axes": [ + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + } + ] } - ], + ], "datasets": [ { "path": "0", "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -290,16 +341,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -308,7 +364,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "translation" + "type": "translation", + "input": "0", + "output": "intrinsic" } ] } @@ -327,16 +385,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -345,7 +408,9 @@ "coordinateTransformations": [ { "translation": [1, 1], - "type": "translation" + "type": "translation", + "input": "0", + "output": "intrinsice" } ] } @@ -364,30 +429,35 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "angle", - "type": "custom" - }, - { - "name": "t", - "type": "time" - }, - { - "name": "c", - "type": "channel" - }, - { - "name": "z", - "type": "space" - }, - { - "name": "y", - "type": "space" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space" + "name": "intrinsic", + "axes": [ + { + "name": "angle", + "type": "custom" + }, + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "z", + "type": "space" + }, + { + "name": "y", + "type": "space" + }, + { + "name": "x", + "type": "space" + } + ] } ], "datasets": [ @@ -396,7 +466,9 @@ "coordinateTransformations": [ { "scale": [1, 1, 1, 1, 1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -415,16 +487,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -433,7 +510,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -469,14 +548,19 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "type": "space", - "unit": "micron" - }, + "coordinateSystems": [ { - "type": "space", - "unit": "micron" + "name": "intrinsic", + "axes": [ + { + "type": "space", + "unit": "micrometer" + }, + { + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -485,7 +569,9 @@ "coordinateTransformations": [ { "scale": [0.13, 0.13], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -504,11 +590,16 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -517,7 +608,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -536,18 +629,23 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "t", - "type": "time" - }, + "coordinateSystems": [ { - "name": "c", - "type": "channel" - }, - { - "name": "x", - "type": "space" + "name": "intrinsic", + "axes": [ + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "x", + "type": "space" + } + ] } ], "datasets": [ @@ -556,7 +654,9 @@ "coordinateTransformations": [ { "scale": [1, 1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -575,16 +675,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -593,7 +698,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": 0, + "output": "intrinsic" } ] } @@ -612,16 +719,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -630,7 +742,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -655,16 +769,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -686,16 +805,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [] @@ -713,16 +837,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ] } @@ -745,7 +874,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -764,16 +895,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "invalid", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "invalid", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -782,7 +918,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -801,16 +939,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -819,11 +962,15 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" }, { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -849,7 +996,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -868,22 +1017,27 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "X", - "type": "space" - }, - { - "name": "z", - "type": "space" - }, + "coordinateSystems": [ { - "name": "y", - "type": "space" - }, - { - "name": "x", - "type": "space" + "name": "intrinsic", + "axes": [ + { + "name": "X", + "type": "space" + }, + { + "name": "z", + "type": "space" + }, + { + "name": "y", + "type": "space" + }, + { + "name": "x", + "type": "space" + } + ] } ], "datasets": [ @@ -892,7 +1046,9 @@ "coordinateTransformations": [ { "scale": [1, 1, 1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -922,16 +1078,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -940,7 +1101,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } @@ -976,18 +1139,24 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } - ], + ] + , "datasets": [ { "path": "0", @@ -1008,16 +1177,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -1025,7 +1199,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "intrinsic" } ] } diff --git a/tests/strict_image_suite.json b/tests/strict_image_suite.json index eb209701..486f936c 100644 --- a/tests/strict_image_suite.json +++ b/tests/strict_image_suite.json @@ -13,39 +13,76 @@ "multiscales": [ { "name": "example", - "axes": [ + "coordinateSystems": [ { - "name": "t", - "type": "time", - "unit": "millisecond" - }, - { - "name": "c", - "type": "channel" - }, - { - "name": "z", - "type": "space", - "unit": "micrometer" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" + "name": "world", + "axes": [ + { + "name": "t", + "type": "time", + "unit": "millisecond" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "z", + "type": "space", + "unit": "micrometer" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] }, { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "intrinsic", + "axes": [ + { + "name": "t", + "type": "time", + "unit": "millisecond" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "z", + "type": "space", + "unit": "micrometer" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } - ], + ] + , "datasets": [ { "path": "0", "coordinateTransformations": [ { "type": "scale", - "scale": [1.0, 1.0, 0.5, 0.5, 0.5] + "scale": [1.0, 1.0, 0.5, 0.5, 0.5], + "input": "0", + "output": "intrinsic" } ] }, @@ -54,7 +91,9 @@ "coordinateTransformations": [ { "type": "scale", - "scale": [1.0, 1.0, 1.0, 1.0, 1.0] + "scale": [1.0, 1.0, 1.0, 1.0, 1.0], + "input": "1", + "output": "intrinsic" } ] }, @@ -63,7 +102,9 @@ "coordinateTransformations": [ { "type": "scale", - "scale": [1.0, 1.0, 2.0, 2.0, 2.0] + "scale": [1.0, 1.0, 2.0, 2.0, 2.0], + "input": "2", + "output": "intrinsic" } ] } @@ -71,7 +112,9 @@ "coordinateTransformations": [ { "type": "scale", - "scale": [0.1, 1.0, 1.0, 1.0, 1.0] + "scale": [0.1, 1.0, 1.0, 1.0, 1.0], + "input": "world", + "output": "intrinsic" } ], "type": "gaussian", @@ -98,16 +141,36 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" + "name": "world", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] }, { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "physical", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -116,7 +179,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "physical" } ] } @@ -124,7 +189,9 @@ "coordinateTransformations": [ { "scale": [10, 10], - "type": "scale" + "type": "scale", + "input": "physical", + "output": "world" } ], "name": "image_with_coordinateTransformations", @@ -156,7 +223,9 @@ "coordinateTransformations": [ { "type": "scale", - "scale": [1, 1] + "scale": [1, 1], + "input": "path/to/0", + "output": "physical" } ] } @@ -170,16 +239,21 @@ "multichannel": true } }, - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, + "coordinateSystems": [ { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "physical", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ] } @@ -196,16 +270,21 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ + "coordinateSystems": [ { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "physical", + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -214,7 +293,9 @@ "coordinateTransformations": [ { "scale": [1, 1], - "type": "scale" + "type": "scale", + "input": "0", + "output": "physical" } ] } @@ -238,29 +319,62 @@ "version": "0.6dev2", "multiscales": [ { - "axes": [ - { - "name": "t", - "type": "time" - }, - { - "name": "c", - "type": "channel" - }, + "coordinateSystems": [ { - "name": "z", - "type": "space", - "unit": "micrometer" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" + "name": "world", + "axes": [ + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "z", + "type": "space", + "unit": "micrometer" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] }, { - "name": "x", - "type": "space", - "unit": "micrometer" + "name": "physical", + "axes": [ + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "z", + "type": "space", + "unit": "micrometer" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] } ], "datasets": [ @@ -269,11 +383,9 @@ "coordinateTransformations": [ { "scale": [1, 1, 0.5, 0.13, 0.13], - "type": "scale" - }, - { - "translation": [0, 9, 0.5, 25.74, 21.58], - "type": "translation" + "type": "scale", + "input": "0", + "output": "physical" } ] }, @@ -282,11 +394,21 @@ "coordinateTransformations": [ { "scale": [1, 1, 1, 0.26, 0.26], - "type": "scale" + "type": "scale", + "input": "1", + "output": "physical" } ] } ], + "coordinateTransformations": [ + { + "translation": [0, 9, 0.5, 25.74, 21.58], + "type": "translation", + "input": "intrinsic", + "output": "world" + } + ], "name": "image_with_omero_metadata", "type": "foo", "metadata": { @@ -331,7 +453,7 @@ "defaultZ": 2, "model": "color" }, - "version": "0.5-dev" + "version": "0.6dev2" } } }, From 6ef928e2ba1b49b3c2a52834aab0f3798d480919 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:42:01 +0100 Subject: [PATCH 26/26] fix schema resolution --- ngff_spec/schemas/image.schema | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ngff_spec/schemas/image.schema b/ngff_spec/schemas/image.schema index d50dc6af..d7324d93 100644 --- a/ngff_spec/schemas/image.schema +++ b/ngff_spec/schemas/image.schema @@ -10,10 +10,10 @@ "type": "object", "properties": { "multiscales": { - "$ref": "#/$defs/multiscales" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/image.schema#/$defs/multiscales" }, "omero": { - "$ref": "#/$defs/omero" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/image.schema#/$defs/omero" }, "version": { "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/_version.schema" @@ -51,7 +51,7 @@ "type": "array", "uniqueItems": true, "items": { - "$ref": "#/$defs/multiscale_coordinateTransformations" + "$ref": "https://ngff.openmicroscopy.org/0.6dev2/schemas/image.schema#/$defs/multiscale_coordinateTransformations" }, "minItems": 1, "maxItems": 1