From bd308cb1802d5a9d505248e0bacad23a0f67288c Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 15 Jan 2026 22:56:33 +0100 Subject: [PATCH 01/27] port RFC5 updated proposal to ngff-spec --- .../multiscales_example.json | 12 +- .../multiscales_example_relative.json | 16 +- .../multiscales_transformations.json | 4 +- examples/subspace/subspaceMultidim.json | 121 ++-- examples/subspace/subspacePermute.json | 87 ++- examples/transformations/inverseOf.json | 17 - examples/transformations/mapAxis1.json | 4 +- examples/transformations/mapAxis2.json | 4 +- index.md | 636 +++++++++--------- 9 files changed, 475 insertions(+), 426 deletions(-) delete mode 100644 examples/transformations/inverseOf.json diff --git a/examples/multiscales_strict/multiscales_example.json b/examples/multiscales_strict/multiscales_example.json index b874f281..9fa8e1c4 100644 --- a/examples/multiscales_strict/multiscales_example.json +++ b/examples/multiscales_strict/multiscales_example.json @@ -21,40 +21,40 @@ ], "datasets": [ { - "path": "0", + "path": "s0", "coordinateTransformations": [ { // the voxel size for the first scale level (0.5 micrometer) // and the time unit (0.1 milliseconds), which is the same for each scale level "type": "scale", "scale": [0.1, 1.0, 0.5, 0.5, 0.5], - "input": "0", + "input": "s0", "output": "intrinsic" } ] }, { - "path": "1", + "path": "s1", "coordinateTransformations": [ { // the voxel size for the second scale level (downscaled by a factor of 2 -> 1 micrometer) // and the time unit (0.1 milliseconds), which is the same for each scale level "type": "scale", "scale": [0.1, 1.0, 1.0, 1.0, 1.0], - "input": "1", + "input": "s1", "output": "intrinsic" } ] }, { - "path": "2", + "path": "s2", "coordinateTransformations": [ { // the voxel size for the third scale level (downscaled by a factor of 4 -> 2 micrometer) // and the time unit (0.1 milliseconds), which is the same for each scale level "type": "scale", "scale": [0.1, 1.0, 2.0, 2.0, 2.0], - "input": "2", + "input": "s2", "output": "intrinsic" } ] diff --git a/examples/multiscales_strict/multiscales_example_relative.json b/examples/multiscales_strict/multiscales_example_relative.json index 65a6e9d5..fabf5957 100644 --- a/examples/multiscales_strict/multiscales_example_relative.json +++ b/examples/multiscales_strict/multiscales_example_relative.json @@ -38,23 +38,23 @@ }] }, { - "path": "1", + "path": "s1", "coordinateTransformations": [{ - // the second scale level (downscaled by a factor of 2 relative to "0" in zyx) + // the second scale level (downscaled by a factor of 2 relative to "s0" in zyx) "type": "scale", "scale": [1, 1, 2, 2, 2], - "input" : "/1", - "output" : "array_0" + "input" : "s1", + "output" : "intrinsic" }] }, { - "path": "2", + "path": "s2", "coordinateTransformations": [{ - // the third scale level (downscaled by a factor of 4 relative to "0" in zyx) + // the third scale level (downscaled by a factor of 4 relative to "s0" in zyx) "type": "scale", "scale": [1, 1, 4, 4, 4], - "input" : "/2", - "output" : "array_0" + "input" : "s2", + "output" : "intrinsic" }] } ], diff --git a/examples/multiscales_strict/multiscales_transformations.json b/examples/multiscales_strict/multiscales_transformations.json index 46e60a4c..338faab8 100644 --- a/examples/multiscales_strict/multiscales_transformations.json +++ b/examples/multiscales_strict/multiscales_transformations.json @@ -40,12 +40,12 @@ ], "datasets": [ { - "path": "0", + "path": "s0", "coordinateTransformations": [ { "scale": [1, 1], "type": "scale", - "input": "0", + "input": "s0", "output": "intrinsic" } ] diff --git a/examples/subspace/subspaceMultidim.json b/examples/subspace/subspaceMultidim.json index b2200a47..6264ab51 100644 --- a/examples/subspace/subspaceMultidim.json +++ b/examples/subspace/subspaceMultidim.json @@ -1,44 +1,87 @@ { - "coordinateSystems": [ - { - "name": "in", - "axes": [ - { "name": "0", "type": "array" }, - { "name": "1", "type": "array" }, - { "name": "2", "type": "array" }, - { "name": "3", "type": "array" }, - { "name": "4", "type": "array" } - ] - }, - { - "name": "out", - "axes": [ - { "name": "x", "type": "space" }, - { "name": "y", "type": "space" }, - { "name": "z", "type": "space" } - ] - } - ], - "coordinateTransformations": [ - { - "type": "byDimension", - "name": "5D-to-3D-not-contiguous", - "input": "in", - "output": "out", - "transformations": [ - { - "type": "mapAxis", - "mapAxis": { "0": "x", "2": "z" }, - "input_axes": [ "0", "2" ], - "output_axes": [ "x", "z" ] - }, + "zarr_format": 3, + "node_type": "group", + "attributes": { + "ome": { + "version": "0.6.dev2", + "multiscales": [ { - "type": "scale", - "scale": [ 2 ], - "input_axes": [ "1" ], - "output_axes": [ "y" ] + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + }, + { + "name": "array_coordinates", + "axes": [ + { + "type": "array", + "name": "dim_0", + "discrete": true + }, + { + "type": "array", + "name": "dim_1", + "discrete": true + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "byDimension", + "output": "physical", + "input": "array", + "transformations": [ + { + "type": "scale", + "output_axes": [ + "x" + ], + "input_axes": [ + "dim_1" + ], + "scale": [ + 2 + ] + }, + { + "type": "translation", + "output_axes": [ + "y" + ], + "input_axes": [ + "dim_0" + ], + "translation": [ + -10 + ] + } + ], + "name": "transform-name" + } + ] + } + ] } ] } - ] -} + } +} \ No newline at end of file diff --git a/examples/subspace/subspacePermute.json b/examples/subspace/subspacePermute.json index 4594e8c7..c2752b83 100644 --- a/examples/subspace/subspacePermute.json +++ b/examples/subspace/subspacePermute.json @@ -1,26 +1,71 @@ { - "coordinateSystems" : [ - { "name" : "in", "axes" : [ {"name" : "i"}, {"name" : "j" } ]}, - { "name" : "out", "axes" : [ {"name" : "x"}, {"name" : "y" } ]} - ], - "coordinateTransformations" : [ - { - "type" : "byDimension", - "input" : "in", - "output" : "out", - "transformations" : [ + "zarr_format": 3, + "node_type": "group", + "attributes": { + "ome": { + "version": "0.6.dev2", + "multiscales": [ { - "type": "identity", - "input_axes" : ["j"], - "output_axes" : ["x"] - }, - { - "type": "scale", - "scale" : [2], - "input_axes" : ["i"], - "output_axes" : ["y"] + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + }, + { + "name": "array_coordinates", + "axes": [ + { + "type": "array", + "name": "dim_0", + "discrete": true + }, + { + "type": "array", + "name": "dim_1", + "discrete": true + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "scale", + "output": "array_coordinates", + "input": "array", + "name": "default-scale", + "scale": [1, 1] + } + ] + } + ], + "coordinateTransformations": [ + { + "type": "mapAxis", + "output": "physical", + "input": "array_coordinates", + "name": "transform-name", + "mapAxis": [1, 0] + } + ] } ] } - ] -} + } +} \ No newline at end of file diff --git a/examples/transformations/inverseOf.json b/examples/transformations/inverseOf.json deleted file mode 100644 index 4c77e9ea..00000000 --- a/examples/transformations/inverseOf.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "coordinateSystems" : [ - { "name" : "moving", "axes" : [{"name" : "y-moving"}, {"name":"x-moving"}] }, - { "name" : "fixed", "axes" : [{"name" : "y-fixed"}, {"name":"x-fixed"}] } - ], - "coordinateTransformations" : [ - { - "type": "inverseOf", - "transformation" : { - "type": "displacements", - "path": "path/to/displacements" - }, - "input" : "moving", - "output" : "fixed" - } - ] -} diff --git a/examples/transformations/mapAxis1.json b/examples/transformations/mapAxis1.json index 6aeeca52..9bdb2883 100644 --- a/examples/transformations/mapAxis1.json +++ b/examples/transformations/mapAxis1.json @@ -8,14 +8,14 @@ { "name": "equivalent to identity", "type": "mapAxis", - "mapAxis": { "x":"i", "y":"j" }, + "mapAxis": [0, 1], "input": "in", "output": "out1" }, { "name": "permutation", "type": "mapAxis", - "mapAxis": { "y":"i", "x":"j" }, + "mapAxis": [1, 0], "input": "in", "output": "out2" } diff --git a/examples/transformations/mapAxis2.json b/examples/transformations/mapAxis2.json index 0c008475..db214a00 100644 --- a/examples/transformations/mapAxis2.json +++ b/examples/transformations/mapAxis2.json @@ -8,14 +8,14 @@ { "name": "projection down", "type": "mapAxis", - "mapAxis": { "x": "b" }, + "mapAxis": [1], "input": "in", "output": "out_down" }, { "name": "projection up", "type": "mapAxis", - "mapAxis": { "z": "b", "y": "b", "x": "a" }, + "mapAxis": [1, 1, 0], "input": "in", "output": "out_up" } diff --git a/index.md b/index.md index 105b0a77..4be755f6 100644 --- a/index.md +++ b/index.md @@ -137,6 +137,39 @@ A well group SHOULD NOT be present if there are no images in the well. └── ... # Other rows ``` +### Scene +(scene-format)= + +The following specification describes the hierarchy of Zarr groups for a scene dataset. +The group above the images defines a scene, which is a collection of images that share a spatial relationship with each other (see [coordinate transformations metadata](#coord-trafo-md)). +It MUST implement the [scene specification](#scene-md). + +For transformations that store data or parameters in a Zarr array, +those Zarr arrays SHOULD be stored in a Zarr group on the same level as images called "coordinateTransformations". + +
+store.zarr                      # One scene dataset
+│
+├── zarr.json                   # coordinate transformations describing the relationship between two image coordinate systems
+│                               # are stored in the "scene" dictionary here.
+│                               # I.e., transformations between coordinate systems in the 'volume' and 'crop' multiscale images are stored here.
+│
+├── coordinateTransformations   # transformations that use array storage for their parameters should go in a Zarr group named "coordinateTransformations".
+│   └── displacements           # for example, a Zarr array containing a displacement field
+│       └── zarr.json
+│
+├── volume
+│   ├── zarr.json               # group level attributes (multiscales)
+│   └── 0                       # a group containing the 0th scale
+│       └── image               # a Zarr array
+│           └── zarr.json       # physical coordinate system and transformations here
+└── crop
+    ├── zarr.json               # group level attributes (multiscales)
+    └── 0                       # a group containing the 0th scale
+        └── image               # a Zarr array
+            └── zarr.json       # physical coordinate system and transformations here
+
+ ## OME-Zarr Metadata (metadata)= @@ -199,14 +232,14 @@ refer to different physical entities and therefore should not be analyzed jointl Tasks that require images, annotations, regions of interest, etc., SHOULD ensure that they are in the same coordinate system (same name and location within the Zarr hierarchy, with identical axes) or can be transformed to the same coordinate system before doing analysis. -See the [example below](#spec:example:coordinate_transformation). +See the [example below](spec:example:coordinate_transformation). #### "axes" metadata "axes" describes the dimensions of a coordinate systems and adds an interpretation to the samples along that dimension. -It is a list of dictionaries, +It is an array of dictionaries, where each dictionary describes a dimension (axis) and: - MUST contain the field "name" that gives the name for this dimension. The values MUST be unique across all "name" fields in the same coordinate system. @@ -225,8 +258,6 @@ where each dictionary describes a dimension (axis) and: The value MUST be a string, and can provide a longer name or description of an axis and its properties. -The length of "axes" MUST be equal to the number of dimensions of the arrays that contain the image data. - Arrays are inherently discrete (see Array coordinate systems, below) but are often used to store discrete samples of a continuous variable. The continuous values "in between" discrete samples can be retrieved using an *interpolation* method. @@ -274,7 +305,7 @@ As with all coordinate systems, the dimension names must be unique and non-null. ``` For example, if 0/zarr.json contains: -```jsonc +```json { "zarr_format": 3, "node_type": "array", @@ -287,7 +318,7 @@ Then `dim_0` has length 4, `dim_1` has length 3, and `dim_2` has length 5. ::: -The axes and their order align with the shape of the corresponding zarr array, +The axes and their order align with the shape of the corresponding Zarr array, and whose data depends on the byte order used to store chunks. As described in the [Zarr array metadata](https://zarr.readthedocs.io/en/stable/spec/v3.html#arrays), the last dimension of an array in "C" order are stored contiguously on disk or in-memory when directly loaded. @@ -396,7 +427,7 @@ Conforming readers: ### "coordinateTransformations" metadata (coord-trafo-md)= -"coordinateTransformations" describe the mapping between two coordinate systems (defined by [coordinateSystems](#coordinate-systems-md)). +"coordinateTransformations" describe the mapping between two coordinate systems (defined by [`coordinateSystems`](#coordinate-systems-md)). For example, to map an array's discrete coordinate system to its corresponding physical coordinates. Coordinate transforms are in the "forward" direction. This means they represent functions from *points* in the input space to *points* in the output space @@ -407,27 +438,25 @@ They: - MUST contain the field "type" (string). - MUST contain any other fields required by the given "type" (see table below). - MUST contain the field "output" (string), - unless part of a `sequence` or `inverseOf` (see details). + unless part of a wrapper transform (, i.e., [`sequence`](#sequence-md), [`bijection`](#bijection-md), [`byDimension`](#bydimension-md), see details). - MUST contain the field "input" (string), - unless part of a `sequence` or `inverseOf` (see details). + unless part of a wrapper transform (, i.e., [`sequence`](#sequence-md), [`bijection`](#bijection-md), [`byDimension`](#bydimension-md), see details). - MAY contain the field "name" (string). - Its value MUST be unique across all "name" fields for coordinate transformations. + Its value MUST be unique across all "name" fields for all coordinate transformations in the same list. - Parameter values MUST be compatible with input and output space dimensionality (see details). - The following transformations are supported: | Type | Fields | Description | |------|--------|-------------| | [`identity`](#identity-md) | | The identity transformation is the do-nothing transformation and is typically not explicitly defined. | | [`mapAxis`](#mapaxis-md) | `"mapAxis":List[number]` | an axis permutation as a transpose array of integer indices that refer to the ordering of the axes in the respective coordinate system. | -| [`translation`](#translation-md) | one of:
`"translation":List[number]`,
`"path":str` | Translation vector, stored either as a list of numbers (`"translation"`) or as a zarr array at a location in this container (`path`). | -| [`scale`](#scale-md) | one of:
`"scale":List[number]`,
`"path":str` | Scale vector, stored either as a list of numbers (`scale`) or as a zarr array at a location in this container (`path`). | -| [`affine`](#affine-md) | one of:
`"affine":List[List[number]]`,
`"path":str` | 2D affine transformation matrix stored either with JSON (`affine`) or as a zarr array at a location in this container (`path`). | -| [`rotation`](#rotation-md) | one of:
`"rotation":List[List[number]]`,
`"path":str` | 2D rotation transformation matrix stored as an array stored either with json (`rotation`) or as a zarr array at a location in this container (`path`).| +| [`translation`](#translation-md) | one of:
`"translation":List[number]`,
`"path":str` | Translation vector, stored either as an array of numbers (`"translation"`) or as a Zarr array at a location in this container (`path`). | +| [`scale`](#scale-md) | one of:
`"scale":List[number]`,
`"path":str` | Scale vector, stored either as an array of numbers (`scale`) or as a Zarr array at a location in this container (`path`). | +| [`affine`](#affine-md) | one of:
`"affine":List[List[number]]`,
`"path":str` | 2D affine transformation matrix stored either with JSON (`affine`) or as a Zarr array at a location in this container (`path`). | +| [`rotation`](#rotation-md) | one of:
`"rotation":List[List[number]]`,
`"path":str` | 2D rotation transformation matrix stored as an array stored either with json (`rotation`) or as a Zarr array at a location in this container (`path`).| | [`sequence`](#sequence-md) | `"transformations":List[Transformation]` | sequence of transformations. Applying the sequence applies the composition of all transforms in the list, in order. | -| [`displacements`](#coordinates-displacements-md) | `"path":str`
`"interpolation":str` | Displacement field transformation located at `path`. | -| [`coordinates`](#coordinates-displacements-md) | `"path":str`
`"interpolation":str` | Coordinate field transformation located at `path`. | -| [`inverseOf`](#inverseof-md) | `"transformation":Transformation` | The inverse of a transformation. Useful if a transform is not closed-form invertible. See forward and inverse of [bijections](#bijection-md) for details and examples. | +| [`displacements`](#coordinates-displacements-md) | `"path":str` | Displacement field transformation located at `path`. | +| [`coordinates`](#coordinates-displacements-md) | `"path":str` | Coordinate field transformation located at `path`. | | [`bijection`](#bijection-md) | `"forward":Transformation`
`"inverse":Transformation` | An invertible transformation providing an explicit forward transformation and its inverse. | | [`byDimension`](#bydimension-md) | `"transformations":List[Transformation]`,
`"input_axes": List[str]`,
`"output_axes": List[str]` | A high dimensional transformation using lower dimensional transformations on subsets of dimensions. | @@ -472,161 +501,101 @@ Conforming readers: - SHOULD be able to apply transformations to points; - SHOULD be able to apply transformations to images; -Coordinate transformations can be stored in multiple places to reflect different usecases. +Coordinate transformations can be stored in multiple places to reflect different use cases. -- Transformations in individual multiscale datasets represent a special case of transformations - and are explained [below](#multiscales-md). -- Additional transformations for single multiscale images MUST be stored under a field `coordinateTransformations` - in the multiscales dictionaries. - This `coordinateTransformations` field MUST contain a list of valid [transformations](#trafo-types-md). -- Transformations between two or more images MUST be stored in the attributes of a parent zarr group. - For transformations that store data or parameters in a zarr array, - those zarr arrays SHOULD be stored in a zarr group called "coordinateTransformations". - +- **Inside `multiscales > datasets`**: `coordinateTransformations` herein MUST be restricted + to a single `scale`, `identity` or `sequence` of a scale followed by a translation transformation. + For more information, see [multiscales section below](#multiscales-md). +- **Inside `multiscales > coordinateTransformations`**: Additional transformations for single multiscale images MAY be stored here. + The `coordinateTransformations` field MUST contain an array of valid [transformations](#trafo-types-md). + The input to every one of these transformations MUST be the intrinsic coordinate system. + The output can be another coordinate system defined under `multiscales > coordinateSystems`. + +- **Inside `scene > coordinateTransformations`**: Transformations between two or more images + MUST be stored in the attributes of a [`scene` dictionary](#scene-md) in a [scene Zarr group](#scene-format). + In this case, the `input` and `output` values are dictionaries + that refer to coordinate systems in the same zarr.json or in the metadata of multiscale image subgroups. + +This separation of transformations (inside `multiscales > datasets`, under `multiscales > coordinateTransformations` and under `scene > coordinateTransformations`) provides flexibility for different use cases while still maintaining a level of rigidity for implementations. -
-store.zarr                      # Root folder of the zarr store
-│
-├── zarr.json                   # coordinate transformations describing the relationship between two image coordinate systems
-│                               # are stored in the attributes of their parent group.
-│                               # transformations between coordinate systems in the 'volume' and 'crop' multiscale images are stored here.
-│
-├── coordinateTransformations   # transformations that use array storage for their parameters should go in a zarr group named "coordinateTransformations".
-│   └── displacements           # for example, a zarr array containing a displacement field
-│       └── zarr.json
-│
-├── volume
-│   ├── zarr.json              # group level attributes (multiscales)
-│   └── 0                      # a group containing the 0th scale
-│       └── image              # a zarr array
-│           └── zarr.json      # physical coordinate system and transformations here
-└── crop
-    ├── zarr.json              # group level attributes (multiscales)
-    └── 0                      # a group containing the 0th scale
-        └── image              # a zarr array
-            └── zarr.json      # physical coordinate system and transformations here
-
+#### Additional details -:::{dropdown} Example -(spec:example:coordinate_transformation)= -Two instruments simultaneously image the same sample from two different angles, -and the 3D data from both instruments are calibrated to "micrometer" units. -An analysis of sample A requires measurements from images taken from both instruments at certain points in space. -Suppose a region of interest (ROI) is determined from the image obtained from instrument 2, -but quantification from that region is needed for instrument 1. -Since measurements were collected at different angles, -a measurement by instrument 1 at the point with image array coordinates (x,y,z) -may not correspond to the measurement at the same array coordinates in instrument 2 -(i.e., it may not be the same physical location in the sample). -To analyze both images together, they must be transformed to a common coordinate system. +**Omitting `input`/`output`**: Coordinate transformations MUST specify their input and output coordinate systems +using the `input` and `output` fields. +These fields MUST correspond to the name of a coordinate system or the path to a multiscales group. +Exceptions are if the coordinate transformation is wrapped in another transformation, +e.g. as part of a `sequence`, `byDimension` or `bijection`. +In these cases, the `input` and `output` fields MAY be omitted or null. -The set of coordinate transformations encodes relationships between coordinate systems, -specifically, how to convert points from one coordinate system to another. -Implementations can apply the coordinate transform to images or points -in coordinate system "sampleA_instrument2" to bring them into the "sampleA_instrument1" coordinate system. -In this case, image data within the ROI defined in image2 should be transformed to the "sampleA_image1" coordinate system, -then used for quantification with the instrument 1 image. +**Graph connectedness**: The coordinate systems defined in the [multiscales metadata](#multiscales-md) +and the [`scene` metadata](#scene-md) combined with the coordinate transformations form a transformations graph. +In this graph, coordinate systems represent nodes and coordinate transformations represent edges. +The graph MUST be fully connected in the sense that any two coordinate systems in the metadata +MUST be connected by a sequence of edges represented by coordinate transformations. +Coordinate systems that are connected by a non-invertible transformation count as connected in this sense, even though graph traversal may not be closed-form computable in every direction. -The `coordinateTransformations` in the parent-level metadata would contain the following data. -The transformation parameters are stored in a separate zarr-group -under `coordinateTransformations/sampleA_instrument2-to-instrument1` as shown above. +Coordinate transformations are functions of *points* in the input space to *points* in the output space. +We call this the "forward" direction. +Points are ordered lists of coordinates, +where a coordinate is the location/value of that point along its corresponding axis. +The indexes of axis dimensions correspond to indexes into transformation parameter arrays (see examples). + +**Image rendering**: When rendering transformed images and interpolating, +implementations may need the "inverse" transformation - from the fixed +image's to the source image's coordinate system. This transformation may +not explicitly exist, but might be the require computing the inverse +(in closed form) of an explicitly specified forward transformation. + +Inverse transformations used for image rendering may be specified +by specifying the inverse transform directly - with the `input` referring +to the the fixed image's coordinate system and the `output` referring to +the the source image's coordinate system. If an operation is requested +that requires the inverse of a transformation that can not be inverted in +closed-form, implementations MAY estimate an inverse, or MAY output a warning +that the requested operation is unsupported. -```json -"coordinateTransformations": [ - { - "type": "affine", - "path": "coordinateTransformations/sampleA_instrument2-to-instrument1", - "input": "sampleA_instrument2", - "output": "sampleA_instrument1" - } -] -``` +:::{dropdown} Example -And the image at the path `sampleA_instrument1` would have the following as the first coordinate system: +Implementations SHOULD be able to compute and apply the inverse of some coordinate +transformations when they are computable in closed-form (as the +[Transformation types](#trafo-types-md) section below indicates). +Implementations should be able to render the moving image into the fixed +image by computing the inverse of this transformation. ```json -"coordinateSystems": [ - { - "name": "sampleA-instrument1", - "axes": [ - {"name": "z", "type": "space", "unit": "micrometer"}, - {"name": "y", "type": "space", "unit": "micrometer"}, - {"name": "x", "type": "space", "unit": "micrometer"} - ] - }, -] +{ + "type": "", + "input": "moving image", + "output": "fixed image" +} ``` -The image at path `sampleA_instrument2` would have this as the first listed coordinate system: +Software libraries that perform image registration often return the transformation +from fixed image coordinates to moving image coordinates, because this "inverse" +transformation is most often required when rendering the transformed moving image. +Implementations should be able to render the moving image into the fixed image by +applying this transformation directly. ```json -[ - { - "name": "sampleA-instrument2", - "axes": [ - {"name": "z", "type": "space", "unit": "micrometer"}, - {"name": "y", "type": "space", "unit": "micrometer"}, - {"name": "x", "type": "space", "unit": "micrometer"} - ] - } -], +{ + "type": "", + "input": "fixed image", + "output": "moving image" +} ``` -::: -#### Additional details - -Most coordinate transformations MUST specify their input and output coordinate systems -using `input` and `output` with a string value -that MUST correspond to the name of a coordinate system or the path to a multiscales group. -Exceptions are if the coordinate transformation is wrapped in another transformation, -e.g. as part of a `transformations` list of a `sequence` or -as `transformation` of an `inverseOf` transformation. -In these two cases input and output could, in some cases, be omitted (see below for details). -If unused, the `input` and `output` fields MAY be null. - -If used in a parent-level zarr-group, the `input` and `output` fields -can be the name of a `coordinateSystem` in the same parent-level group or the path to a multiscale image group. -If either `input` or `output` is a path to a multiscale image group, -the authoritative coordinate system for the respective image is the first `coordinateSystem` defined therein. -If the names of `input` or `output` correspond to both an existing path to a multiscale image group -and the name of a `coordinateSystem` defined in the same metadata document, -the `coordinateSystem` MUST take precedent. - -For usage in multiscales, see [the multiscales section](#multiscales-md) for details. - -Coordinate transformations are functions of *points* in the input space to *points* in the output space. -We call this the "forward" direction. -Points are ordered lists of coordinates, -where a coordinate is the location/value of that point along its corresponding axis. -The indexes of axis dimensions correspond to indexes into transformation parameter arrays. - -When rendering transformed images and interpolating, -implementations may need the "inverse" transformation - -from the output to the input coordinate system. -Inverse transformations will not be explicitly specified -when they can be computed in closed form from the forward transformation. -Inverse transformations used for image rendering may be specified using -the `inverseOf` transformation type, for example: +Implementations are not expected to be able to to render the moving image +into the fixed image given this transformation. They may attempt +to do so by estimating the transformations' inverse if they choose to. ```json { - "type": "inverseOf", - "transformation" : { - "type": "displacements", - "path": "/path/to/displacements", - }, - "input": "input_image", - "output": "output_image", + "type": "", + "input": "moving image", + "output": "fixed image" } ``` - -Implementations SHOULD be able to compute and apply -the inverse of some coordinate transformations when they are computable -in closed-form (as the [Transformation types](#trafo-types-md) section below indicates). -If an operation is requested that requires -the inverse of a transformation that can not be inverted in closed-form, -implementations MAY estimate an inverse, -or MAY output a warning that the requested operation is unsupported. +::: #### Matrix transformations (matrix-trafo-md)= @@ -634,45 +603,11 @@ or MAY output a warning that the requested operation is unsupported. Two transformation types ([affine](#affine-md) and [rotation](#rotation-md)) are parametrized by matrices. Matrices are applied to column vectors that represent points in the input coordinate system. The first and last axes in a coordinate system correspond to the top and bottom entries in the column vector, respectively. -Matrices are stored as two-dimensional arrays, either as json or in a zarr array. -When stored as a 2D zarr array, the first dimension indexes rows and the second dimension indexes columns +Matrices are stored as two-dimensional arrays, either as json or in a Zarr array. +When stored as a 2D Zarr array, the first dimension indexes rows and the second dimension indexes columns (e.g., an array of `"shape":[3,4]` has 3 rows and 4 columns). When stored as a 2D json array, the inner array contains rows (e.g. `[[1,2,3], [4,5,6]]` has 2 rows and 3 columns). -:::{dropdown} Example - -For matrix transformations, points in the coordinate system: - -```json -{ - "name" : "in", - "axes" : [ - {"name" : "z"}, - {"name" : "y"}, - {"name":"x"} - ] -}, -``` - -are represented as column vectors: - -``` -[z] -[y] -[x] -``` - -As a result, transforming the point `[z,y,x]=[1,2,3]` with the matrix `[[0,1,0],[-1,0,0],[0,0,-1]]` results in the point `[2,-1,3]` -because it is computed with the matrix-vector multiplication: - -``` -[ 0 1 0] [1] [ 2] -[-1 0 0] [2] = [-1] -[ 0 0 -1] [3] [-3] -``` - -::: - #### Transformation types (trafo-types-md)= @@ -690,11 +625,7 @@ The position of the i-th axis of the output coordinate system is set to the position of the ith axis of the input coordinate system. `identity` transformations are invertible. -The `input` and `output` fields MAY be omitted if wrapped in another transformation that provides `input`/`output` -(e.g., [`sequence`](#sequence-md), [`inverseOf`](#inverseof-md), ['byDimension](#bydimension-md) or [`bijection`](#bijection-md)). - :::{dropdown} Example -:animate: fade-in ```{literalinclude} examples/transformations/identity.json :language: json @@ -722,12 +653,11 @@ Each index MUST appear exactly once in the array. The value at position `i` in the array indicates which input axis becomes the `i`-th output axis. `mapAxis` transforms are invertible. -The `input` and `output` fields MAY be omitted if wrapped in another transformation that provides `input`/`output` -(e.g., [`sequence`](#sequence-md), [`inverseOf`](#inverseof-md), ['byDimension](#bydimension-md) or [`bijection`](#bijection-md)). +**mapAxis** +: The axis permutation stored as a JSON array of integers. :::{dropdown} Example 1 -:animate: fade-in ```{literalinclude} examples/transformations/mapAxis1.json :language: json @@ -750,7 +680,6 @@ y = i ::: :::{dropdown} Example 2 -:animate: fade-in ```{literalinclude} examples/transformations/mapAxis2.json :language: json @@ -780,19 +709,11 @@ Input and output dimensionality MUST be identical and MUST equal the the length of the "translation" array (N). `translation` transformations are invertible. -The `input` and `output` fields MAY be omitted if wrapped in another transformation that provides `input`/`output` -(e.g., [`sequence`](#sequence-md), [`inverseOf`](#inverseof-md), ['byDimension](#bydimension-md) or [`bijection`](#bijection-md)). - -path -: The path to a zarr-array containing the translation parameters. -The array at this path MUST be 1D, and its length MUST be `N`. - -translation -: The translation parameters stored as a JSON list of numbers. -The list MUST have length `N`. +**translation** +: The translation parameters stored as a JSON array of numbers. +The array MUST have length `N`. :::{dropdown} Example -:animate: fade-in ```{literalinclude} examples/transformations/translation.json :language: json @@ -816,19 +737,11 @@ and MUST equal the the length of the "scale" array (N). Values in the `scale` array SHOULD be non-zero; in that case, `scale` transformations are invertible. -The `input` and `output` fields MAY be omitted if wrapped in another transformation that provides `input`/`output` -(e.g., [`sequence`](#sequence-md), [`inverseOf`](#inverseof-md), ['byDimension](#bydimension-md) or [`bijection`](#bijection-md)). - -path -: The path to a zarr-array containing the scale parameters. -The array at this path MUST be 1D, and its length MUST be `N`. - -scale -: The scale parameters are stored as a JSON list of numbers. -The list MUST have length `N`. +**scale** +: The scale parameters are stored as a JSON array of numbers. +The array MUST have length `N`. :::{dropdown} Example 1 -:animate: fade-in ```{literalinclude} examples/transformations/scale.json :language: json @@ -845,7 +758,6 @@ i.e., the mapping from the first input axis to the first output axis is determin ::: :::{dropdown} Example 2 -:animate: fade-in If the data contains discrete axes (e.g., channels), these axes are typically not transformed, but must be represented in the scale parameters. @@ -863,22 +775,18 @@ They are represented as the upper `(M)x(N+1)` sub-matrix of a `(M+1)x(N+1)` matr coordinates](https://en.wikipedia.org/wiki/Homogeneous_coordinates) (see examples). This transformation type may be (but is not necessarily) invertible when `N` equals `M`. -The matrix MUST be stored as a 2D array either as json or as a zarr array. +The matrix MUST be stored as a 2D array either as json or as a Zarr array. -The `input` and `output` fields MAY be omitted if wrapped in another transformation that provides `input`/`output` -(e.g., [`sequence`](#sequence-md), [`inverseOf`](#inverseof-md), ['byDimension](#bydimension-md) or [`bijection`](#bijection-md)). - -path -: The path to a zarr-array containing the affine parameters. +**path** +: The path to a Zarr-array containing the affine parameters. The array at this path MUST be 2D whose shape MUST be `(M)x(N+1)`. -affine +**affine** : The affine parameters stored in JSON. The matrix MUST be stored as 2D nested array (an array of arrays of numbers) where the outer array MUST be length `M` and the inner arrays MUST be length `N+1`. :::{dropdown} Example 1 -:animate: fade-in A 2D-2D example: ```{literalinclude} examples/transformations/affine2d2d.json @@ -905,7 +813,6 @@ where the last row `[0 0 1]` is omitted in the JSON representation. ::: :::{dropdown} Example 2 -:animate: fade-in An example with two dimensional inputs and three dimensional outputs. The affine transformation adds a translation by 1 along the new z-axis. @@ -939,7 +846,6 @@ where the last row `[0 0 1]` is omitted in the JSON representation. ::: :::{dropdown} Example 3 -:animate: fade-in If the image data contains discrete axes (e.g., channels), these axes are typically not transformed, but must be represented in the transformation matrix. @@ -956,23 +862,19 @@ When possible, a rotation transformation SHOULD be used instead of an equivalent Input and output dimensionality (N) MUST be identical. Rotations are stored as `NxN` matrices, see below, and MUST have determinant equal to one, with orthonormal rows and columns. -The matrix MUST be stored as a 2D array either as json or in a zarr array. +The matrix MUST be stored as a 2D array either as json or in a Zarr array. `rotation` transformations are invertible. -The `input` and `output` fields MAY be omitted if wrapped in another transformation that provides `input`/`output` -(e.g., [`sequence`](#sequence-md), [`inverseOf`](#inverseof-md), ['byDimension](#bydimension-md) or [`bijection`](#bijection-md)). - -path +**path** : The path to an array containing the affine parameters. The array at this path MUST be 2D whose shape MUST be `N x N`. -rotation +**rotation** : The parameters stored in JSON. The matrix MUST be stored as a 2D nested array (an array of arrays of numbers) where the outer array MUST be length `N` and the inner arrays MUST be length `N`. :::{dropdown} Example -:animate: fade-in A 2D example ```{literalinclude} examples/transformations/rotation.json @@ -987,37 +889,6 @@ y = 1*i + 0*j ``` ::: -##### inverseOf -(inverseOf-md)= - -An `inverseOf` transformation contains another transformation (often non-linear), -and indicates that transforming points from output to input coordinate systems -is possible using the contained transformation. -Transforming points from the input to the output coordinate systems -requires the inverse of the contained transformation (if it exists). - -The `input` and `output` fields MAY be omitted for `inverseOf` transformations -if those fields may be omitted for the transformation it wraps. - -```{note} -Software libraries that perform image registration -often return the transformation from fixed image coordinates to moving image coordinates, -because this "inverse" transformation is most often required -when rendering the transformed moving image. -Results such as this may be enclosed in an `inverseOf` transformation. -This enables the "outer" coordinate transformation to specify the moving image coordinates -as `input` and fixed image coordinates as `output`, -a choice that many users and developers find intuitive. -``` - -:::{dropdown} Example -:animate: fade-in - -```{literalinclude} examples/transformations/inverseOf.json -:language: json -``` -::: - ##### sequence (sequence-md)= @@ -1025,15 +896,12 @@ A `sequence` transformation consists of an ordered array of coordinate transform and is invertible if every coordinate transform in the array is invertible (though could be invertible in other cases as well). To apply a sequence transformation to a point in the input coordinate system, -apply the first transformation in the list of transformations. +apply the first transformation in the array of transformations. Next, apply the second transformation to the result. Repeat until every transformation has been applied. The output of the last transformation is the result of the sequence. -A sequence transformation MUST NOT be part of another sequence transformation. -The `input` and `output` fields MUST be included for sequence transformations. - -transformations +**transformations** : A non-empty array of transformations. :::{note} @@ -1051,7 +919,6 @@ f2(f1(f0(x))) ::: :::{dropdown} Example -:animate: fade-in This sequence: @@ -1085,9 +952,6 @@ These transformation types refer to an array at location specified by the `"path The input and output coordinate systems for these transformations ("input / output coordinate systems") constrain the array size and the coordinate system metadata for the array ("field coordinate system"). -The `input` and `output` fields MAY be omitted if wrapped in another transformation that provides `input`/`output` -(e.g., [`sequence`](#sequence-md), [`inverseOf`](#inverseof-md), ['byDimension](#bydimension-md) or [`bijection`](#bijection-md)). - * If the input coordinate system has `N` axes, the array at location path MUST have `N+1` dimensions * The field coordinate system MUST contain an axis identical to every axis @@ -1105,20 +969,8 @@ of the `i`th output axis. See the example below. but implementations MAY approximate their inverses. Metadata for these coordinate transforms have the following fields: -
-
path
-
The location of the coordinate array in this (or another) container.
-
interpolation
-
The interpolation attributes MAY be provided. - Its value indicates the interpolation to use - if transforming points not on the array's discrete grid. - Values could be: -
    -
  • linear (default)
  • -
  • nearest
  • -
  • cubic
  • -
-
+**path** +: The location of the coordinate array in this (or another) container. For both `coordinates` and `displacements`, @@ -1142,10 +994,9 @@ For `displacements`: * `coordinateSystem` metadata MUST have exactly one axis with `"type" : "displacement"` * the shape of the array along the "displacement" axis must be exactly `N` -* `input` and `output` MUST have an equal number of dimensions. +* input and output coordinate systems MUST have an equal number of dimensions. :::{dropdown} Example 1 -:animate: fade-in For example, in 1D: ```json { @@ -1192,7 +1043,6 @@ x = ::: :::{dropdown} Example 2 -:animate: fade-in A 1D example displacement field: ```json { @@ -1240,7 +1090,6 @@ hence the output is `1.0 + (-0.5) = 0.5`. ::: :::{dropdown} Example 3 -:animate: fade-in In this example, the array located at `"displacementField"` MUST have three dimensions. One dimension MUST correspond to an axis with `type : displacement` (in this example, the last dimension), @@ -1288,24 +1137,20 @@ I.e. the y-displacement is first, because the y-axis is the first element of the `byDimension` transformations build a high dimensional transformation using lower dimensional transformations on subsets of dimensions. -The `input` and `output` fields MUST always be included for this transformations type. - -
-
transformations
-
Each child transformation MUST contain input_axes and output_axes fields - whose values are arrays of strings. - Every axis name in a child transformation's input_axes - MUST correspond to a name of some axis in this parent object's input coordinate system. - Every axis name in the parent byDimension's output coordinate system - MUST appear in exactly one child transformation's output_axes array. - Each child transformation's input_axes and output_axes arrays - MUST have the same length as that transformation's parameter arrays. -
-
+**transformations** +: MUST be an array of wrapped transformations. + Each item MUST contain `input_axes`, `output_axes` and `transformation` fields. + The values of `input_axes` and `output_axes` are arrays of integers. + The integer values in these arrays correspond to the axis indices in the `byDimension`'s or its parent's + `input` and `output` coordinate systems, respectively. + The value of `transformation` is a valid transformation object. + Every axis index in the parent byDimension's `output` coordinate system + MUST appear in exactly one child transformation's `output_axes` array. + The `input_axes` and `output_axes` arrays of each item + MUST have the same length as that transformation's parameter arrays. :::{dropdown} Example 1 -:animate: fade-in A valid `byDimension` transformation: @@ -1315,7 +1160,6 @@ A valid `byDimension` transformation: ::: :::{dropdown} Example 2 -:animate: fade-in Another valid `byDimension` transformation: @@ -1325,7 +1169,6 @@ Another valid `byDimension` transformation: ::: :::{dropdown} Example 3 -:animate: fade-in This is an **invalid** `byDimension` transform: @@ -1340,7 +1183,6 @@ Second, the `x` axis of the `output` does not appear in the `output` of any chil ::: :::{dropdown} Example 4 -:animate: fade-in Another **invalid** `byDimension` transform: @@ -1366,15 +1208,17 @@ in which case the `forward` transformation's `input` and `output` are understood and the `inverse` transformation's `input` (`output`) matches the bijection's `output` (`input`), see the example below. -The `input` and `output` fields MAY be omitted for `bijection` transformations -if the fields may be omitted for both its `forward` and `inverse` transformations - Practically, non-invertible transformations have finite extents, so bijection transforms should only be expected to be correct / consistent for points that fall within those extents. It may not be correct for any point of appropriate dimensionality. +**forward** +: The forward transformation. + +**inverse** +: The inverse transformation. + :::{dropdown} Example -:animate: fade-in ```{literalinclude} examples/transformations/bijection.json :language: json @@ -1395,15 +1239,11 @@ Here, "image" refers to 2 to 5 dimensional data representing image or volumetric data with optional time or channel axes. It is stored in a multiple resolution representation. -`multiscales` contains a list of dictionaries where each entry describes a multiscale image. +`multiscales` contains an array of dictionaries where each entry describes a multiscale image. Each `multiscales` dictionary MUST contain the field "coordinateSystems", whose value is an array containing coordinate system metadata (see [coordinate systems](#coordinate-systems-md)). -The last entry of this array is the "intrinsic" coordinate system -and MUST contain axis information pertaining to physical coordinates. -It should be used for viewing and processing unless a use case dictates otherwise. -It will generally be a representation of the image in its native physical coordinate system. The following MUST hold for all coordinate systems inside multiscales metadata. The length of "axes" must be between 2 and 5 @@ -1418,7 +1258,7 @@ and images are stacked along the other (anisotropic) axis ("z"), the spatial axes SHOULD be ordered as "zyx". Each `multiscales` dictionary MUST contain the field `datasets`, -which is a list of dictionaries describing the arrays storing the individual resolution levels. +which is an array of dictionaries describing the arrays storing the individual resolution levels. Each dictionary in `datasets` MUST contain the field `path`, whose value is a string containing the path to the Zarr array for this resolution relative to the current Zarr group. The `path`s MUST be ordered from largest (i.e. highest resolution) to smallest. @@ -1427,17 +1267,18 @@ and MUST NOT have more than 5 dimensions. The number of dimensions and order MUST correspond to number and order of `axes`. Each dictionary in `datasets` MUST contain the field `coordinateTransformations`, -whose value is a list of dictionaries that define a transformation -that maps Zarr array coordinates for this resolution level to the "intrinsic" coordinate system -(the last entry of the `coordinateSystems` array). +whose value is an array of dictionaries that define a transformation +that maps Zarr array coordinates for this resolution level to the "intrinsic" coordinate system. The transformation is defined according to [transformations metadata](#trafo-types-md). The transformation MUST take as input points in the array coordinate system corresponding to the Zarr array at location `path`. The value of "input" MUST equal the value of `path`, implementations should always treat the value of `input` as if it were equal to the value of `path`. -The value of the transformation’s `output` MUST be the name of the "intrinsic" [coordinate system](#coordinate-systems-md). +The value of the transformation’s `output` coordinate system MUST be the same for every dataset in a single multiscales. +This coordinate system (the "intrinsic" coordinate system) will generally be a representation of the image in its native physical coordinate system. +It should be used for viewing and processing unless a use case dictates otherwise. -This transformation MUST be one of the following: +The transformation MUST be one of the following: * A single scale or identity transformation * A sequence transformation containing one scale and one translation transformation. @@ -1466,7 +1307,6 @@ which contains a dictionary with additional information about the downscaling me :::{dropdown} Example -:animate: fade-in A complete example of json-file for a 5D (TCZYX) multiscales with 3 resolution levels could look like this: ```{literalinclude} examples/multiscales_strict/multiscales_example.json @@ -1736,6 +1576,144 @@ The first field is part of the first acquisition, and the second field is part o ``` ::: +### "scene" metadata +(scene-md)= + +For images that share a spatial relationship, +the `scene` metadata layout can be used to describe the relationship between images. + +The `scene` dictionary MUST contain the field `coordinateTransformations`, +whose value MUST be an array of valid [transformations](#trafo-types-md). +It MAY contain the field `coordinateSystems`, +whose values MUST be an array of valid [coordinate systems](#coordinate-systems-md). + +If used inside "scene" metadata, the `input` and `output` fields of `coordinateTransformations` MUST contain a json object, +which MUST contain either the `path` or the `name` field, or both. +The value of the `path` field is the path to a multiscale image subgroup. +The value of the `name` field is the name of a `coordinateSystem` either in the multiscale image subgroup specified by the path, +or within the `scene` dictionary itself. +If `name` refers to a coordinate system in the `scene` dictionary, +the `path` value MAY be omitted or null. +If `name` refers to a coordinate system in the multiscale image subgroup specified by `path`, +both `path` and `name` MUST be provided. + +:::{dropdown} Example 1: Multiview fusion +Two instruments simultaneously image the same sample from two different angles, +and the 3D data from both instruments are calibrated to "micrometer" units. +An analysis of sample A requires measurements from images taken from both instruments at certain points in space. +Suppose a region of interest (ROI) is determined from the image obtained from instrument 2, +but quantification from that region is needed for instrument 1. +Since measurements were collected at different angles, +a measurement by instrument 1 at the point with image array coordinates (x,y,z) +may not correspond to the measurement at the same array coordinates in instrument 2 +(i.e., it may not be the same physical location in the sample). +To analyze both images together, they must be transformed to a common coordinate system. + +The set of coordinate transformations encodes relationships between coordinate systems, +specifically, how to convert points from one coordinate system to another. +Implementations can apply the coordinate transform to images or points +in coordinate system "sampleA_instrument2" to bring them into the "sampleA_instrument1" coordinate system. +In this case, image data within the ROI defined in image2 should be transformed to the "sampleA_image1" coordinate system, +then used for quantification with the instrument 1 image. + +The `coordinateTransformations` in the "scene" metadata would contain the following data. +The transformation parameters are stored in a separate Zarr-group +under `coordinateTransformations/sampleA_instrument2-to-instrument1` as shown above. + +```json +"scene": { + "coordinateTransformations": [ + { + "type": "affine", + "path": "coordinateTransformations/sampleA_instrument2-to-instrument1", + "input": { + "path": "sampleA_instrument2", + "name": "physical_instrument2" + }, + "output": { + "path": "sampleA_instrument1", + "name": "physical_instrument1" + } + } + ] +} +``` + +And the image at the path `sampleA_instrument1` would have the following as coordinate system: + +```json +"coordinateSystems": [ + { + "name": "physical_instrument1", + "axes": [ + {"name": "z", "type": "space", "unit": "micrometer"}, + {"name": "y", "type": "space", "unit": "micrometer"}, + {"name": "x", "type": "space", "unit": "micrometer"} + ] + }, +] +``` + +The image at path `sampleA_instrument2` would have this as coordinate system: + +```json +"coordinateSystems": [ + { + "name": "physical_instrument2", + "axes": [ + {"name": "z", "type": "space", "unit": "micrometer"}, + {"name": "y", "type": "space", "unit": "micrometer"}, + {"name": "x", "type": "space", "unit": "micrometer"} + ] + } +], +``` +::: + +:::{dropdown} Example 2: Multi-hop transformations +Consider three instruments with strongly differing optical resolutions acquriring images of the same sample. +The fields of view (FOV) of all instruments may differ by orders of magnitude. +In this case, the FOV of instrument 1 (low-resolution) may entirely contain the FOVs of the other modalities. However, the alignment of instrument 3 with instrument 1 may be hard due to the lack of common landmark features. +In such a case, it may be easier to align instrument 2 (medium-resolution) with instrument 1, and then instrument 3 with instrument 2. + +In this case, the "scene" metadata would contain the following coordinate transformations: + +```json +"scene": { + "coordinateTransformations": [ + { + "type": "affine", + "input": { + "path": "instrument1", + "name": "physical" + }, + "output": { + "path": "instrument2", + "name": "physical" + }, + "affine": [ [ ... ], [ ... ], [ ... ]] // 4x3 matrix stored in json + }, + { + "type": "affine", + "input": { + "path": "instrument3", + "name": "physical" + }, + "output": { + "path": "instrument2", + "name": "physical" + }, + "affine": [ [ ... ], [ ... ], [ ... ] ] // 4x3 matrix stored in json + } + ] +} +``` +Both transformations (from instrument1 to instrument2, and from instrument3 to instrument2) refer to the "physical" coordinate systems of the respective images, +which are defined in the `multiscales` attributes of the respective image groups. +A transformation from instrument3 to instrument1 can be obtained +by composing the two transformations above. +::: + ## Specification naming style (naming-style)= From e889e4cd615c791f2bdc0fe3ff637f9945943b32 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:25:22 +0100 Subject: [PATCH 02/27] update scene metadata --- .../coordinate_systems_and_transforms.schema | 47 ----------- schemas/coordinate_transformations.schema | 34 +++++++- schemas/scene.schema | 81 +++++++++++++++++++ 3 files changed, 113 insertions(+), 49 deletions(-) delete mode 100644 schemas/coordinate_systems_and_transforms.schema create mode 100644 schemas/scene.schema diff --git a/schemas/coordinate_systems_and_transforms.schema b/schemas/coordinate_systems_and_transforms.schema deleted file mode 100644 index 0b5b3e44..00000000 --- a/schemas/coordinate_systems_and_transforms.schema +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_systems_and_transforms.schema", - "title": "Coordinate Systems and Transforms", - "description": "OME-Zarr coordinate systems and transforms.", - "type": "object", - "properties": { - "coordinateSystems": { - "$ref": "coordinate_systems.schema", - "description": "Coordinate systems to combine with transforms to define spatial relationships" - }, - "coordinateTransformations": { - "$ref": "coordinate_transformations.schema", - "description": "Coordinate transformations defining spatial relationships between coordinate systems" - }, - "arrayCoordinateSystem": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of coordinate space" - }, - "axes": { - "allOf": [ - { - "$ref": "axes.schema" - }, - { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "const": "array" - } - } - } - } - ] - } - }, - "required": [ - "axes" - ] - } - } -} diff --git a/schemas/coordinate_transformations.schema b/schemas/coordinate_transformations.schema index f736a927..3ff57ae8 100644 --- a/schemas/coordinate_transformations.schema +++ b/schemas/coordinate_transformations.schema @@ -15,10 +15,40 @@ "type": "object", "properties": { "input": { - "type": "string" + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "path": { + "type": "string" + } + } + } + ] }, "output": { - "type": "string" + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "path": { + "type": "string" + } + } + } + ] } }, "required": [ diff --git a/schemas/scene.schema b/schemas/scene.schema new file mode 100644 index 00000000..f60263b5 --- /dev/null +++ b/schemas/scene.schema @@ -0,0 +1,81 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_systems_and_transforms.schema", + "title": "Scene", + "description": "Scene metadata combining coordinate systems and coordinate transformations to define spatial relationships", + "type": "object", + "properties": { + "coordinateSystems": { + "$ref": "coordinate_systems.schema", + "description": "Coordinate systems to combine with transforms to define spatial relationships" + }, + "coordinateTransformations": { + "$comment": "Merge general coordinate transformations with constraints for scene metadata", + "allOf": [ + { + "$ref": "coordinate_transformations.schema", + "description": "General coordinate transformations defining spatial relationships between coordinate systems" + }, + { + "type": "array", + "items": { + "allOf": [ + { + "properties": { + "input": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "path": {"type": "string"} + }, + "required": ["name"] + }, + "output": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "path": {"type": "string"} + }, + "required": ["name"] + } + } + } + ] + }, + "description": "Constrained input/output for coordinate transformations in scene metadata" + } + ] + + }, + "arrayCoordinateSystem": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of coordinate space" + }, + "axes": { + "allOf": [ + { + "$ref": "axes.schema" + }, + { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "const": "array" + } + } + } + } + ] + } + }, + "required": [ + "axes" + ] + } + } +} From 9e6a19bd69f1bb66a184226241dd96fe06f9e941 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:33:57 +0100 Subject: [PATCH 03/27] remove inverseOf --- schemas/coordinate_transformations.schema | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/schemas/coordinate_transformations.schema b/schemas/coordinate_transformations.schema index 3ff57ae8..c7189852 100644 --- a/schemas/coordinate_transformations.schema +++ b/schemas/coordinate_transformations.schema @@ -96,9 +96,6 @@ { "$ref": "#/$defs/rotation" }, - { - "$ref": "#/$defs/inverseOf" - }, { "$ref": "#/$defs/bijection" }, @@ -317,21 +314,6 @@ } ] }, - "inverseOf": { - "type": "object", - "properties": { - "type": { - "const": "inverseOf" - }, - "transformation": { - "$ref": "#/$defs/coordinateTransformation" - } - }, - "required": [ - "transformation" - ], - "description": "The inverse of another coordinate transformation." - }, "bijection": { "type": "object", "properties": { From c44cdeacd7e6c1a90dc96f062c78d7f3f2b8144d Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:36:34 +0100 Subject: [PATCH 04/27] don't allow paths for scale/translation --- schemas/coordinate_transformations.schema | 80 +++++++---------------- 1 file changed, 23 insertions(+), 57 deletions(-) diff --git a/schemas/coordinate_transformations.schema b/schemas/coordinate_transformations.schema index c7189852..1a4f2739 100644 --- a/schemas/coordinate_transformations.schema +++ b/schemas/coordinate_transformations.schema @@ -165,45 +165,28 @@ "type": "integer" }, "description": "An array of integers representing the new axis order as zero-based indices of the input axes." - }, - "required": [ - "mapAxis" - ] - } + } + }, + "required": [ + "mapAxis" + ] }, "scale": { "type": "object", "properties": { "type": { "const": "scale" - } - }, - "oneOf": [ - { - "properties": { - "path": { - "type": "string", - "description": "Path to a zarr array containing the scale factors." - } - }, - "required": [ - "path" - ] }, - { - "properties": { - "scale": { - "type": "array", - "items": { - "type": "number", - "exclusiveMinimum": 0 - } - } - }, - "required": [ - "scale" - ] + "scale": { + "type": "array", + "items": { + "type": "number", + "exclusiveMinimum": 0 + } } + }, + "required": [ + "scale" ] }, "translation": { @@ -211,33 +194,16 @@ "properties": { "type": { "const": "translation" - } - }, - "oneOf": [ - { - "properties": { - "path": { - "type": "string", - "description": "Path to a zarr array containing the translation vectors." - } - }, - "required": [ - "path" - ] }, - { - "properties": { - "translation": { - "type": "array", - "items": { - "type": "number" - } - } - }, - "required": [ - "translation" - ] - } + "translation": { + "type": "array", + "items": { + "type": "number" + } + } + }, + "required": [ + "translation" ] }, "affine": { From a217cc7fc7c12f437818fd82e0bdfa3d36b16149 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:57:56 +0100 Subject: [PATCH 05/27] add titles and descriptions --- schemas/coordinate_transformations.schema | 32 ++++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/schemas/coordinate_transformations.schema b/schemas/coordinate_transformations.schema index 1a4f2739..64cef407 100644 --- a/schemas/coordinate_transformations.schema +++ b/schemas/coordinate_transformations.schema @@ -150,11 +150,14 @@ "type": { "const": "identity" } - } + }, + "title": "Identity Transformation", + "description": "Identity transformation that maps input coordinates directly to output coordinates without modification." }, "mapAxis": { "type": "object", - "description": "Permute axes by name", + "title": "Map Axis Transformation", + "description": "Permute axes by mapping input axes to output axes.", "properties": { "type": { "const": "mapAxis" @@ -173,6 +176,8 @@ }, "scale": { "type": "object", + "title": "Scale Transformation", + "description": "Scale transformation that scales coordinates by specified factors along each axis.", "properties": { "type": { "const": "scale" @@ -191,6 +196,8 @@ }, "translation": { "type": "object", + "title": "Translation Transformation", + "description": "Translation transformation that shifts coordinates by specified offsets along each axis.", "properties": { "type": { "const": "translation" @@ -208,6 +215,8 @@ }, "affine": { "type": "object", + "title": "Affine Transformation", + "description": "Affine transformation represented by a transformation matrix.", "properties": { "type": { "const": "affine" @@ -245,6 +254,8 @@ }, "rotation": { "type": "object", + "title": "Rotation Transformation", + "description": "Rotation transformation represented by a rotation matrix.", "properties": { "type": { "const": "rotation" @@ -282,6 +293,8 @@ }, "bijection": { "type": "object", + "title": "Bijection Transformation", + "description": "A pair of forward and inverse coordinate transformations.", "properties": { "type": { "const": "bijection" @@ -295,11 +308,11 @@ }, "required": [ "forward", "inverse" - ], - "description": "A pair of forward and inverse coordinate transformations." + ] }, "sequence": { - "description": "A sequence of transformations", + "title": "Sequence Transformation", + "description": "A sequence of transformations applied in order.", "type": "object", "properties": { "type": { "const": "sequence" }, @@ -316,6 +329,8 @@ }, "byDimension": { "type": "object", + "title": "By Dimension Transformation", + "description": "A set of transformations applied independently to each dimension.", "properties": { "type": { "const": "byDimension" }, "transformations": { @@ -327,11 +342,12 @@ }, "required": [ "transformations" - ], - "description": "A set of transformations applied independently to each dimension." + ] }, "displacements": { "type": "object", + "title": "Displacement Field Transformation", + "description": "Transformation defined by a displacement field stored in a zarr array.", "properties": { "type": { "const": "displacements" }, "path": { @@ -351,6 +367,8 @@ }, "coordinates": { "type": "object", + "title": "Coordinate Field Transformation", + "description": "Transformation defined by a coordinate field stored in a zarr array.", "properties": { "type": { "const": "coordinates" }, "path": { From 2b20c8e7d02fa4ef497330c960ebe3e51ca97e49 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 19 Jan 2026 12:20:28 +0100 Subject: [PATCH 06/27] change schema title --- schemas/coordinate_transformations.schema | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/schemas/coordinate_transformations.schema b/schemas/coordinate_transformations.schema index 64cef407..009f6a84 100644 --- a/schemas/coordinate_transformations.schema +++ b/schemas/coordinate_transformations.schema @@ -1,8 +1,8 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_transformations.schema", - "title": "Coordinate Systems and Transforms", - "description": "OME-Zarr Coordinate Systems and transforms.", + "title": "Coordinate Transformations", + "description": "OME-Zarr Coordinate transforms.", "type": "array", "uniqueItems": true, "minItems": 1, From 406a826ea81109e9e15e65304e09761d86368679 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 12:22:03 +0100 Subject: [PATCH 07/27] add more test example json --- tests/attributes/spec/valid/scene/scape.json | 36 ++++++++++ .../spec/valid/scene/tile_stitching.json | 66 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 tests/attributes/spec/valid/scene/scape.json create mode 100644 tests/attributes/spec/valid/scene/tile_stitching.json diff --git a/tests/attributes/spec/valid/scene/scape.json b/tests/attributes/spec/valid/scene/scape.json new file mode 100644 index 00000000..7c75ddc3 --- /dev/null +++ b/tests/attributes/spec/valid/scene/scape.json @@ -0,0 +1,36 @@ +{ + "ome": { + "version": "0.6.dev2", + "coordinateTransformations": [ + { + "type": "translation", + "output": "world", + "input": {"path": "stack", "name": "unskewed"}, + "translation": [ + 5882.2, + 44249.4 + ], + "name": "stack to world" + } + ], + "coordinateSystems": [ + { + "name": "world", + "axes": [ + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + } + ] + } + ] + } +} diff --git a/tests/attributes/spec/valid/scene/tile_stitching.json b/tests/attributes/spec/valid/scene/tile_stitching.json new file mode 100644 index 00000000..3907da3c --- /dev/null +++ b/tests/attributes/spec/valid/scene/tile_stitching.json @@ -0,0 +1,66 @@ +{ + "ome": { + "version": "0.6.dev3", + "coordinateTransformations": [ + { + "type": "translation", + "output": "world", + "input": {"path": "tile_0", "name": "physical"}, + "translation": [ + 0, + 0 + ], + "name": "tile_0_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_1", "name": "physical"}, + "translation": [ + 0, + 348 + ], + "name": "tile_1_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_2", "name": "physical"}, + "translation": [ + 276, + 0 + ], + "name": "tile_2_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_3", "name": "physical"}, + "translation": [ + 276, + 348 + ], + "name": "tile_3_mm to world" + } + ], + "coordinateSystems": [ + { + "name": "world", + "axes": [ + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + } + ] + } + ] + } +} \ No newline at end of file From 90db8e402d65ce5c612d4b77a97678ca47ee82c2 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 12:30:51 +0100 Subject: [PATCH 08/27] update version keys --- _version.py | 2 +- examples/bf2raw/image.json | 2 +- examples/bf2raw/plate.json | 2 +- examples/label_strict/colors_properties.json | 2 +- .../multiscales_example.json | 2 +- .../multiscales_example_relative.json | 2 +- .../multiscales_transformations.json | 2 +- examples/ome/series-2.json | 2 +- examples/plate_strict/plate_2wells.json | 2 +- examples/plate_strict/plate_6wells.json | 2 +- examples/subspace/subspaceMultidim.json | 2 +- examples/subspace/subspacePermute.json | 2 +- examples/well_strict/well_2fields.json | 2 +- examples/well_strict/well_4fields.json | 2 +- index.md | 4 +- schemas/_version.schema | 4 +- schemas/axes.schema | 2 +- schemas/bf2raw.schema | 4 +- schemas/coordinate_systems.schema | 2 +- schemas/coordinate_transformations.schema | 2 +- schemas/image.schema | 19 +++--- schemas/label.schema | 4 +- schemas/ome.schema | 4 +- schemas/ome_zarr.schema | 14 ++--- schemas/plate.schema | 4 +- schemas/scene.schema | 2 +- schemas/strict_axes.schema | 4 +- schemas/strict_coordinate_systems.schema | 2 +- schemas/strict_image.schema | 4 +- schemas/strict_label.schema | 4 +- schemas/strict_ome_zarr.schema | 14 ++--- schemas/strict_plate.schema | 4 +- schemas/strict_well.schema | 4 +- schemas/well.schema | 4 +- .../spec/invalid/image/duplicate_axes.json | 2 +- .../spec/invalid/image/duplicate_scale.json | 2 +- .../invalid/image/empty_transformations.json | 2 +- .../invalid/image/invalid_axes_count.json | 2 +- .../spec/invalid/image/invalid_axis_type.json | 2 +- .../invalid/image/invalid_channels_color.json | 2 +- .../image/invalid_channels_window.json | 2 +- .../invalid_multiscales_transformations.json | 2 +- .../spec/invalid/image/invalid_path.json | 2 +- .../image/invalid_transformation_type.json | 2 +- .../spec/invalid/image/missing_axes.json | 2 +- .../spec/invalid/image/missing_axes_name.json | 2 +- .../spec/invalid/image/missing_datasets.json | 2 +- .../spec/invalid/image/missing_path.json | 2 +- .../spec/invalid/image/missing_scale.json | 2 +- .../invalid/image/missing_space_axes.json | 2 +- .../image/missing_transformations.json | 2 +- .../spec/invalid/image/no_axes.json | 2 +- .../spec/invalid/image/no_datasets.json | 2 +- .../spec/invalid/image/no_multiscales.json | 2 +- .../spec/invalid/image/one_space_axes.json | 2 +- .../spec/invalid/image/too_many_axes.json | 2 +- .../invalid/image/too_many_space_axes.json | 2 +- .../spec/invalid/label/colors_duplicate.json | 2 +- .../invalid/label/colors_no_label_value.json | 2 +- .../invalid/label/colors_rgba_length.json | 2 +- .../spec/invalid/label/colors_rgba_type.json | 2 +- .../spec/invalid/label/empty_colors.json | 2 +- .../spec/invalid/label/empty_properties.json | 2 +- .../label/properties_no_label_value.json | 2 +- .../plate/acquisition_negative_starttime.json | 2 +- .../plate/acquisition_noninteger_endtime.json | 2 +- .../acquisition_noninteger_starttime.json | 2 +- .../acquisition_zero_maximumfieldcount.json | 2 +- .../spec/invalid/plate/duplicate_columns.json | 2 +- .../spec/invalid/plate/duplicate_rows-2.json | 2 +- .../spec/invalid/plate/duplicate_rows.json | 2 +- .../spec/invalid/plate/empty_columns.json | 2 +- .../spec/invalid/plate/empty_rows.json | 2 +- .../spec/invalid/plate/empty_wells.json | 2 +- .../invalid/plate/missing_acquisition_id.json | 2 +- .../invalid/plate/missing_column_name.json | 2 +- .../spec/invalid/plate/missing_columns.json | 2 +- .../spec/invalid/plate/missing_row_name.json | 2 +- .../spec/invalid/plate/missing_rows.json | 2 +- .../plate/missing_well_columnIndex.json | 2 +- .../spec/invalid/plate/missing_well_path.json | 2 +- .../invalid/plate/missing_well_rowIndex.json | 2 +- .../spec/invalid/plate/missing_wells.json | 2 +- .../plate/negative_acquisition_id.json | 2 +- .../spec/invalid/plate/negative_endtime.json | 2 +- .../plate/non_alphanumeric_column.json | 2 +- .../plate/non_integer_acquisition_id.json | 2 +- ...integer_acquisition_maximumfieldcount.json | 2 +- .../spec/invalid/plate/well_1group.json | 2 +- .../spec/invalid/plate/well_3groups.json | 2 +- .../spec/invalid/plate/zero_field_count.json | 2 +- .../spec/valid/image/custom_type_axes.json | 2 +- .../spec/valid/image/invalid_axis_units.json | 2 +- .../spec/valid/image/mismatch_axes_units.json | 2 +- .../spec/valid/image/missing_name.json | 2 +- .../spec/valid/image/untyped_axes.json | 2 +- .../attributes/spec/valid/label/minimal.json | 2 +- .../spec/valid/label/minimal_properties.json | 2 +- .../valid/plate/minimal_acquisitions.json | 2 +- .../valid/plate/minimal_no_acquisitions.json | 2 +- .../valid/plate/non_alphanumeric_row.json | 2 +- tests/attributes/spec/valid/scene/scape.json | 2 +- .../spec/valid/well/minimal_acquisitions.json | 2 +- .../valid/well/minimal_no_acquisition.json | 2 +- .../strict/invalid/label/no_colors.json | 2 +- ...missing_acquisition_maximumfieldcount.json | 2 +- .../plate/missing_acquisition_name.json | 2 +- .../strict/invalid/plate/missing_name.json | 2 +- .../attributes/strict/valid/image/image.json | 2 +- .../strict/valid/image/image_metadata.json | 2 +- .../strict/valid/image/image_omero.json | 4 +- .../valid/image/multiscales_example.json | 2 +- .../image/multiscales_transformations.json | 2 +- .../valid/plate/strict_acquisitions.json | 2 +- .../valid/plate/strict_no_acquisitions.json | 2 +- .../valid/well/strict_acquisitions.json | 2 +- .../valid/well/strict_no_acquisitions.json | 2 +- tests/image_suite.json | 56 ++++++++--------- tests/label_suite.json | 18 +++--- tests/plate_suite.json | 60 +++++++++---------- tests/strict_image_suite.json | 12 ++-- tests/strict_label_suite.json | 2 +- tests/strict_plate_suite.json | 10 ++-- tests/strict_well_suite.json | 4 +- tests/test_validation.py | 4 +- tests/well_suite.json | 4 +- .../image/duplicate_axes.ome.zarr/zarr.json | 2 +- .../image/duplicate_scale.ome.zarr/zarr.json | 2 +- .../empty_transformations.ome.zarr/zarr.json | 2 +- .../invalid_axes_count.ome.zarr/zarr.json | 2 +- .../invalid_axis_type.ome.zarr/zarr.json | 2 +- .../invalid_channels_color.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../zarr.json | 2 +- .../image/invalid_path.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../image/missing_axes.ome.zarr/zarr.json | 2 +- .../missing_axes_name.ome.zarr/zarr.json | 2 +- .../image/missing_datasets.ome.zarr/zarr.json | 2 +- .../image/missing_path.ome.zarr/zarr.json | 2 +- .../image/missing_scale.ome.zarr/zarr.json | 2 +- .../missing_space_axes.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../invalid/image/no_axes.ome.zarr/zarr.json | 2 +- .../image/no_datasets.ome.zarr/zarr.json | 2 +- .../image/no_multiscales.ome.zarr/zarr.json | 2 +- .../image/one_space_axes.ome.zarr/zarr.json | 2 +- .../image/too_many_axes.ome.zarr/zarr.json | 2 +- .../too_many_space_axes.ome.zarr/zarr.json | 2 +- .../label/colors_duplicate.ome.zarr/zarr.json | 2 +- .../colors_no_label_value.ome.zarr/zarr.json | 2 +- .../colors_rgba_length.ome.zarr/zarr.json | 2 +- .../label/colors_rgba_type.ome.zarr/zarr.json | 2 +- .../label/empty_colors.ome.zarr/zarr.json | 2 +- .../label/empty_properties.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../zarr.json | 2 +- .../zarr.json | 2 +- .../zarr.json | 2 +- .../zarr.json | 2 +- .../duplicate_columns.ome.zarr/zarr.json | 2 +- .../plate/duplicate_rows-2.ome.zarr/zarr.json | 2 +- .../plate/duplicate_rows.ome.zarr/zarr.json | 2 +- .../plate/empty_columns.ome.zarr/zarr.json | 2 +- .../plate/empty_rows.ome.zarr/zarr.json | 2 +- .../plate/empty_wells.ome.zarr/zarr.json | 2 +- .../missing_acquisition_id.ome.zarr/zarr.json | 2 +- .../missing_column_name.ome.zarr/zarr.json | 2 +- .../plate/missing_columns.ome.zarr/zarr.json | 2 +- .../plate/missing_row_name.ome.zarr/zarr.json | 2 +- .../plate/missing_rows.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../missing_well_path.ome.zarr/zarr.json | 2 +- .../missing_well_rowIndex.ome.zarr/zarr.json | 2 +- .../plate/missing_wells.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../plate/negative_endtime.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../zarr.json | 2 +- .../zarr.json | 2 +- .../plate/well_1group.ome.zarr/zarr.json | 2 +- .../plate/well_3groups.ome.zarr/zarr.json | 2 +- .../plate/zero_field_count.ome.zarr/zarr.json | 2 +- .../image/custom_type_axes.ome.zarr/zarr.json | 2 +- .../invalid_axis_units.ome.zarr/zarr.json | 2 +- .../mismatch_axes_units.ome.zarr/zarr.json | 2 +- .../image/missing_name.ome.zarr/zarr.json | 2 +- .../image/untyped_axes.ome.zarr/zarr.json | 2 +- .../valid/label/minimal.ome.zarr/zarr.json | 2 +- .../minimal_properties.ome.zarr/zarr.json | 2 +- .../minimal_acquisitions.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../non_alphanumeric_row.ome.zarr/zarr.json | 2 +- .../minimal_acquisitions.ome.zarr/zarr.json | 2 +- .../minimal_no_acquisition.ome.zarr/zarr.json | 2 +- .../label/no_colors.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../zarr.json | 2 +- .../plate/missing_name.ome.zarr/zarr.json | 2 +- .../valid/image/image.ome.zarr/zarr.json | 2 +- .../image/image_metadata.ome.zarr/zarr.json | 2 +- .../image/image_omero.ome.zarr/zarr.json | 4 +- .../multiscales_example.ome.zarr/zarr.json | 2 +- .../zarr.json | 2 +- .../strict_acquisitions.ome.zarr/zarr.json | 2 +- .../strict_no_acquisitions.ome.zarr/zarr.json | 2 +- .../strict_acquisitions.ome.zarr/zarr.json | 2 +- .../strict_no_acquisitions.ome.zarr/zarr.json | 2 +- 208 files changed, 319 insertions(+), 318 deletions(-) diff --git a/_version.py b/_version.py index b0e05a1b..2caf9630 100644 --- a/_version.py +++ b/_version.py @@ -1 +1 @@ -__version__ = '0.6.dev2' +__version__ = '0.6.dev3' diff --git a/examples/bf2raw/image.json b/examples/bf2raw/image.json index 7b8d55d7..68511a57 100644 --- a/examples/bf2raw/image.json +++ b/examples/bf2raw/image.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "bioformats2raw.layout": 3 } } diff --git a/examples/bf2raw/plate.json b/examples/bf2raw/plate.json index de46be20..5d5590e9 100644 --- a/examples/bf2raw/plate.json +++ b/examples/bf2raw/plate.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "bioformats2raw.layout": 3, "plate": { "columns": [ diff --git a/examples/label_strict/colors_properties.json b/examples/label_strict/colors_properties.json index b787e500..7b97a496 100644 --- a/examples/label_strict/colors_properties.json +++ b/examples/label_strict/colors_properties.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/examples/multiscales_strict/multiscales_example.json b/examples/multiscales_strict/multiscales_example.json index 9fa8e1c4..0d16fde9 100644 --- a/examples/multiscales_strict/multiscales_example.json +++ b/examples/multiscales_strict/multiscales_example.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "name": "example", diff --git a/examples/multiscales_strict/multiscales_example_relative.json b/examples/multiscales_strict/multiscales_example_relative.json index fabf5957..bc51998c 100644 --- a/examples/multiscales_strict/multiscales_example_relative.json +++ b/examples/multiscales_strict/multiscales_example_relative.json @@ -1,7 +1,7 @@ { "multiscales": [ { - "version": "0.6.dev2", + "version": "0.6.dev3", "name": "example", "coordinateSystems" : [ { diff --git a/examples/multiscales_strict/multiscales_transformations.json b/examples/multiscales_strict/multiscales_transformations.json index 338faab8..49876785 100644 --- a/examples/multiscales_strict/multiscales_transformations.json +++ b/examples/multiscales_strict/multiscales_transformations.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/examples/ome/series-2.json b/examples/ome/series-2.json index b14d7692..14e2f70e 100644 --- a/examples/ome/series-2.json +++ b/examples/ome/series-2.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "series": ["0", "1"] } } diff --git a/examples/plate_strict/plate_2wells.json b/examples/plate_strict/plate_2wells.json index de4868fd..abe64e9d 100644 --- a/examples/plate_strict/plate_2wells.json +++ b/examples/plate_strict/plate_2wells.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/examples/plate_strict/plate_6wells.json b/examples/plate_strict/plate_6wells.json index 5f585e03..cfae0e9e 100644 --- a/examples/plate_strict/plate_6wells.json +++ b/examples/plate_strict/plate_6wells.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/examples/subspace/subspaceMultidim.json b/examples/subspace/subspaceMultidim.json index 6264ab51..6f381685 100644 --- a/examples/subspace/subspaceMultidim.json +++ b/examples/subspace/subspaceMultidim.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "name": "multiscales", diff --git a/examples/subspace/subspacePermute.json b/examples/subspace/subspacePermute.json index c2752b83..7051b6a3 100644 --- a/examples/subspace/subspacePermute.json +++ b/examples/subspace/subspacePermute.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "name": "multiscales", diff --git a/examples/well_strict/well_2fields.json b/examples/well_strict/well_2fields.json index 274a4c89..a01f495a 100644 --- a/examples/well_strict/well_2fields.json +++ b/examples/well_strict/well_2fields.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/examples/well_strict/well_4fields.json b/examples/well_strict/well_4fields.json index 032d09ba..54fd5203 100644 --- a/examples/well_strict/well_4fields.json +++ b/examples/well_strict/well_4fields.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/index.md b/index.md index 4be755f6..9d4ba9cb 100644 --- a/index.md +++ b/index.md @@ -186,7 +186,7 @@ The OME-Zarr Metadata version MUST be consistent within a hierarchy. // ... "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", // ... } } @@ -1402,7 +1402,7 @@ For example: { "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "labels": [ "cell_space_segmentation" ] diff --git a/schemas/_version.schema b/schemas/_version.schema index b4d0603e..4ba61526 100644 --- a/schemas/_version.schema +++ b/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.6.dev3/schemas/_version.schema", "title": "OME-Zarr version", "description": "OME-Zarr version.", "type": "string", "enum": [ - "0.6.dev2" + "0.6.dev3" ] } diff --git a/schemas/axes.schema b/schemas/axes.schema index bf91a384..f24ddde1 100644 --- a/schemas/axes.schema +++ b/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.6.dev3/schemas/axes.schema", "title": "Axes", "description": "OME-Zarr Axes.", "type": "array", diff --git a/schemas/bf2raw.schema b/schemas/bf2raw.schema index e37e5305..06604db5 100644 --- a/schemas/bf2raw.schema +++ b/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.6.dev3/schemas/bf2raw.schema", "title": "bioformats2raw", "description": "OME-Zarr bioformats2raw metadata.", "type": "object", @@ -17,7 +17,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/_version.schema" } }, "required": [ diff --git a/schemas/coordinate_systems.schema b/schemas/coordinate_systems.schema index 405dfcff..8d76a6a6 100644 --- a/schemas/coordinate_systems.schema +++ b/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.6.dev3/schemas/coordinate_systems.schema", "title": "Coordinate systems", "description": "OME-Zarr coordinate system.", "type": "array", diff --git a/schemas/coordinate_transformations.schema b/schemas/coordinate_transformations.schema index 009f6a84..bfd1e666 100644 --- a/schemas/coordinate_transformations.schema +++ b/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.6.dev3/schemas/coordinate_transformations.schema", "title": "Coordinate Transformations", "description": "OME-Zarr Coordinate transforms.", "type": "array", diff --git a/schemas/image.schema b/schemas/image.schema index 9513c430..0ef4c86d 100644 --- a/schemas/image.schema +++ b/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.6.dev3/schemas/image.schema", "title": "Image", "description": "OME-Zarr image.", "type": "object", @@ -16,7 +16,7 @@ "$ref": "#/$defs/multiscales" }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/_version.schema" } }, "required": [ @@ -51,7 +51,7 @@ "type": "array", "uniqueItems": true, "items": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema#/$defs/multiscale_coordinateTransformations" + "$ref": "#/$defs/multiscale_coordinateTransformations" }, "minItems": 1, "maxItems": 1 @@ -66,21 +66,21 @@ "version": { "type": "string", "enum": [ - "0.6.dev2" + "0.6.dev3" ] }, "coordinateSystems": { "type": "array", "minItems": 1, "items": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_systems.schema#/$defs/coordinateSystem" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/coordinate_systems.schema#/$defs/coordinateSystem" } }, "coordinateTransformations": { "type": "array", "minItems": 1, "items": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_transformations.schema#/$defs/coordinateTransformation" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/coordinate_transformations.schema#/$defs/coordinateTransformation" } } }, @@ -94,7 +94,8 @@ "multiscale_coordinateTransformations": { "description": "OME-NGFF coordinate transformation for multiscale resolution level datasets (only scale or scale & translate).", "oneOf": [ - {"$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_transformations.schema#/$defs/scale"}, + {"$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/coordinate_transformations.schema#/$defs/scale"}, + {"$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/coordinate_transformations.schema#/$defs/identity"}, { "type": "object", "properties": { @@ -103,8 +104,8 @@ "type": "array", "items": { "oneOf": [ - {"$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_transformations.schema#/$defs/scale"}, - {"$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/coordinate_transformations.schema#/$defs/translation"} + {"$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/coordinate_transformations.schema#/$defs/scale"}, + {"$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/coordinate_transformations.schema#/$defs/translation"} ] }, "minItems": 2, diff --git a/schemas/label.schema b/schemas/label.schema index 14be8236..4a32a869 100644 --- a/schemas/label.schema +++ b/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.6.dev3/schemas/label.schema", "title": "Label", "description": "OME-Zarr label.", "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.6.dev3/schemas/_version.schema" } }, "required": [ diff --git a/schemas/ome.schema b/schemas/ome.schema index bd23d458..6374131f 100644 --- a/schemas/ome.schema +++ b/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.6.dev3/schemas/ome.schema", "title": "OME", "description": "OME-Zarr OME metadata.", "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.6.dev3/schemas/_version.schema" } }, "required": [ diff --git a/schemas/ome_zarr.schema b/schemas/ome_zarr.schema index fd841027..c7381be4 100644 --- a/schemas/ome_zarr.schema +++ b/schemas/ome_zarr.schema @@ -1,26 +1,26 @@ { "$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.6.dev3/schemas/ome_zarr.schema", "title": "OME-Zarr", "description": "Any OME-Zarr dataset.", "anyOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/bf2raw.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/bf2raw.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/image.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/label.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/ome.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/plate.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/well.schema" } ] } diff --git a/schemas/plate.schema b/schemas/plate.schema index 22efd0c4..88905188 100644 --- a/schemas/plate.schema +++ b/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.6.dev3/schemas/plate.schema", "title": "Plate", "description": "OME-Zarr plate.", "type": "object", @@ -138,7 +138,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/_version.schema" } }, "required": [ diff --git a/schemas/scene.schema b/schemas/scene.schema index f60263b5..32fd4d99 100644 --- a/schemas/scene.schema +++ b/schemas/scene.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.6.dev3/schemas/coordinate_systems_and_transforms.schema", "title": "Scene", "description": "Scene metadata combining coordinate systems and coordinate transformations to define spatial relationships", "type": "object", diff --git a/schemas/strict_axes.schema b/schemas/strict_axes.schema index 7420293d..562f0eb3 100644 --- a/schemas/strict_axes.schema +++ b/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.6.dev3/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.6.dev3/schemas/axes.schema" }, { "items": { diff --git a/schemas/strict_coordinate_systems.schema b/schemas/strict_coordinate_systems.schema index 7f160fda..fb19eea5 100644 --- a/schemas/strict_coordinate_systems.schema +++ b/schemas/strict_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/strict_coordinate_systems.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_coordinate_systems.schema", "allOf" : [ { "$ref": "coordinate_systems.schema" diff --git a/schemas/strict_image.schema b/schemas/strict_image.schema index 5207e3bd..fe5448bf 100644 --- a/schemas/strict_image.schema +++ b/schemas/strict_image.schema @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_image.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_image.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/image.schema" }, { "properties": { diff --git a/schemas/strict_label.schema b/schemas/strict_label.schema index 7557420c..36e1573a 100644 --- a/schemas/strict_label.schema +++ b/schemas/strict_label.schema @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_label.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_label.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/label.schema" }, { "properties": { diff --git a/schemas/strict_ome_zarr.schema b/schemas/strict_ome_zarr.schema index 187a962f..ec88d998 100644 --- a/schemas/strict_ome_zarr.schema +++ b/schemas/strict_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/strict_ome_zarr.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_ome_zarr.schema", "anyOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/bf2raw.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/bf2raw.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_image.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_label.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/ome.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_plate.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_well.schema" } ] } diff --git a/schemas/strict_plate.schema b/schemas/strict_plate.schema index 666dd65b..0627de21 100644 --- a/schemas/strict_plate.schema +++ b/schemas/strict_plate.schema @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_plate.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_plate.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/plate.schema" }, { "properties": { diff --git a/schemas/strict_well.schema b/schemas/strict_well.schema index 3ed4a084..37c43cb4 100644 --- a/schemas/strict_well.schema +++ b/schemas/strict_well.schema @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_well.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_well.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/well.schema" } ] } diff --git a/schemas/well.schema b/schemas/well.schema index 73784763..86139a05 100644 --- a/schemas/well.schema +++ b/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.6.dev3/schemas/well.schema", "title": "Well", "description": "OME-Zarr well.", "type": "object", @@ -41,7 +41,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/0.6.dev2/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/_version.schema" } }, "required": [ diff --git a/tests/attributes/spec/invalid/image/duplicate_axes.json b/tests/attributes/spec/invalid/image/duplicate_axes.json index 4337829f..48e41522 100644 --- a/tests/attributes/spec/invalid/image/duplicate_axes.json +++ b/tests/attributes/spec/invalid/image/duplicate_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/duplicate_scale.json b/tests/attributes/spec/invalid/image/duplicate_scale.json index f97c0885..714dd770 100644 --- a/tests/attributes/spec/invalid/image/duplicate_scale.json +++ b/tests/attributes/spec/invalid/image/duplicate_scale.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/empty_transformations.json b/tests/attributes/spec/invalid/image/empty_transformations.json index e55bc5c6..708e9a9f 100644 --- a/tests/attributes/spec/invalid/image/empty_transformations.json +++ b/tests/attributes/spec/invalid/image/empty_transformations.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/invalid_axes_count.json b/tests/attributes/spec/invalid/image/invalid_axes_count.json index 29f37b1a..98891124 100644 --- a/tests/attributes/spec/invalid/image/invalid_axes_count.json +++ b/tests/attributes/spec/invalid/image/invalid_axes_count.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/invalid_axis_type.json b/tests/attributes/spec/invalid/image/invalid_axis_type.json index 1110d0bb..15e5cb33 100644 --- a/tests/attributes/spec/invalid/image/invalid_axis_type.json +++ b/tests/attributes/spec/invalid/image/invalid_axis_type.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/invalid_channels_color.json b/tests/attributes/spec/invalid/image/invalid_channels_color.json index 20b2e23c..e3d0fa8b 100644 --- a/tests/attributes/spec/invalid/image/invalid_channels_color.json +++ b/tests/attributes/spec/invalid/image/invalid_channels_color.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/invalid_channels_window.json b/tests/attributes/spec/invalid/image/invalid_channels_window.json index d58680bd..9f1ea7f3 100644 --- a/tests/attributes/spec/invalid/image/invalid_channels_window.json +++ b/tests/attributes/spec/invalid/image/invalid_channels_window.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/invalid_multiscales_transformations.json b/tests/attributes/spec/invalid/image/invalid_multiscales_transformations.json index c969888f..e6b0cac9 100644 --- a/tests/attributes/spec/invalid/image/invalid_multiscales_transformations.json +++ b/tests/attributes/spec/invalid/image/invalid_multiscales_transformations.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/invalid_path.json b/tests/attributes/spec/invalid/image/invalid_path.json index e3f5f2f7..bbb9281b 100644 --- a/tests/attributes/spec/invalid/image/invalid_path.json +++ b/tests/attributes/spec/invalid/image/invalid_path.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/invalid_transformation_type.json b/tests/attributes/spec/invalid/image/invalid_transformation_type.json index 59d7a024..0a39cf8e 100644 --- a/tests/attributes/spec/invalid/image/invalid_transformation_type.json +++ b/tests/attributes/spec/invalid/image/invalid_transformation_type.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/missing_axes.json b/tests/attributes/spec/invalid/image/missing_axes.json index 0df61b60..3b130f26 100644 --- a/tests/attributes/spec/invalid/image/missing_axes.json +++ b/tests/attributes/spec/invalid/image/missing_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "datasets": [ diff --git a/tests/attributes/spec/invalid/image/missing_axes_name.json b/tests/attributes/spec/invalid/image/missing_axes_name.json index 8d44e9a2..7cbbf2c1 100644 --- a/tests/attributes/spec/invalid/image/missing_axes_name.json +++ b/tests/attributes/spec/invalid/image/missing_axes_name.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/missing_datasets.json b/tests/attributes/spec/invalid/image/missing_datasets.json index 367f797a..56680770 100644 --- a/tests/attributes/spec/invalid/image/missing_datasets.json +++ b/tests/attributes/spec/invalid/image/missing_datasets.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/missing_path.json b/tests/attributes/spec/invalid/image/missing_path.json index 085f5aeb..a02dc3e3 100644 --- a/tests/attributes/spec/invalid/image/missing_path.json +++ b/tests/attributes/spec/invalid/image/missing_path.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/missing_scale.json b/tests/attributes/spec/invalid/image/missing_scale.json index 1c58f1ca..84f0e0d7 100644 --- a/tests/attributes/spec/invalid/image/missing_scale.json +++ b/tests/attributes/spec/invalid/image/missing_scale.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/missing_space_axes.json b/tests/attributes/spec/invalid/image/missing_space_axes.json index 32689446..fd148c83 100644 --- a/tests/attributes/spec/invalid/image/missing_space_axes.json +++ b/tests/attributes/spec/invalid/image/missing_space_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/missing_transformations.json b/tests/attributes/spec/invalid/image/missing_transformations.json index 2d4f9a4c..71f98e08 100644 --- a/tests/attributes/spec/invalid/image/missing_transformations.json +++ b/tests/attributes/spec/invalid/image/missing_transformations.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/no_axes.json b/tests/attributes/spec/invalid/image/no_axes.json index 7d92fa49..1681a6ba 100644 --- a/tests/attributes/spec/invalid/image/no_axes.json +++ b/tests/attributes/spec/invalid/image/no_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "axes": [], diff --git a/tests/attributes/spec/invalid/image/no_datasets.json b/tests/attributes/spec/invalid/image/no_datasets.json index 894092d9..3fafed8b 100644 --- a/tests/attributes/spec/invalid/image/no_datasets.json +++ b/tests/attributes/spec/invalid/image/no_datasets.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/no_multiscales.json b/tests/attributes/spec/invalid/image/no_multiscales.json index 34970d7c..4f805a5b 100644 --- a/tests/attributes/spec/invalid/image/no_multiscales.json +++ b/tests/attributes/spec/invalid/image/no_multiscales.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [] }, "_conformance": { diff --git a/tests/attributes/spec/invalid/image/one_space_axes.json b/tests/attributes/spec/invalid/image/one_space_axes.json index 2ecd9fbe..0d5fe47d 100644 --- a/tests/attributes/spec/invalid/image/one_space_axes.json +++ b/tests/attributes/spec/invalid/image/one_space_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/too_many_axes.json b/tests/attributes/spec/invalid/image/too_many_axes.json index bc606714..9b565e8a 100644 --- a/tests/attributes/spec/invalid/image/too_many_axes.json +++ b/tests/attributes/spec/invalid/image/too_many_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/image/too_many_space_axes.json b/tests/attributes/spec/invalid/image/too_many_space_axes.json index 82f0b810..b764d233 100644 --- a/tests/attributes/spec/invalid/image/too_many_space_axes.json +++ b/tests/attributes/spec/invalid/image/too_many_space_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev22", + "version": "0.6.dev32", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/invalid/label/colors_duplicate.json b/tests/attributes/spec/invalid/label/colors_duplicate.json index 0f73138b..c729d61c 100644 --- a/tests/attributes/spec/invalid/label/colors_duplicate.json +++ b/tests/attributes/spec/invalid/label/colors_duplicate.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/attributes/spec/invalid/label/colors_no_label_value.json b/tests/attributes/spec/invalid/label/colors_no_label_value.json index 07dcc8d0..98f9f74f 100644 --- a/tests/attributes/spec/invalid/label/colors_no_label_value.json +++ b/tests/attributes/spec/invalid/label/colors_no_label_value.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/attributes/spec/invalid/label/colors_rgba_length.json b/tests/attributes/spec/invalid/label/colors_rgba_length.json index 650600b6..537a8754 100644 --- a/tests/attributes/spec/invalid/label/colors_rgba_length.json +++ b/tests/attributes/spec/invalid/label/colors_rgba_length.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/attributes/spec/invalid/label/colors_rgba_type.json b/tests/attributes/spec/invalid/label/colors_rgba_type.json index 88a83d03..55077532 100644 --- a/tests/attributes/spec/invalid/label/colors_rgba_type.json +++ b/tests/attributes/spec/invalid/label/colors_rgba_type.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/attributes/spec/invalid/label/empty_colors.json b/tests/attributes/spec/invalid/label/empty_colors.json index a360561e..c7dc04d4 100644 --- a/tests/attributes/spec/invalid/label/empty_colors.json +++ b/tests/attributes/spec/invalid/label/empty_colors.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [] } diff --git a/tests/attributes/spec/invalid/label/empty_properties.json b/tests/attributes/spec/invalid/label/empty_properties.json index 3c493d57..03f6ff92 100644 --- a/tests/attributes/spec/invalid/label/empty_properties.json +++ b/tests/attributes/spec/invalid/label/empty_properties.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "properties": [] } diff --git a/tests/attributes/spec/invalid/label/properties_no_label_value.json b/tests/attributes/spec/invalid/label/properties_no_label_value.json index 0abf0551..9b2153e5 100644 --- a/tests/attributes/spec/invalid/label/properties_no_label_value.json +++ b/tests/attributes/spec/invalid/label/properties_no_label_value.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "properties": [ { diff --git a/tests/attributes/spec/invalid/plate/acquisition_negative_starttime.json b/tests/attributes/spec/invalid/plate/acquisition_negative_starttime.json index 1823ff51..655c6ab5 100644 --- a/tests/attributes/spec/invalid/plate/acquisition_negative_starttime.json +++ b/tests/attributes/spec/invalid/plate/acquisition_negative_starttime.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/acquisition_noninteger_endtime.json b/tests/attributes/spec/invalid/plate/acquisition_noninteger_endtime.json index 1f6d5dd2..2b982d9c 100644 --- a/tests/attributes/spec/invalid/plate/acquisition_noninteger_endtime.json +++ b/tests/attributes/spec/invalid/plate/acquisition_noninteger_endtime.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/acquisition_noninteger_starttime.json b/tests/attributes/spec/invalid/plate/acquisition_noninteger_starttime.json index 2f7bef5a..8a273caa 100644 --- a/tests/attributes/spec/invalid/plate/acquisition_noninteger_starttime.json +++ b/tests/attributes/spec/invalid/plate/acquisition_noninteger_starttime.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/acquisition_zero_maximumfieldcount.json b/tests/attributes/spec/invalid/plate/acquisition_zero_maximumfieldcount.json index b5529829..518d74cc 100644 --- a/tests/attributes/spec/invalid/plate/acquisition_zero_maximumfieldcount.json +++ b/tests/attributes/spec/invalid/plate/acquisition_zero_maximumfieldcount.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/duplicate_columns.json b/tests/attributes/spec/invalid/plate/duplicate_columns.json index 2ff06f52..fb4e5bb9 100644 --- a/tests/attributes/spec/invalid/plate/duplicate_columns.json +++ b/tests/attributes/spec/invalid/plate/duplicate_columns.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/duplicate_rows-2.json b/tests/attributes/spec/invalid/plate/duplicate_rows-2.json index 77261e8a..92ca3ea8 100644 --- a/tests/attributes/spec/invalid/plate/duplicate_rows-2.json +++ b/tests/attributes/spec/invalid/plate/duplicate_rows-2.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/duplicate_rows.json b/tests/attributes/spec/invalid/plate/duplicate_rows.json index 71096f06..36c903ee 100644 --- a/tests/attributes/spec/invalid/plate/duplicate_rows.json +++ b/tests/attributes/spec/invalid/plate/duplicate_rows.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/empty_columns.json b/tests/attributes/spec/invalid/plate/empty_columns.json index 8ab54742..11df185c 100644 --- a/tests/attributes/spec/invalid/plate/empty_columns.json +++ b/tests/attributes/spec/invalid/plate/empty_columns.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [], "rows": [ diff --git a/tests/attributes/spec/invalid/plate/empty_rows.json b/tests/attributes/spec/invalid/plate/empty_rows.json index 2cb4b245..eb810ed2 100644 --- a/tests/attributes/spec/invalid/plate/empty_rows.json +++ b/tests/attributes/spec/invalid/plate/empty_rows.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/empty_wells.json b/tests/attributes/spec/invalid/plate/empty_wells.json index 82e1ddd6..4db2f924 100644 --- a/tests/attributes/spec/invalid/plate/empty_wells.json +++ b/tests/attributes/spec/invalid/plate/empty_wells.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_acquisition_id.json b/tests/attributes/spec/invalid/plate/missing_acquisition_id.json index 569dfd57..5e087fd1 100644 --- a/tests/attributes/spec/invalid/plate/missing_acquisition_id.json +++ b/tests/attributes/spec/invalid/plate/missing_acquisition_id.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_column_name.json b/tests/attributes/spec/invalid/plate/missing_column_name.json index 427df0db..e2d30353 100644 --- a/tests/attributes/spec/invalid/plate/missing_column_name.json +++ b/tests/attributes/spec/invalid/plate/missing_column_name.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_columns.json b/tests/attributes/spec/invalid/plate/missing_columns.json index 733d18ad..7c68c662 100644 --- a/tests/attributes/spec/invalid/plate/missing_columns.json +++ b/tests/attributes/spec/invalid/plate/missing_columns.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "rows": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_row_name.json b/tests/attributes/spec/invalid/plate/missing_row_name.json index c55d00f7..4b23f96e 100644 --- a/tests/attributes/spec/invalid/plate/missing_row_name.json +++ b/tests/attributes/spec/invalid/plate/missing_row_name.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_rows.json b/tests/attributes/spec/invalid/plate/missing_rows.json index 39bbdbdb..ae0dd276 100644 --- a/tests/attributes/spec/invalid/plate/missing_rows.json +++ b/tests/attributes/spec/invalid/plate/missing_rows.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_well_columnIndex.json b/tests/attributes/spec/invalid/plate/missing_well_columnIndex.json index 9402fd6c..0f5b3769 100644 --- a/tests/attributes/spec/invalid/plate/missing_well_columnIndex.json +++ b/tests/attributes/spec/invalid/plate/missing_well_columnIndex.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_well_path.json b/tests/attributes/spec/invalid/plate/missing_well_path.json index e7cd7baf..33ded0ed 100644 --- a/tests/attributes/spec/invalid/plate/missing_well_path.json +++ b/tests/attributes/spec/invalid/plate/missing_well_path.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_well_rowIndex.json b/tests/attributes/spec/invalid/plate/missing_well_rowIndex.json index fcea35f9..37f1951d 100644 --- a/tests/attributes/spec/invalid/plate/missing_well_rowIndex.json +++ b/tests/attributes/spec/invalid/plate/missing_well_rowIndex.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/missing_wells.json b/tests/attributes/spec/invalid/plate/missing_wells.json index 24822633..ea437dbc 100644 --- a/tests/attributes/spec/invalid/plate/missing_wells.json +++ b/tests/attributes/spec/invalid/plate/missing_wells.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/negative_acquisition_id.json b/tests/attributes/spec/invalid/plate/negative_acquisition_id.json index 412e463f..f91d3a58 100644 --- a/tests/attributes/spec/invalid/plate/negative_acquisition_id.json +++ b/tests/attributes/spec/invalid/plate/negative_acquisition_id.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/negative_endtime.json b/tests/attributes/spec/invalid/plate/negative_endtime.json index 8bc64165..a539cb4d 100644 --- a/tests/attributes/spec/invalid/plate/negative_endtime.json +++ b/tests/attributes/spec/invalid/plate/negative_endtime.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/non_alphanumeric_column.json b/tests/attributes/spec/invalid/plate/non_alphanumeric_column.json index 973d961b..52d78821 100644 --- a/tests/attributes/spec/invalid/plate/non_alphanumeric_column.json +++ b/tests/attributes/spec/invalid/plate/non_alphanumeric_column.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/non_integer_acquisition_id.json b/tests/attributes/spec/invalid/plate/non_integer_acquisition_id.json index 0e01a452..d4c0e4bb 100644 --- a/tests/attributes/spec/invalid/plate/non_integer_acquisition_id.json +++ b/tests/attributes/spec/invalid/plate/non_integer_acquisition_id.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.json b/tests/attributes/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.json index b44042fa..267f24ee 100644 --- a/tests/attributes/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.json +++ b/tests/attributes/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/invalid/plate/well_1group.json b/tests/attributes/spec/invalid/plate/well_1group.json index d3119201..bbd969c1 100644 --- a/tests/attributes/spec/invalid/plate/well_1group.json +++ b/tests/attributes/spec/invalid/plate/well_1group.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/well_3groups.json b/tests/attributes/spec/invalid/plate/well_3groups.json index c4c74e9d..577f8d02 100644 --- a/tests/attributes/spec/invalid/plate/well_3groups.json +++ b/tests/attributes/spec/invalid/plate/well_3groups.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/invalid/plate/zero_field_count.json b/tests/attributes/spec/invalid/plate/zero_field_count.json index 0cb80325..15509019 100644 --- a/tests/attributes/spec/invalid/plate/zero_field_count.json +++ b/tests/attributes/spec/invalid/plate/zero_field_count.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/valid/image/custom_type_axes.json b/tests/attributes/spec/valid/image/custom_type_axes.json index 594046b2..4561cc96 100644 --- a/tests/attributes/spec/valid/image/custom_type_axes.json +++ b/tests/attributes/spec/valid/image/custom_type_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev22", + "version": "0.6.dev32", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/valid/image/invalid_axis_units.json b/tests/attributes/spec/valid/image/invalid_axis_units.json index c36ca483..2a3eced5 100644 --- a/tests/attributes/spec/valid/image/invalid_axis_units.json +++ b/tests/attributes/spec/valid/image/invalid_axis_units.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/valid/image/mismatch_axes_units.json b/tests/attributes/spec/valid/image/mismatch_axes_units.json index d6cde0bc..bab72851 100644 --- a/tests/attributes/spec/valid/image/mismatch_axes_units.json +++ b/tests/attributes/spec/valid/image/mismatch_axes_units.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/valid/image/missing_name.json b/tests/attributes/spec/valid/image/missing_name.json index eafef43d..0850829a 100644 --- a/tests/attributes/spec/valid/image/missing_name.json +++ b/tests/attributes/spec/valid/image/missing_name.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "datasets": [ diff --git a/tests/attributes/spec/valid/image/untyped_axes.json b/tests/attributes/spec/valid/image/untyped_axes.json index 2db86407..ee20ceff 100644 --- a/tests/attributes/spec/valid/image/untyped_axes.json +++ b/tests/attributes/spec/valid/image/untyped_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/valid/label/minimal.json b/tests/attributes/spec/valid/label/minimal.json index 613d9322..a9ad949d 100644 --- a/tests/attributes/spec/valid/label/minimal.json +++ b/tests/attributes/spec/valid/label/minimal.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/attributes/spec/valid/label/minimal_properties.json b/tests/attributes/spec/valid/label/minimal_properties.json index 845664d6..8469d694 100644 --- a/tests/attributes/spec/valid/label/minimal_properties.json +++ b/tests/attributes/spec/valid/label/minimal_properties.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/attributes/spec/valid/plate/minimal_acquisitions.json b/tests/attributes/spec/valid/plate/minimal_acquisitions.json index 5c98cf35..39f2c757 100644 --- a/tests/attributes/spec/valid/plate/minimal_acquisitions.json +++ b/tests/attributes/spec/valid/plate/minimal_acquisitions.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/spec/valid/plate/minimal_no_acquisitions.json b/tests/attributes/spec/valid/plate/minimal_no_acquisitions.json index 038adbb5..cea8c250 100644 --- a/tests/attributes/spec/valid/plate/minimal_no_acquisitions.json +++ b/tests/attributes/spec/valid/plate/minimal_no_acquisitions.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/valid/plate/non_alphanumeric_row.json b/tests/attributes/spec/valid/plate/non_alphanumeric_row.json index 7438a56e..584b8763 100644 --- a/tests/attributes/spec/valid/plate/non_alphanumeric_row.json +++ b/tests/attributes/spec/valid/plate/non_alphanumeric_row.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/spec/valid/scene/scape.json b/tests/attributes/spec/valid/scene/scape.json index 7c75ddc3..5901178c 100644 --- a/tests/attributes/spec/valid/scene/scape.json +++ b/tests/attributes/spec/valid/scene/scape.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "coordinateTransformations": [ { "type": "translation", diff --git a/tests/attributes/spec/valid/well/minimal_acquisitions.json b/tests/attributes/spec/valid/well/minimal_acquisitions.json index 82d5b464..2bd6d5da 100644 --- a/tests/attributes/spec/valid/well/minimal_acquisitions.json +++ b/tests/attributes/spec/valid/well/minimal_acquisitions.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/attributes/spec/valid/well/minimal_no_acquisition.json b/tests/attributes/spec/valid/well/minimal_no_acquisition.json index 76730bcc..f4202221 100644 --- a/tests/attributes/spec/valid/well/minimal_no_acquisition.json +++ b/tests/attributes/spec/valid/well/minimal_no_acquisition.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/attributes/strict/invalid/label/no_colors.json b/tests/attributes/strict/invalid/label/no_colors.json index a7bce28d..39d29f4b 100644 --- a/tests/attributes/strict/invalid/label/no_colors.json +++ b/tests/attributes/strict/invalid/label/no_colors.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": {} }, "_conformance": { diff --git a/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json b/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json index ad30883e..1de76dcf 100644 --- a/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json +++ b/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev22", + "version": "0.6.dev32", "plate": { "acquisitions": [ { diff --git a/tests/attributes/strict/invalid/plate/missing_acquisition_name.json b/tests/attributes/strict/invalid/plate/missing_acquisition_name.json index f8ecec5c..b0fe45ff 100644 --- a/tests/attributes/strict/invalid/plate/missing_acquisition_name.json +++ b/tests/attributes/strict/invalid/plate/missing_acquisition_name.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/strict/invalid/plate/missing_name.json b/tests/attributes/strict/invalid/plate/missing_name.json index 662cfb21..7385c889 100644 --- a/tests/attributes/strict/invalid/plate/missing_name.json +++ b/tests/attributes/strict/invalid/plate/missing_name.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev22", + "version": "0.6.dev32", "plate": { "columns": [ { diff --git a/tests/attributes/strict/valid/image/image.json b/tests/attributes/strict/valid/image/image.json index 30a7d181..d68dfd0c 100644 --- a/tests/attributes/strict/valid/image/image.json +++ b/tests/attributes/strict/valid/image/image.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/strict/valid/image/image_metadata.json b/tests/attributes/strict/valid/image/image_metadata.json index 8bfbd253..f4613cf2 100644 --- a/tests/attributes/strict/valid/image/image_metadata.json +++ b/tests/attributes/strict/valid/image/image_metadata.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "@id": "top", "@type": "ngff:Image", "multiscales": [ diff --git a/tests/attributes/strict/valid/image/image_omero.json b/tests/attributes/strict/valid/image/image_omero.json index 20913cd6..682168ee 100644 --- a/tests/attributes/strict/valid/image/image_omero.json +++ b/tests/attributes/strict/valid/image/image_omero.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -155,7 +155,7 @@ "defaultZ": 2, "model": "color" }, - "version": "0.6.dev2" + "version": "0.6.dev3" } }, "_conformance": { diff --git a/tests/attributes/strict/valid/image/multiscales_example.json b/tests/attributes/strict/valid/image/multiscales_example.json index b31ea4d3..254726fb 100644 --- a/tests/attributes/strict/valid/image/multiscales_example.json +++ b/tests/attributes/strict/valid/image/multiscales_example.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "name": "example", diff --git a/tests/attributes/strict/valid/image/multiscales_transformations.json b/tests/attributes/strict/valid/image/multiscales_transformations.json index 1c01493b..d0878f0d 100644 --- a/tests/attributes/strict/valid/image/multiscales_transformations.json +++ b/tests/attributes/strict/valid/image/multiscales_transformations.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/strict/valid/plate/strict_acquisitions.json b/tests/attributes/strict/valid/plate/strict_acquisitions.json index 61d6cde1..ae7dfe38 100644 --- a/tests/attributes/strict/valid/plate/strict_acquisitions.json +++ b/tests/attributes/strict/valid/plate/strict_acquisitions.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/attributes/strict/valid/plate/strict_no_acquisitions.json b/tests/attributes/strict/valid/plate/strict_no_acquisitions.json index da63097d..4aee1c58 100644 --- a/tests/attributes/strict/valid/plate/strict_no_acquisitions.json +++ b/tests/attributes/strict/valid/plate/strict_no_acquisitions.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/attributes/strict/valid/well/strict_acquisitions.json b/tests/attributes/strict/valid/well/strict_acquisitions.json index 06932128..59fd1314 100644 --- a/tests/attributes/strict/valid/well/strict_acquisitions.json +++ b/tests/attributes/strict/valid/well/strict_acquisitions.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/attributes/strict/valid/well/strict_no_acquisitions.json b/tests/attributes/strict/valid/well/strict_no_acquisitions.json index 989def6b..6a7decef 100644 --- a/tests/attributes/strict/valid/well/strict_no_acquisitions.json +++ b/tests/attributes/strict/valid/well/strict_no_acquisitions.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/image_suite.json b/tests/image_suite.json index 71d099ef..7cd03887 100644 --- a/tests/image_suite.json +++ b/tests/image_suite.json @@ -9,7 +9,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -58,7 +58,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -105,7 +105,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -150,7 +150,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "datasets": [ @@ -203,7 +203,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -251,7 +251,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -296,7 +296,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -338,7 +338,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -382,7 +382,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -426,7 +426,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -484,7 +484,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -545,7 +545,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -587,7 +587,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -626,7 +626,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -672,7 +672,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -716,7 +716,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -766,7 +766,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -802,7 +802,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -834,7 +834,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -865,7 +865,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "datasets": [ @@ -892,7 +892,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -936,7 +936,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -986,7 +986,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "axes": [], @@ -1014,7 +1014,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -1064,7 +1064,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [] } }, @@ -1075,7 +1075,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -1136,7 +1136,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -1174,7 +1174,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/label_suite.json b/tests/label_suite.json index 493431a5..8fcc7f0a 100644 --- a/tests/label_suite.json +++ b/tests/label_suite.json @@ -8,7 +8,7 @@ "formerly": "image-label/minimal", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { @@ -25,7 +25,7 @@ "formerly": "image-label/minimal_properties", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { @@ -47,7 +47,7 @@ "formerly": "image-label/empty_colors", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [] } @@ -59,7 +59,7 @@ "formerly": "image-label/empty_properties", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "properties": [] } @@ -71,7 +71,7 @@ "formerly": "image-label/colors_no_label_value", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { @@ -87,7 +87,7 @@ "formerly": "image-label/properties_no_label_value", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "properties": [ { @@ -103,7 +103,7 @@ "formerly": "image-label/colors_rgba_length", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { @@ -120,7 +120,7 @@ "formerly": "image-label/colors_rgba_type", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { @@ -137,7 +137,7 @@ "formerly": "image-label/colors_duplicate", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/plate_suite.json b/tests/plate_suite.json index c8c9cd71..aea56a8a 100644 --- a/tests/plate_suite.json +++ b/tests/plate_suite.json @@ -8,7 +8,7 @@ "formerly": "plate/minimal_no_acquisitions", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -36,7 +36,7 @@ "formerly": "plate/minimal_acquisitions", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -69,7 +69,7 @@ "formerly": "plate/missing_rows", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -92,7 +92,7 @@ "formerly": "plate/empty_rows", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -116,7 +116,7 @@ "formerly": "plate/duplicate_rows", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -147,7 +147,7 @@ "formerly": "plate/missing_columns", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "rows": [ { @@ -170,7 +170,7 @@ "formerly": "plate/empty_columns", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [], "rows": [ @@ -194,7 +194,7 @@ "formerly": "plate/duplicate_columns", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -225,7 +225,7 @@ "formerly": "plate/missing_wells", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -246,7 +246,7 @@ "formerly": "plate/empty_wells", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -268,7 +268,7 @@ "formerly": "plate/duplicate_rows", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -304,7 +304,7 @@ "formerly": "plate/missing_column_name", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -332,7 +332,7 @@ "formerly": "plate/missing_row_name", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -360,7 +360,7 @@ "formerly": "plate/missing_well_path", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -387,7 +387,7 @@ "formerly": "plate/missing_well_rowIndex", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -414,7 +414,7 @@ "formerly": "plate/missing_well_columnIndex", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -441,7 +441,7 @@ "formerly": "plate/well_1group", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -468,7 +468,7 @@ "formerly": "plate/well_3groups", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -495,7 +495,7 @@ "formerly": "plate/non_alphanumeric_column", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -523,7 +523,7 @@ "formerly": "plate/non_alphanumeric_row", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -551,7 +551,7 @@ "formerly": "plate/missing_acquisition_id", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -584,7 +584,7 @@ "formerly": "plate/non_integer_acquisition_id", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -617,7 +617,7 @@ "formerly": "plate/negative_acquisition_id", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -650,7 +650,7 @@ "formerly": "plate/non_integer_acquisition_maximumfieldcount", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -684,7 +684,7 @@ "formerly": "plate/acquisition_zero_maximumfieldcount", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -718,7 +718,7 @@ "formerly": "plate/acquisition_noninteger_starttime", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -752,7 +752,7 @@ "formerly": "plate/acquisition_negative_starttime", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -786,7 +786,7 @@ "formerly": "plate/acquisition_noninteger_endtime", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -820,7 +820,7 @@ "formerly": "plate/negative_endtime", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -854,7 +854,7 @@ "formerly": "plate/zero_field_count", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/strict_image_suite.json b/tests/strict_image_suite.json index e0a335c5..52bce7a3 100644 --- a/tests/strict_image_suite.json +++ b/tests/strict_image_suite.json @@ -9,7 +9,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "name": "example", @@ -138,7 +138,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -210,7 +210,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "@id": "top", "@type": "ngff:Image", "multiscales": [ @@ -267,7 +267,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -316,7 +316,7 @@ "description": "TBD", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -453,7 +453,7 @@ "defaultZ": 2, "model": "color" }, - "version": "0.6.dev2" + "version": "0.6.dev3" } } }, diff --git a/tests/strict_label_suite.json b/tests/strict_label_suite.json index 2e52fea6..bd4659c6 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.6.dev2", + "version": "0.6.dev3", "image-label": {} } }, diff --git a/tests/strict_plate_suite.json b/tests/strict_plate_suite.json index 1537ec9d..4a2b56a0 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.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -37,7 +37,7 @@ "formerly": "plate/missing_name", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { @@ -65,7 +65,7 @@ "formerly": "plate/strict_acquisitions", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -101,7 +101,7 @@ "formerly": "plate/missing_acquisition_name", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { @@ -136,7 +136,7 @@ "formerly": "plate/missing_acquisition_maximumfieldcount", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/strict_well_suite.json b/tests/strict_well_suite.json index 4f0c92de..46a7bd83 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.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { @@ -24,7 +24,7 @@ "formerly": "plate/strict_acquisitions", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/test_validation.py b/tests/test_validation.py index 4926188b..1d9ac02f 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -17,10 +17,10 @@ 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.6.dev3/schemas/ome_zarr.schema" ] GENERIC_STRICT_SCHEMA = schema_store[ - "https://ngff.openmicroscopy.org/0.6.dev2/schemas/strict_ome_zarr.schema" + "https://ngff.openmicroscopy.org/0.6.dev3/schemas/strict_ome_zarr.schema" ] diff --git a/tests/well_suite.json b/tests/well_suite.json index 6dccd3ba..158c706b 100644 --- a/tests/well_suite.json +++ b/tests/well_suite.json @@ -8,7 +8,7 @@ "formerly": "well/minimal_no_acquisition", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { @@ -24,7 +24,7 @@ "formerly": "well/minimal_acquisitions", "data": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/zarr/spec/invalid/image/duplicate_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/duplicate_axes.ome.zarr/zarr.json index e1af509d..3981c5bd 100644 --- a/tests/zarr/spec/invalid/image/duplicate_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/duplicate_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/duplicate_scale.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/duplicate_scale.ome.zarr/zarr.json index 5d095704..a144322a 100644 --- a/tests/zarr/spec/invalid/image/duplicate_scale.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/duplicate_scale.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/empty_transformations.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/empty_transformations.ome.zarr/zarr.json index e61b0fb7..c2073565 100644 --- a/tests/zarr/spec/invalid/image/empty_transformations.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/empty_transformations.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/invalid_axes_count.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_axes_count.ome.zarr/zarr.json index c4b81eda..1aaf1b4e 100644 --- a/tests/zarr/spec/invalid/image/invalid_axes_count.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_axes_count.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json index 9b0a3ea0..abb6b6d0 100644 --- a/tests/zarr/spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/invalid_channels_color.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_channels_color.ome.zarr/zarr.json index 2625855d..1ec5864b 100644 --- a/tests/zarr/spec/invalid/image/invalid_channels_color.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_channels_color.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/invalid_channels_window.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_channels_window.ome.zarr/zarr.json index f2ad3d8f..f23a5759 100644 --- a/tests/zarr/spec/invalid/image/invalid_channels_window.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_channels_window.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/invalid_multiscales_transformations.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_multiscales_transformations.ome.zarr/zarr.json index 0eb3d104..42c35651 100644 --- a/tests/zarr/spec/invalid/image/invalid_multiscales_transformations.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_multiscales_transformations.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json index b8083f51..6d3db2bd 100644 --- a/tests/zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/invalid_transformation_type.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_transformation_type.ome.zarr/zarr.json index 1ce84e8e..f0b8dea2 100644 --- a/tests/zarr/spec/invalid/image/invalid_transformation_type.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_transformation_type.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json index b573036e..459eee76 100644 --- a/tests/zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "datasets": [ diff --git a/tests/zarr/spec/invalid/image/missing_axes_name.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_axes_name.ome.zarr/zarr.json index e17a2447..550f6fe8 100644 --- a/tests/zarr/spec/invalid/image/missing_axes_name.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_axes_name.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/missing_datasets.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_datasets.ome.zarr/zarr.json index 4bbbf312..7866baf9 100644 --- a/tests/zarr/spec/invalid/image/missing_datasets.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_datasets.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json index 63ffab03..5bfacfac 100644 --- a/tests/zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/missing_scale.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_scale.ome.zarr/zarr.json index 692b2847..cd0b5515 100644 --- a/tests/zarr/spec/invalid/image/missing_scale.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_scale.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/missing_space_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_space_axes.ome.zarr/zarr.json index d837998f..c3c23c0a 100644 --- a/tests/zarr/spec/invalid/image/missing_space_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_space_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/missing_transformations.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_transformations.ome.zarr/zarr.json index 1da42df1..de9f2f2a 100644 --- a/tests/zarr/spec/invalid/image/missing_transformations.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_transformations.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json index b54ce9a9..609ba137 100644 --- a/tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "axes": [], diff --git a/tests/zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json index d840848a..407110f7 100644 --- a/tests/zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/no_multiscales.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/no_multiscales.ome.zarr/zarr.json index d6e9485c..32be6622 100644 --- a/tests/zarr/spec/invalid/image/no_multiscales.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/no_multiscales.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [] }, "_conformance": { diff --git a/tests/zarr/spec/invalid/image/one_space_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/one_space_axes.ome.zarr/zarr.json index bcb60200..42e7d70b 100644 --- a/tests/zarr/spec/invalid/image/one_space_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/one_space_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/too_many_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/too_many_axes.ome.zarr/zarr.json index b71b7456..7cf4a9a1 100644 --- a/tests/zarr/spec/invalid/image/too_many_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/too_many_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/image/too_many_space_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/too_many_space_axes.ome.zarr/zarr.json index 18c3c9db..3d7c209a 100644 --- a/tests/zarr/spec/invalid/image/too_many_space_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/too_many_space_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/invalid/label/colors_duplicate.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/colors_duplicate.ome.zarr/zarr.json index 0880bf76..eae55d47 100644 --- a/tests/zarr/spec/invalid/label/colors_duplicate.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/colors_duplicate.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/zarr/spec/invalid/label/colors_no_label_value.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/colors_no_label_value.ome.zarr/zarr.json index 7f37f2b4..efc993f8 100644 --- a/tests/zarr/spec/invalid/label/colors_no_label_value.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/colors_no_label_value.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/zarr/spec/invalid/label/colors_rgba_length.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/colors_rgba_length.ome.zarr/zarr.json index 85d029b9..50966238 100644 --- a/tests/zarr/spec/invalid/label/colors_rgba_length.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/colors_rgba_length.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/zarr/spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json index b7fced99..60631f49 100644 --- a/tests/zarr/spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json index 06382686..1367d0bc 100644 --- a/tests/zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [] } diff --git a/tests/zarr/spec/invalid/label/empty_properties.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/empty_properties.ome.zarr/zarr.json index a62e8d7f..5026f4d7 100644 --- a/tests/zarr/spec/invalid/label/empty_properties.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/empty_properties.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "properties": [] } diff --git a/tests/zarr/spec/invalid/label/properties_no_label_value.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/properties_no_label_value.ome.zarr/zarr.json index f0cdbe54..5be47bb9 100644 --- a/tests/zarr/spec/invalid/label/properties_no_label_value.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/properties_no_label_value.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "properties": [ { diff --git a/tests/zarr/spec/invalid/plate/acquisition_negative_starttime.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/acquisition_negative_starttime.ome.zarr/zarr.json index e89e1eef..d08ebc0f 100644 --- a/tests/zarr/spec/invalid/plate/acquisition_negative_starttime.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/acquisition_negative_starttime.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/acquisition_noninteger_endtime.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/acquisition_noninteger_endtime.ome.zarr/zarr.json index 2bcfbaa2..42de8897 100644 --- a/tests/zarr/spec/invalid/plate/acquisition_noninteger_endtime.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/acquisition_noninteger_endtime.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/acquisition_noninteger_starttime.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/acquisition_noninteger_starttime.ome.zarr/zarr.json index 3de9e511..d88b42ac 100644 --- a/tests/zarr/spec/invalid/plate/acquisition_noninteger_starttime.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/acquisition_noninteger_starttime.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/acquisition_zero_maximumfieldcount.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/acquisition_zero_maximumfieldcount.ome.zarr/zarr.json index 7047b3fa..c8055d99 100644 --- a/tests/zarr/spec/invalid/plate/acquisition_zero_maximumfieldcount.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/acquisition_zero_maximumfieldcount.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json index 5f584398..b9156949 100644 --- a/tests/zarr/spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json index 7d838dff..dc1fe5e4 100644 --- a/tests/zarr/spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json index a3272b5d..84303e2f 100644 --- a/tests/zarr/spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/empty_columns.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/empty_columns.ome.zarr/zarr.json index 87322fa5..3715dc49 100644 --- a/tests/zarr/spec/invalid/plate/empty_columns.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/empty_columns.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [], "rows": [ diff --git a/tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json index 2c486bf1..9b723efd 100644 --- a/tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json index be4d3a84..0dd1670d 100644 --- a/tests/zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_acquisition_id.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_acquisition_id.ome.zarr/zarr.json index 861ff932..cb80c599 100644 --- a/tests/zarr/spec/invalid/plate/missing_acquisition_id.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_acquisition_id.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_column_name.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_column_name.ome.zarr/zarr.json index e656eaec..57d395b6 100644 --- a/tests/zarr/spec/invalid/plate/missing_column_name.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_column_name.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_columns.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_columns.ome.zarr/zarr.json index 5fd4dad1..4b2262a5 100644 --- a/tests/zarr/spec/invalid/plate/missing_columns.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_columns.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "rows": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_row_name.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_row_name.ome.zarr/zarr.json index 69642ca9..fee7d718 100644 --- a/tests/zarr/spec/invalid/plate/missing_row_name.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_row_name.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json index 8a00f901..5a8d8551 100644 --- a/tests/zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_well_columnIndex.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_well_columnIndex.ome.zarr/zarr.json index 8b76a13b..675a1332 100644 --- a/tests/zarr/spec/invalid/plate/missing_well_columnIndex.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_well_columnIndex.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_well_path.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_well_path.ome.zarr/zarr.json index 50ba914b..78e23bf0 100644 --- a/tests/zarr/spec/invalid/plate/missing_well_path.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_well_path.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json index f8b24478..d2bbb36a 100644 --- a/tests/zarr/spec/invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/missing_wells.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_wells.ome.zarr/zarr.json index ad8004a7..a99d3e71 100644 --- a/tests/zarr/spec/invalid/plate/missing_wells.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_wells.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/negative_acquisition_id.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/negative_acquisition_id.ome.zarr/zarr.json index 37084fcb..e965f1e4 100644 --- a/tests/zarr/spec/invalid/plate/negative_acquisition_id.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/negative_acquisition_id.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/negative_endtime.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/negative_endtime.ome.zarr/zarr.json index 916b89ad..01d6b3e0 100644 --- a/tests/zarr/spec/invalid/plate/negative_endtime.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/negative_endtime.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/non_alphanumeric_column.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/non_alphanumeric_column.ome.zarr/zarr.json index b12c4022..1c0eea6f 100644 --- a/tests/zarr/spec/invalid/plate/non_alphanumeric_column.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/non_alphanumeric_column.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/non_integer_acquisition_id.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/non_integer_acquisition_id.ome.zarr/zarr.json index a8c8b136..f8a49cfd 100644 --- a/tests/zarr/spec/invalid/plate/non_integer_acquisition_id.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/non_integer_acquisition_id.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.ome.zarr/zarr.json index 3b7406eb..78dc6976 100644 --- a/tests/zarr/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json index 21329407..84e6bac5 100644 --- a/tests/zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json index 0f17e8e6..c14e7dde 100644 --- a/tests/zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/invalid/plate/zero_field_count.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/zero_field_count.ome.zarr/zarr.json index f7cf0770..f7c71abc 100644 --- a/tests/zarr/spec/invalid/plate/zero_field_count.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/zero_field_count.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/valid/image/custom_type_axes.ome.zarr/zarr.json b/tests/zarr/spec/valid/image/custom_type_axes.ome.zarr/zarr.json index 74397653..e2cad304 100644 --- a/tests/zarr/spec/valid/image/custom_type_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/image/custom_type_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/valid/image/invalid_axis_units.ome.zarr/zarr.json b/tests/zarr/spec/valid/image/invalid_axis_units.ome.zarr/zarr.json index 61514ef5..5355c03f 100644 --- a/tests/zarr/spec/valid/image/invalid_axis_units.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/image/invalid_axis_units.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/valid/image/mismatch_axes_units.ome.zarr/zarr.json b/tests/zarr/spec/valid/image/mismatch_axes_units.ome.zarr/zarr.json index 26b59f2b..24bfe457 100644 --- a/tests/zarr/spec/valid/image/mismatch_axes_units.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/image/mismatch_axes_units.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/valid/image/missing_name.ome.zarr/zarr.json b/tests/zarr/spec/valid/image/missing_name.ome.zarr/zarr.json index a2acf372..e40e2342 100644 --- a/tests/zarr/spec/valid/image/missing_name.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/image/missing_name.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "datasets": [ diff --git a/tests/zarr/spec/valid/image/untyped_axes.ome.zarr/zarr.json b/tests/zarr/spec/valid/image/untyped_axes.ome.zarr/zarr.json index 58bb6bbb..cb0a6638 100644 --- a/tests/zarr/spec/valid/image/untyped_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/image/untyped_axes.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/spec/valid/label/minimal.ome.zarr/zarr.json b/tests/zarr/spec/valid/label/minimal.ome.zarr/zarr.json index c22346fd..749e88f2 100644 --- a/tests/zarr/spec/valid/label/minimal.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/label/minimal.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/zarr/spec/valid/label/minimal_properties.ome.zarr/zarr.json b/tests/zarr/spec/valid/label/minimal_properties.ome.zarr/zarr.json index 8225ddd8..2ac3197c 100644 --- a/tests/zarr/spec/valid/label/minimal_properties.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/label/minimal_properties.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": { "colors": [ { diff --git a/tests/zarr/spec/valid/plate/minimal_acquisitions.ome.zarr/zarr.json b/tests/zarr/spec/valid/plate/minimal_acquisitions.ome.zarr/zarr.json index a63abedd..419ce93a 100644 --- a/tests/zarr/spec/valid/plate/minimal_acquisitions.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/plate/minimal_acquisitions.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/spec/valid/plate/minimal_no_acquisitions.ome.zarr/zarr.json b/tests/zarr/spec/valid/plate/minimal_no_acquisitions.ome.zarr/zarr.json index 8d9732c2..15f91e06 100644 --- a/tests/zarr/spec/valid/plate/minimal_no_acquisitions.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/plate/minimal_no_acquisitions.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/valid/plate/non_alphanumeric_row.ome.zarr/zarr.json b/tests/zarr/spec/valid/plate/non_alphanumeric_row.ome.zarr/zarr.json index 16567d19..95bd9ebd 100644 --- a/tests/zarr/spec/valid/plate/non_alphanumeric_row.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/plate/non_alphanumeric_row.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/spec/valid/well/minimal_acquisitions.ome.zarr/zarr.json b/tests/zarr/spec/valid/well/minimal_acquisitions.ome.zarr/zarr.json index 029edc63..db27a57e 100644 --- a/tests/zarr/spec/valid/well/minimal_acquisitions.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/well/minimal_acquisitions.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/zarr/spec/valid/well/minimal_no_acquisition.ome.zarr/zarr.json b/tests/zarr/spec/valid/well/minimal_no_acquisition.ome.zarr/zarr.json index 655bbda2..038dfec6 100644 --- a/tests/zarr/spec/valid/well/minimal_no_acquisition.ome.zarr/zarr.json +++ b/tests/zarr/spec/valid/well/minimal_no_acquisition.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json b/tests/zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json index de9c608c..5c1a00d2 100644 --- a/tests/zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json +++ b/tests/zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "image-label": {} }, "_conformance": { diff --git a/tests/zarr/strict/invalid/plate/missing_acquisition_maximumfieldcount.ome.zarr/zarr.json b/tests/zarr/strict/invalid/plate/missing_acquisition_maximumfieldcount.ome.zarr/zarr.json index 993c7b37..1401fc0d 100644 --- a/tests/zarr/strict/invalid/plate/missing_acquisition_maximumfieldcount.ome.zarr/zarr.json +++ b/tests/zarr/strict/invalid/plate/missing_acquisition_maximumfieldcount.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/strict/invalid/plate/missing_acquisition_name.ome.zarr/zarr.json b/tests/zarr/strict/invalid/plate/missing_acquisition_name.ome.zarr/zarr.json index 47359ab3..3994a02c 100644 --- a/tests/zarr/strict/invalid/plate/missing_acquisition_name.ome.zarr/zarr.json +++ b/tests/zarr/strict/invalid/plate/missing_acquisition_name.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/strict/invalid/plate/missing_name.ome.zarr/zarr.json b/tests/zarr/strict/invalid/plate/missing_name.ome.zarr/zarr.json index 3fa24271..85330424 100644 --- a/tests/zarr/strict/invalid/plate/missing_name.ome.zarr/zarr.json +++ b/tests/zarr/strict/invalid/plate/missing_name.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/strict/valid/image/image.ome.zarr/zarr.json b/tests/zarr/strict/valid/image/image.ome.zarr/zarr.json index 4ac1879b..34e82110 100644 --- a/tests/zarr/strict/valid/image/image.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/image/image.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/strict/valid/image/image_metadata.ome.zarr/zarr.json b/tests/zarr/strict/valid/image/image_metadata.ome.zarr/zarr.json index 49566bb7..0d9b34bf 100644 --- a/tests/zarr/strict/valid/image/image_metadata.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/image/image_metadata.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "@id": "top", "@type": "ngff:Image", "multiscales": [ diff --git a/tests/zarr/strict/valid/image/image_omero.ome.zarr/zarr.json b/tests/zarr/strict/valid/image/image_omero.ome.zarr/zarr.json index 6365fcb4..71612149 100644 --- a/tests/zarr/strict/valid/image/image_omero.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/image/image_omero.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ @@ -158,7 +158,7 @@ "defaultZ": 2, "model": "color" }, - "version": "0.6.dev2" + "version": "0.6.dev3" } }, "_conformance": { diff --git a/tests/zarr/strict/valid/image/multiscales_example.ome.zarr/zarr.json b/tests/zarr/strict/valid/image/multiscales_example.ome.zarr/zarr.json index 913851a9..6a5c0e77 100644 --- a/tests/zarr/strict/valid/image/multiscales_example.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/image/multiscales_example.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "name": "example", diff --git a/tests/zarr/strict/valid/image/multiscales_transformations.ome.zarr/zarr.json b/tests/zarr/strict/valid/image/multiscales_transformations.ome.zarr/zarr.json index 2b0ef508..96daf552 100644 --- a/tests/zarr/strict/valid/image/multiscales_transformations.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/image/multiscales_transformations.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/zarr/strict/valid/plate/strict_acquisitions.ome.zarr/zarr.json b/tests/zarr/strict/valid/plate/strict_acquisitions.ome.zarr/zarr.json index 7318a1e4..5cdda77a 100644 --- a/tests/zarr/strict/valid/plate/strict_acquisitions.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/plate/strict_acquisitions.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "acquisitions": [ { diff --git a/tests/zarr/strict/valid/plate/strict_no_acquisitions.ome.zarr/zarr.json b/tests/zarr/strict/valid/plate/strict_no_acquisitions.ome.zarr/zarr.json index 8b1bd45c..8198c3a6 100644 --- a/tests/zarr/strict/valid/plate/strict_no_acquisitions.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/plate/strict_no_acquisitions.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "plate": { "columns": [ { diff --git a/tests/zarr/strict/valid/well/strict_acquisitions.ome.zarr/zarr.json b/tests/zarr/strict/valid/well/strict_acquisitions.ome.zarr/zarr.json index 593a736d..006b8a09 100644 --- a/tests/zarr/strict/valid/well/strict_acquisitions.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/well/strict_acquisitions.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { diff --git a/tests/zarr/strict/valid/well/strict_no_acquisitions.ome.zarr/zarr.json b/tests/zarr/strict/valid/well/strict_no_acquisitions.ome.zarr/zarr.json index deb56388..597daf37 100644 --- a/tests/zarr/strict/valid/well/strict_no_acquisitions.ome.zarr/zarr.json +++ b/tests/zarr/strict/valid/well/strict_no_acquisitions.ome.zarr/zarr.json @@ -3,7 +3,7 @@ "node_type": "group", "attributes": { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "well": { "images": [ { From 2fbd81720453858d5d26b141554d7e8737c69827 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 12:37:08 +0100 Subject: [PATCH 09/27] update changelog --- version_history.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/version_history.md b/version_history.md index 6e24feba..dc334931 100644 --- a/version_history.md +++ b/version_history.md @@ -8,6 +8,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [0.6.dev3] - 2026-01-21 + +### Changed + +Implemented feedback from Hackathon: +- Renamed top-level group for transformations to "Scene" +- Transformations in scene metadata must be object with fields "name" and "path" +- Made syntax of `mapAxis` and `byDimension` transforms consistent with other transforms +- For detailed set of changes see [complete overview](https://ngff.openmicroscopy.org/rfc/5/responses/2/index.html) +- Zarr parameter storage no longer allowed for scale/translation + +### Removed + +- Removed `inverseOf` transformation + ## [0.6.dev2] - 2025-12-02 ### Changed From f1852f3fef9681747b30003a652444219a6d0026 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 12:37:20 +0100 Subject: [PATCH 10/27] fix valid/invalid scene metadata --- .../spec/invalid/scene/tile_stitching.json | 66 +++++++++++++++++++ tests/attributes/spec/valid/scene/scape.json | 36 ---------- .../spec/valid/scene/tile_stitching.json | 8 +-- 3 files changed, 70 insertions(+), 40 deletions(-) create mode 100644 tests/attributes/spec/invalid/scene/tile_stitching.json delete mode 100644 tests/attributes/spec/valid/scene/scape.json diff --git a/tests/attributes/spec/invalid/scene/tile_stitching.json b/tests/attributes/spec/invalid/scene/tile_stitching.json new file mode 100644 index 00000000..3907da3c --- /dev/null +++ b/tests/attributes/spec/invalid/scene/tile_stitching.json @@ -0,0 +1,66 @@ +{ + "ome": { + "version": "0.6.dev3", + "coordinateTransformations": [ + { + "type": "translation", + "output": "world", + "input": {"path": "tile_0", "name": "physical"}, + "translation": [ + 0, + 0 + ], + "name": "tile_0_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_1", "name": "physical"}, + "translation": [ + 0, + 348 + ], + "name": "tile_1_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_2", "name": "physical"}, + "translation": [ + 276, + 0 + ], + "name": "tile_2_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_3", "name": "physical"}, + "translation": [ + 276, + 348 + ], + "name": "tile_3_mm to world" + } + ], + "coordinateSystems": [ + { + "name": "world", + "axes": [ + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/tests/attributes/spec/valid/scene/scape.json b/tests/attributes/spec/valid/scene/scape.json deleted file mode 100644 index 5901178c..00000000 --- a/tests/attributes/spec/valid/scene/scape.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "ome": { - "version": "0.6.dev3", - "coordinateTransformations": [ - { - "type": "translation", - "output": "world", - "input": {"path": "stack", "name": "unskewed"}, - "translation": [ - 5882.2, - 44249.4 - ], - "name": "stack to world" - } - ], - "coordinateSystems": [ - { - "name": "world", - "axes": [ - { - "type": "space", - "name": "x", - "unit": "micrometer", - "discrete": false - }, - { - "type": "space", - "name": "y", - "unit": "micrometer", - "discrete": false - } - ] - } - ] - } -} diff --git a/tests/attributes/spec/valid/scene/tile_stitching.json b/tests/attributes/spec/valid/scene/tile_stitching.json index 3907da3c..0aaf3a7e 100644 --- a/tests/attributes/spec/valid/scene/tile_stitching.json +++ b/tests/attributes/spec/valid/scene/tile_stitching.json @@ -4,7 +4,7 @@ "coordinateTransformations": [ { "type": "translation", - "output": "world", + "output": {"name": "world"}, "input": {"path": "tile_0", "name": "physical"}, "translation": [ 0, @@ -14,7 +14,7 @@ }, { "type": "translation", - "output": "world", + "output": {"name": "world"}, "input": {"path": "tile_1", "name": "physical"}, "translation": [ 0, @@ -24,7 +24,7 @@ }, { "type": "translation", - "output": "world", + "output": {"name": "world"}, "input": {"path": "tile_2", "name": "physical"}, "translation": [ 276, @@ -34,7 +34,7 @@ }, { "type": "translation", - "output": "world", + "output": {"name": "world"}, "input": {"path": "tile_3", "name": "physical"}, "translation": [ 276, From 728d519a9e84eb96fde30ad5299097edc827130e Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 12:42:02 +0100 Subject: [PATCH 11/27] append schema pointer to test json --- tests/attributes/spec/invalid/scene/tile_stitching.json | 6 ++++++ tests/attributes/spec/valid/scene/tile_stitching.json | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/tests/attributes/spec/invalid/scene/tile_stitching.json b/tests/attributes/spec/invalid/scene/tile_stitching.json index 3907da3c..36026658 100644 --- a/tests/attributes/spec/invalid/scene/tile_stitching.json +++ b/tests/attributes/spec/invalid/scene/tile_stitching.json @@ -62,5 +62,11 @@ ] } ] + }, + "_conformance": { + "schema": { + "id": "schemas/scene.schema" + }, + "description": "Tests for the scene JSON schema: " } } \ No newline at end of file diff --git a/tests/attributes/spec/valid/scene/tile_stitching.json b/tests/attributes/spec/valid/scene/tile_stitching.json index 0aaf3a7e..4c2348e7 100644 --- a/tests/attributes/spec/valid/scene/tile_stitching.json +++ b/tests/attributes/spec/valid/scene/tile_stitching.json @@ -62,5 +62,11 @@ ] } ] + }, + "_conformance": { + "schema": { + "id": "schemas/scene.schema" + }, + "description": "Tests for the scene JSON schema: " } } \ No newline at end of file From fcce3200033d2f01a16521052ae1917013a479e4 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:53:33 +0100 Subject: [PATCH 12/27] add function to test attributes --- tests/test_attributes.py | 72 ++++++++++++++++++++++++++++++++++++++++ tests/test_validation.py | 14 ++++++-- 2 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 tests/test_attributes.py diff --git a/tests/test_attributes.py b/tests/test_attributes.py new file mode 100644 index 00000000..8d4a32db --- /dev/null +++ b/tests/test_attributes.py @@ -0,0 +1,72 @@ +from pathlib import Path +from typing import Any +import json + +import pytest + +from jsonschema import RefResolver, Draft202012Validator as Validator +from jsonschema.exceptions import ValidationError + +here = Path(__file__).resolve().parent +schema_dir = here.parent.joinpath("schemas") +attrs_dir = here / "attributes" + +schema_store = {} +version = None +for schema_path in schema_dir.glob("*.schema*"): + schema = json.loads(schema_path.read_text()) + schema_store[schema["$id"]] = schema + if schema_path.stem == "_version": + version = schema["enum"][0] + +assert version is not None + +GENERIC_SCHEMA = schema_store[ + f"https://ngff.openmicroscopy.org/{version}/schemas/ome_zarr.schema" +] +STRICT_SCHEMA = schema_store[ + f"https://ngff.openmicroscopy.org/{version}/schemas/strict_ome_zarr.schema" +] + +case_fnames = sorted(attrs_dir.rglob("*.json")) + +xfails = set() + + +def fname_to_id(fpath: Path) -> str: + return str(fpath.relative_to(attrs_dir).with_suffix("")) + + +@pytest.mark.parametrize("case_fname", case_fnames, ids=fname_to_id) +def test_attributes(case_fname: Path): + if fname_to_id(case_fname) in xfails: + pytest.xfail("known JSON Schema limitation") + + case_obj: dict[str, Any] = json.loads(case_fname.read_text()) + + conformance = case_obj.get("_conformance", {}) + valid = conformance.get("valid", True) + strict = conformance.get("strict", False) + + if strict: + schema = STRICT_SCHEMA + else: + schema = GENERIC_SCHEMA + + resolver = RefResolver.from_schema( + schema, + store=schema_store, + ) + + validator_cls = Validator + + validator = validator_cls( + schema, + resolver=resolver, + ) + + if valid: + validator.validate(case_obj) + else: + with pytest.raises(ValidationError): + validator.validate(case_obj) \ No newline at end of file diff --git a/tests/test_validation.py b/tests/test_validation.py index 1d9ac02f..53364240 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -9,12 +9,16 @@ from jsonschema import RefResolver, Draft202012Validator as Validator from jsonschema.exceptions import ValidationError +from pathlib import Path + +os.chdir(Path(__file__).parent.parent) schema_store = {} for schema_filename in glob.glob("schemas/*"): - with open(schema_filename) as f: - schema = json.load(f) - schema_store[schema["$id"]] = schema + if schema_filename.endswith('.schema'): + with open(schema_filename) as f: + schema = json.load(f) + schema_store[schema["$id"]] = schema GENERIC_SCHEMA = schema_store[ "https://ngff.openmicroscopy.org/0.6.dev3/schemas/ome_zarr.schema" @@ -124,3 +128,7 @@ def test_example_configs(): missing.append(subdir[0]) if missing: raise Exception(f"Directories missing configs: {missing}") + + +if __name__ == '__main__': + pytest.main([__file__]) \ No newline at end of file From 677f65afe412879f42fc8f8e5a846b5c45142d1b Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:53:33 +0100 Subject: [PATCH 13/27] add function to test attributes --- tests/test_attributes.py | 72 ++++++++++++++++++++++++++++++++++++++++ tests/test_validation.py | 14 ++++++-- 2 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 tests/test_attributes.py diff --git a/tests/test_attributes.py b/tests/test_attributes.py new file mode 100644 index 00000000..8d4a32db --- /dev/null +++ b/tests/test_attributes.py @@ -0,0 +1,72 @@ +from pathlib import Path +from typing import Any +import json + +import pytest + +from jsonschema import RefResolver, Draft202012Validator as Validator +from jsonschema.exceptions import ValidationError + +here = Path(__file__).resolve().parent +schema_dir = here.parent.joinpath("schemas") +attrs_dir = here / "attributes" + +schema_store = {} +version = None +for schema_path in schema_dir.glob("*.schema*"): + schema = json.loads(schema_path.read_text()) + schema_store[schema["$id"]] = schema + if schema_path.stem == "_version": + version = schema["enum"][0] + +assert version is not None + +GENERIC_SCHEMA = schema_store[ + f"https://ngff.openmicroscopy.org/{version}/schemas/ome_zarr.schema" +] +STRICT_SCHEMA = schema_store[ + f"https://ngff.openmicroscopy.org/{version}/schemas/strict_ome_zarr.schema" +] + +case_fnames = sorted(attrs_dir.rglob("*.json")) + +xfails = set() + + +def fname_to_id(fpath: Path) -> str: + return str(fpath.relative_to(attrs_dir).with_suffix("")) + + +@pytest.mark.parametrize("case_fname", case_fnames, ids=fname_to_id) +def test_attributes(case_fname: Path): + if fname_to_id(case_fname) in xfails: + pytest.xfail("known JSON Schema limitation") + + case_obj: dict[str, Any] = json.loads(case_fname.read_text()) + + conformance = case_obj.get("_conformance", {}) + valid = conformance.get("valid", True) + strict = conformance.get("strict", False) + + if strict: + schema = STRICT_SCHEMA + else: + schema = GENERIC_SCHEMA + + resolver = RefResolver.from_schema( + schema, + store=schema_store, + ) + + validator_cls = Validator + + validator = validator_cls( + schema, + resolver=resolver, + ) + + if valid: + validator.validate(case_obj) + else: + with pytest.raises(ValidationError): + validator.validate(case_obj) \ No newline at end of file diff --git a/tests/test_validation.py b/tests/test_validation.py index 4926188b..0b7d8a1a 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -9,12 +9,16 @@ from jsonschema import RefResolver, Draft202012Validator as Validator from jsonschema.exceptions import ValidationError +from pathlib import Path + +os.chdir(Path(__file__).parent.parent) schema_store = {} for schema_filename in glob.glob("schemas/*"): - with open(schema_filename) as f: - schema = json.load(f) - schema_store[schema["$id"]] = schema + if schema_filename.endswith('.schema'): + with open(schema_filename) as f: + schema = json.load(f) + schema_store[schema["$id"]] = schema GENERIC_SCHEMA = schema_store[ "https://ngff.openmicroscopy.org/0.6.dev2/schemas/ome_zarr.schema" @@ -124,3 +128,7 @@ def test_example_configs(): missing.append(subdir[0]) if missing: raise Exception(f"Directories missing configs: {missing}") + + +if __name__ == '__main__': + pytest.main([__file__]) \ No newline at end of file From 59f14e313b28af5984efad78ae17eb992a519658 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 15:08:51 +0100 Subject: [PATCH 14/27] retrieve valid state from path --- tests/test_attributes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_attributes.py b/tests/test_attributes.py index 8d4a32db..f3fcf607 100644 --- a/tests/test_attributes.py +++ b/tests/test_attributes.py @@ -45,7 +45,7 @@ def test_attributes(case_fname: Path): case_obj: dict[str, Any] = json.loads(case_fname.read_text()) conformance = case_obj.get("_conformance", {}) - valid = conformance.get("valid", True) + valid = 'valid' in case_obj strict = conformance.get("strict", False) if strict: @@ -69,4 +69,4 @@ def test_attributes(case_fname: Path): validator.validate(case_obj) else: with pytest.raises(ValidationError): - validator.validate(case_obj) \ No newline at end of file + validator.validate(case_obj) From 02e73b5c1720c55345cb71c7c89da52010c644c2 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 16:01:58 +0100 Subject: [PATCH 15/27] add valid: false for invalid-marked examples --- tests/attributes/spec/invalid/image/duplicate_axes.json | 3 ++- tests/attributes/spec/invalid/image/duplicate_scale.json | 3 ++- .../spec/invalid/image/empty_transformations.json | 3 ++- tests/attributes/spec/invalid/image/invalid_axes_count.json | 3 ++- tests/attributes/spec/invalid/image/invalid_axis_type.json | 3 ++- .../spec/invalid/image/invalid_channels_color.json | 3 ++- .../spec/invalid/image/invalid_channels_window.json | 3 ++- .../invalid/image/invalid_multiscales_transformations.json | 3 ++- tests/attributes/spec/invalid/image/invalid_path.json | 3 ++- .../spec/invalid/image/invalid_transformation_type.json | 3 ++- tests/attributes/spec/invalid/image/missing_axes.json | 3 ++- tests/attributes/spec/invalid/image/missing_axes_name.json | 3 ++- tests/attributes/spec/invalid/image/missing_datasets.json | 3 ++- tests/attributes/spec/invalid/image/missing_path.json | 3 ++- tests/attributes/spec/invalid/image/missing_scale.json | 3 ++- tests/attributes/spec/invalid/image/missing_space_axes.json | 3 ++- .../spec/invalid/image/missing_transformations.json | 3 ++- tests/attributes/spec/invalid/image/no_axes.json | 3 ++- tests/attributes/spec/invalid/image/no_datasets.json | 3 ++- tests/attributes/spec/invalid/image/no_multiscales.json | 3 ++- tests/attributes/spec/invalid/image/one_space_axes.json | 3 ++- tests/attributes/spec/invalid/image/too_many_axes.json | 3 ++- .../attributes/spec/invalid/image/too_many_space_axes.json | 3 ++- tests/attributes/spec/invalid/label/colors_duplicate.json | 3 ++- .../spec/invalid/label/colors_no_label_value.json | 3 ++- tests/attributes/spec/invalid/label/colors_rgba_length.json | 3 ++- tests/attributes/spec/invalid/label/colors_rgba_type.json | 3 ++- tests/attributes/spec/invalid/label/empty_colors.json | 3 ++- tests/attributes/spec/invalid/label/empty_properties.json | 3 ++- .../spec/invalid/label/properties_no_label_value.json | 3 ++- .../spec/invalid/plate/acquisition_negative_starttime.json | 3 ++- .../spec/invalid/plate/acquisition_noninteger_endtime.json | 3 ++- .../invalid/plate/acquisition_noninteger_starttime.json | 3 ++- .../invalid/plate/acquisition_zero_maximumfieldcount.json | 3 ++- tests/attributes/spec/invalid/plate/duplicate_columns.json | 3 ++- tests/attributes/spec/invalid/plate/duplicate_rows-2.json | 3 ++- tests/attributes/spec/invalid/plate/duplicate_rows.json | 3 ++- tests/attributes/spec/invalid/plate/empty_columns.json | 3 ++- tests/attributes/spec/invalid/plate/empty_rows.json | 3 ++- tests/attributes/spec/invalid/plate/empty_wells.json | 3 ++- .../spec/invalid/plate/missing_acquisition_id.json | 3 ++- .../attributes/spec/invalid/plate/missing_column_name.json | 3 ++- tests/attributes/spec/invalid/plate/missing_columns.json | 3 ++- tests/attributes/spec/invalid/plate/missing_row_name.json | 3 ++- tests/attributes/spec/invalid/plate/missing_rows.json | 3 ++- .../spec/invalid/plate/missing_well_columnIndex.json | 3 ++- tests/attributes/spec/invalid/plate/missing_well_path.json | 3 ++- .../spec/invalid/plate/missing_well_rowIndex.json | 3 ++- tests/attributes/spec/invalid/plate/missing_wells.json | 3 ++- .../spec/invalid/plate/negative_acquisition_id.json | 3 ++- tests/attributes/spec/invalid/plate/negative_endtime.json | 3 ++- .../spec/invalid/plate/non_alphanumeric_column.json | 3 ++- .../spec/invalid/plate/non_integer_acquisition_id.json | 3 ++- .../plate/non_integer_acquisition_maximumfieldcount.json | 3 ++- tests/attributes/spec/invalid/plate/well_1group.json | 3 ++- tests/attributes/spec/invalid/plate/well_3groups.json | 3 ++- tests/attributes/spec/invalid/plate/zero_field_count.json | 3 ++- tests/attributes/spec/invalid/well/duplicate_images.json | 3 ++- tests/attributes/spec/invalid/well/empty_images.json | 3 ++- .../spec/invalid/well/non_integer_acquisition_id.json | 3 ++- tests/attributes/spec/valid/plate/minimal_acquisitions.json | 3 ++- tests/attributes/strict/invalid/label/no_colors.json | 3 ++- .../plate/missing_acquisition_maximumfieldcount.json | 3 ++- .../strict/invalid/plate/missing_acquisition_name.json | 3 ++- tests/attributes/strict/invalid/plate/missing_name.json | 3 ++- tests/test_attributes.py | 6 +++++- .../spec/invalid/image/duplicate_axes.ome.zarr/zarr.json | 3 ++- .../spec/invalid/image/duplicate_scale.ome.zarr/zarr.json | 3 ++- .../invalid/image/empty_transformations.ome.zarr/zarr.json | 3 ++- .../invalid/image/invalid_axes_count.ome.zarr/zarr.json | 3 ++- .../spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json | 3 ++- .../invalid/image/invalid_channels_color.ome.zarr/zarr.json | 3 ++- .../image/invalid_channels_window.ome.zarr/zarr.json | 3 ++- .../invalid_multiscales_transformations.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json | 3 ++- .../image/invalid_transformation_type.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json | 3 ++- .../spec/invalid/image/missing_axes_name.ome.zarr/zarr.json | 3 ++- .../spec/invalid/image/missing_datasets.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json | 3 ++- .../spec/invalid/image/missing_scale.ome.zarr/zarr.json | 3 ++- .../invalid/image/missing_space_axes.ome.zarr/zarr.json | 3 ++- .../image/missing_transformations.ome.zarr/zarr.json | 3 ++- tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json | 3 ++- .../spec/invalid/image/no_multiscales.ome.zarr/zarr.json | 3 ++- .../spec/invalid/image/one_space_axes.ome.zarr/zarr.json | 3 ++- .../spec/invalid/image/too_many_axes.ome.zarr/zarr.json | 3 ++- .../invalid/image/too_many_space_axes.ome.zarr/zarr.json | 3 ++- .../spec/invalid/label/colors_duplicate.ome.zarr/zarr.json | 3 ++- .../invalid/label/colors_no_label_value.ome.zarr/zarr.json | 3 ++- .../invalid/label/colors_rgba_length.ome.zarr/zarr.json | 3 ++- .../spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json | 3 ++- .../spec/invalid/label/empty_properties.ome.zarr/zarr.json | 3 ++- .../label/properties_no_label_value.ome.zarr/zarr.json | 3 ++- .../plate/acquisition_negative_starttime.ome.zarr/zarr.json | 3 ++- .../plate/acquisition_noninteger_endtime.ome.zarr/zarr.json | 3 ++- .../acquisition_noninteger_starttime.ome.zarr/zarr.json | 3 ++- .../acquisition_zero_maximumfieldcount.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/empty_columns.ome.zarr/zarr.json | 3 ++- tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json | 3 ++- .../invalid/plate/missing_acquisition_id.ome.zarr/zarr.json | 3 ++- .../invalid/plate/missing_column_name.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/missing_columns.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/missing_row_name.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json | 3 ++- .../plate/missing_well_columnIndex.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/missing_well_path.ome.zarr/zarr.json | 3 ++- .../invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/missing_wells.ome.zarr/zarr.json | 3 ++- .../plate/negative_acquisition_id.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/negative_endtime.ome.zarr/zarr.json | 3 ++- .../plate/non_alphanumeric_column.ome.zarr/zarr.json | 3 ++- .../plate/non_integer_acquisition_id.ome.zarr/zarr.json | 3 ++- .../zarr.json | 3 ++- .../zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json | 3 ++- .../spec/invalid/plate/zero_field_count.ome.zarr/zarr.json | 3 ++- .../spec/invalid/well/duplicate_images.ome.zarr/zarr.json | 3 ++- .../zarr/spec/invalid/well/empty_images.ome.zarr/zarr.json | 3 ++- .../well/non_integer_acquisition_id.ome.zarr/zarr.json | 3 ++- .../zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json | 3 ++- .../zarr.json | 3 ++- .../plate/missing_acquisition_name.ome.zarr/zarr.json | 3 ++- .../strict/invalid/plate/missing_name.ome.zarr/zarr.json | 3 ++- 130 files changed, 263 insertions(+), 130 deletions(-) diff --git a/tests/attributes/spec/invalid/image/duplicate_axes.json b/tests/attributes/spec/invalid/image/duplicate_axes.json index 4337829f..c2f27a1d 100644 --- a/tests/attributes/spec/invalid/image/duplicate_axes.json +++ b/tests/attributes/spec/invalid/image/duplicate_axes.json @@ -42,6 +42,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/duplicate_scale.json b/tests/attributes/spec/invalid/image/duplicate_scale.json index f97c0885..405d50f5 100644 --- a/tests/attributes/spec/invalid/image/duplicate_scale.json +++ b/tests/attributes/spec/invalid/image/duplicate_scale.json @@ -51,6 +51,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/empty_transformations.json b/tests/attributes/spec/invalid/image/empty_transformations.json index e55bc5c6..b4c5d967 100644 --- a/tests/attributes/spec/invalid/image/empty_transformations.json +++ b/tests/attributes/spec/invalid/image/empty_transformations.json @@ -33,5 +33,6 @@ "schema": { "id": "schemas/image.schema" } - } + }, + "valid": false } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/invalid_axes_count.json b/tests/attributes/spec/invalid/image/invalid_axes_count.json index 29f37b1a..0b1346f0 100644 --- a/tests/attributes/spec/invalid/image/invalid_axes_count.json +++ b/tests/attributes/spec/invalid/image/invalid_axes_count.json @@ -37,6 +37,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/invalid_axis_type.json b/tests/attributes/spec/invalid/image/invalid_axis_type.json index 1110d0bb..f004b7b0 100644 --- a/tests/attributes/spec/invalid/image/invalid_axis_type.json +++ b/tests/attributes/spec/invalid/image/invalid_axis_type.json @@ -42,6 +42,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/invalid_channels_color.json b/tests/attributes/spec/invalid/image/invalid_channels_color.json index 20b2e23c..c91ce42b 100644 --- a/tests/attributes/spec/invalid/image/invalid_channels_color.json +++ b/tests/attributes/spec/invalid/image/invalid_channels_color.json @@ -59,6 +59,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/invalid_channels_window.json b/tests/attributes/spec/invalid/image/invalid_channels_window.json index d58680bd..98e28fe7 100644 --- a/tests/attributes/spec/invalid/image/invalid_channels_window.json +++ b/tests/attributes/spec/invalid/image/invalid_channels_window.json @@ -59,6 +59,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/invalid_multiscales_transformations.json b/tests/attributes/spec/invalid/image/invalid_multiscales_transformations.json index c969888f..5379e631 100644 --- a/tests/attributes/spec/invalid/image/invalid_multiscales_transformations.json +++ b/tests/attributes/spec/invalid/image/invalid_multiscales_transformations.json @@ -50,6 +50,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/invalid_path.json b/tests/attributes/spec/invalid/image/invalid_path.json index e3f5f2f7..e1f74bd4 100644 --- a/tests/attributes/spec/invalid/image/invalid_path.json +++ b/tests/attributes/spec/invalid/image/invalid_path.json @@ -42,6 +42,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/invalid_transformation_type.json b/tests/attributes/spec/invalid/image/invalid_transformation_type.json index 59d7a024..96fc9d11 100644 --- a/tests/attributes/spec/invalid/image/invalid_transformation_type.json +++ b/tests/attributes/spec/invalid/image/invalid_transformation_type.json @@ -42,6 +42,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/missing_axes.json b/tests/attributes/spec/invalid/image/missing_axes.json index 0df61b60..e86d3cc6 100644 --- a/tests/attributes/spec/invalid/image/missing_axes.json +++ b/tests/attributes/spec/invalid/image/missing_axes.json @@ -25,6 +25,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/missing_axes_name.json b/tests/attributes/spec/invalid/image/missing_axes_name.json index 8d44e9a2..13f0a7ac 100644 --- a/tests/attributes/spec/invalid/image/missing_axes_name.json +++ b/tests/attributes/spec/invalid/image/missing_axes_name.json @@ -40,6 +40,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/missing_datasets.json b/tests/attributes/spec/invalid/image/missing_datasets.json index 367f797a..a4c81e5d 100644 --- a/tests/attributes/spec/invalid/image/missing_datasets.json +++ b/tests/attributes/spec/invalid/image/missing_datasets.json @@ -26,6 +26,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/missing_path.json b/tests/attributes/spec/invalid/image/missing_path.json index 085f5aeb..5d4c4ad1 100644 --- a/tests/attributes/spec/invalid/image/missing_path.json +++ b/tests/attributes/spec/invalid/image/missing_path.json @@ -41,6 +41,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/missing_scale.json b/tests/attributes/spec/invalid/image/missing_scale.json index 1c58f1ca..1a547087 100644 --- a/tests/attributes/spec/invalid/image/missing_scale.json +++ b/tests/attributes/spec/invalid/image/missing_scale.json @@ -42,6 +42,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/missing_space_axes.json b/tests/attributes/spec/invalid/image/missing_space_axes.json index 32689446..c52179e2 100644 --- a/tests/attributes/spec/invalid/image/missing_space_axes.json +++ b/tests/attributes/spec/invalid/image/missing_space_axes.json @@ -40,6 +40,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/missing_transformations.json b/tests/attributes/spec/invalid/image/missing_transformations.json index 2d4f9a4c..310bdd6d 100644 --- a/tests/attributes/spec/invalid/image/missing_transformations.json +++ b/tests/attributes/spec/invalid/image/missing_transformations.json @@ -31,6 +31,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/no_axes.json b/tests/attributes/spec/invalid/image/no_axes.json index 7d92fa49..c7203996 100644 --- a/tests/attributes/spec/invalid/image/no_axes.json +++ b/tests/attributes/spec/invalid/image/no_axes.json @@ -26,6 +26,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/no_datasets.json b/tests/attributes/spec/invalid/image/no_datasets.json index 894092d9..58c5bd78 100644 --- a/tests/attributes/spec/invalid/image/no_datasets.json +++ b/tests/attributes/spec/invalid/image/no_datasets.json @@ -27,6 +27,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/no_multiscales.json b/tests/attributes/spec/invalid/image/no_multiscales.json index 34970d7c..d88ba452 100644 --- a/tests/attributes/spec/invalid/image/no_multiscales.json +++ b/tests/attributes/spec/invalid/image/no_multiscales.json @@ -6,6 +6,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/one_space_axes.json b/tests/attributes/spec/invalid/image/one_space_axes.json index 2ecd9fbe..10e39bb6 100644 --- a/tests/attributes/spec/invalid/image/one_space_axes.json +++ b/tests/attributes/spec/invalid/image/one_space_axes.json @@ -45,6 +45,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/too_many_axes.json b/tests/attributes/spec/invalid/image/too_many_axes.json index bc606714..e376ebeb 100644 --- a/tests/attributes/spec/invalid/image/too_many_axes.json +++ b/tests/attributes/spec/invalid/image/too_many_axes.json @@ -60,6 +60,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/image/too_many_space_axes.json b/tests/attributes/spec/invalid/image/too_many_space_axes.json index 82f0b810..b8ff7aa9 100644 --- a/tests/attributes/spec/invalid/image/too_many_space_axes.json +++ b/tests/attributes/spec/invalid/image/too_many_space_axes.json @@ -50,6 +50,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/label/colors_duplicate.json b/tests/attributes/spec/invalid/label/colors_duplicate.json index 0f73138b..3bd23543 100644 --- a/tests/attributes/spec/invalid/label/colors_duplicate.json +++ b/tests/attributes/spec/invalid/label/colors_duplicate.json @@ -28,6 +28,7 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/label/colors_no_label_value.json b/tests/attributes/spec/invalid/label/colors_no_label_value.json index 07dcc8d0..489ba554 100644 --- a/tests/attributes/spec/invalid/label/colors_no_label_value.json +++ b/tests/attributes/spec/invalid/label/colors_no_label_value.json @@ -18,6 +18,7 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/label/colors_rgba_length.json b/tests/attributes/spec/invalid/label/colors_rgba_length.json index 650600b6..bd97b4e0 100644 --- a/tests/attributes/spec/invalid/label/colors_rgba_length.json +++ b/tests/attributes/spec/invalid/label/colors_rgba_length.json @@ -18,6 +18,7 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/label/colors_rgba_type.json b/tests/attributes/spec/invalid/label/colors_rgba_type.json index 88a83d03..44f2a096 100644 --- a/tests/attributes/spec/invalid/label/colors_rgba_type.json +++ b/tests/attributes/spec/invalid/label/colors_rgba_type.json @@ -19,6 +19,7 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/label/empty_colors.json b/tests/attributes/spec/invalid/label/empty_colors.json index a360561e..96838763 100644 --- a/tests/attributes/spec/invalid/label/empty_colors.json +++ b/tests/attributes/spec/invalid/label/empty_colors.json @@ -9,6 +9,7 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/label/empty_properties.json b/tests/attributes/spec/invalid/label/empty_properties.json index 3c493d57..00df37fd 100644 --- a/tests/attributes/spec/invalid/label/empty_properties.json +++ b/tests/attributes/spec/invalid/label/empty_properties.json @@ -9,6 +9,7 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/label/properties_no_label_value.json b/tests/attributes/spec/invalid/label/properties_no_label_value.json index 0abf0551..9e8d8659 100644 --- a/tests/attributes/spec/invalid/label/properties_no_label_value.json +++ b/tests/attributes/spec/invalid/label/properties_no_label_value.json @@ -13,6 +13,7 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/acquisition_negative_starttime.json b/tests/attributes/spec/invalid/plate/acquisition_negative_starttime.json index 1823ff51..8e6deec1 100644 --- a/tests/attributes/spec/invalid/plate/acquisition_negative_starttime.json +++ b/tests/attributes/spec/invalid/plate/acquisition_negative_starttime.json @@ -31,6 +31,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/acquisition_noninteger_endtime.json b/tests/attributes/spec/invalid/plate/acquisition_noninteger_endtime.json index 1f6d5dd2..c92fad77 100644 --- a/tests/attributes/spec/invalid/plate/acquisition_noninteger_endtime.json +++ b/tests/attributes/spec/invalid/plate/acquisition_noninteger_endtime.json @@ -31,6 +31,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/acquisition_noninteger_starttime.json b/tests/attributes/spec/invalid/plate/acquisition_noninteger_starttime.json index 2f7bef5a..0273f2cb 100644 --- a/tests/attributes/spec/invalid/plate/acquisition_noninteger_starttime.json +++ b/tests/attributes/spec/invalid/plate/acquisition_noninteger_starttime.json @@ -31,6 +31,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/acquisition_zero_maximumfieldcount.json b/tests/attributes/spec/invalid/plate/acquisition_zero_maximumfieldcount.json index b5529829..5f1c4a25 100644 --- a/tests/attributes/spec/invalid/plate/acquisition_zero_maximumfieldcount.json +++ b/tests/attributes/spec/invalid/plate/acquisition_zero_maximumfieldcount.json @@ -31,6 +31,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/duplicate_columns.json b/tests/attributes/spec/invalid/plate/duplicate_columns.json index 2ff06f52..048ee055 100644 --- a/tests/attributes/spec/invalid/plate/duplicate_columns.json +++ b/tests/attributes/spec/invalid/plate/duplicate_columns.json @@ -28,6 +28,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/duplicate_rows-2.json b/tests/attributes/spec/invalid/plate/duplicate_rows-2.json index 77261e8a..88df1308 100644 --- a/tests/attributes/spec/invalid/plate/duplicate_rows-2.json +++ b/tests/attributes/spec/invalid/plate/duplicate_rows-2.json @@ -33,6 +33,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/duplicate_rows.json b/tests/attributes/spec/invalid/plate/duplicate_rows.json index 71096f06..272cd9e7 100644 --- a/tests/attributes/spec/invalid/plate/duplicate_rows.json +++ b/tests/attributes/spec/invalid/plate/duplicate_rows.json @@ -28,6 +28,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/empty_columns.json b/tests/attributes/spec/invalid/plate/empty_columns.json index 8ab54742..06343c63 100644 --- a/tests/attributes/spec/invalid/plate/empty_columns.json +++ b/tests/attributes/spec/invalid/plate/empty_columns.json @@ -21,6 +21,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/empty_rows.json b/tests/attributes/spec/invalid/plate/empty_rows.json index 2cb4b245..da29f75d 100644 --- a/tests/attributes/spec/invalid/plate/empty_rows.json +++ b/tests/attributes/spec/invalid/plate/empty_rows.json @@ -21,6 +21,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/empty_wells.json b/tests/attributes/spec/invalid/plate/empty_wells.json index 82e1ddd6..221eea76 100644 --- a/tests/attributes/spec/invalid/plate/empty_wells.json +++ b/tests/attributes/spec/invalid/plate/empty_wells.json @@ -19,6 +19,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_acquisition_id.json b/tests/attributes/spec/invalid/plate/missing_acquisition_id.json index 569dfd57..632bf4c0 100644 --- a/tests/attributes/spec/invalid/plate/missing_acquisition_id.json +++ b/tests/attributes/spec/invalid/plate/missing_acquisition_id.json @@ -30,6 +30,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_column_name.json b/tests/attributes/spec/invalid/plate/missing_column_name.json index 427df0db..b718b9b6 100644 --- a/tests/attributes/spec/invalid/plate/missing_column_name.json +++ b/tests/attributes/spec/invalid/plate/missing_column_name.json @@ -25,6 +25,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_columns.json b/tests/attributes/spec/invalid/plate/missing_columns.json index 733d18ad..1c519bf1 100644 --- a/tests/attributes/spec/invalid/plate/missing_columns.json +++ b/tests/attributes/spec/invalid/plate/missing_columns.json @@ -20,6 +20,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_row_name.json b/tests/attributes/spec/invalid/plate/missing_row_name.json index c55d00f7..c5aade81 100644 --- a/tests/attributes/spec/invalid/plate/missing_row_name.json +++ b/tests/attributes/spec/invalid/plate/missing_row_name.json @@ -25,6 +25,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_rows.json b/tests/attributes/spec/invalid/plate/missing_rows.json index 39bbdbdb..0e893900 100644 --- a/tests/attributes/spec/invalid/plate/missing_rows.json +++ b/tests/attributes/spec/invalid/plate/missing_rows.json @@ -20,6 +20,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_well_columnIndex.json b/tests/attributes/spec/invalid/plate/missing_well_columnIndex.json index 9402fd6c..cb566075 100644 --- a/tests/attributes/spec/invalid/plate/missing_well_columnIndex.json +++ b/tests/attributes/spec/invalid/plate/missing_well_columnIndex.json @@ -24,6 +24,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_well_path.json b/tests/attributes/spec/invalid/plate/missing_well_path.json index e7cd7baf..089617b3 100644 --- a/tests/attributes/spec/invalid/plate/missing_well_path.json +++ b/tests/attributes/spec/invalid/plate/missing_well_path.json @@ -24,6 +24,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_well_rowIndex.json b/tests/attributes/spec/invalid/plate/missing_well_rowIndex.json index fcea35f9..b1971241 100644 --- a/tests/attributes/spec/invalid/plate/missing_well_rowIndex.json +++ b/tests/attributes/spec/invalid/plate/missing_well_rowIndex.json @@ -24,6 +24,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/missing_wells.json b/tests/attributes/spec/invalid/plate/missing_wells.json index 24822633..14bc4296 100644 --- a/tests/attributes/spec/invalid/plate/missing_wells.json +++ b/tests/attributes/spec/invalid/plate/missing_wells.json @@ -18,6 +18,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/negative_acquisition_id.json b/tests/attributes/spec/invalid/plate/negative_acquisition_id.json index 412e463f..502ecee2 100644 --- a/tests/attributes/spec/invalid/plate/negative_acquisition_id.json +++ b/tests/attributes/spec/invalid/plate/negative_acquisition_id.json @@ -30,6 +30,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/negative_endtime.json b/tests/attributes/spec/invalid/plate/negative_endtime.json index 8bc64165..56ba3da3 100644 --- a/tests/attributes/spec/invalid/plate/negative_endtime.json +++ b/tests/attributes/spec/invalid/plate/negative_endtime.json @@ -31,6 +31,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/non_alphanumeric_column.json b/tests/attributes/spec/invalid/plate/non_alphanumeric_column.json index 973d961b..df36d1ce 100644 --- a/tests/attributes/spec/invalid/plate/non_alphanumeric_column.json +++ b/tests/attributes/spec/invalid/plate/non_alphanumeric_column.json @@ -25,6 +25,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/non_integer_acquisition_id.json b/tests/attributes/spec/invalid/plate/non_integer_acquisition_id.json index 0e01a452..8b49dede 100644 --- a/tests/attributes/spec/invalid/plate/non_integer_acquisition_id.json +++ b/tests/attributes/spec/invalid/plate/non_integer_acquisition_id.json @@ -30,6 +30,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.json b/tests/attributes/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.json index b44042fa..5c0496ad 100644 --- a/tests/attributes/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.json +++ b/tests/attributes/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.json @@ -31,6 +31,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/well_1group.json b/tests/attributes/spec/invalid/plate/well_1group.json index d3119201..e034330f 100644 --- a/tests/attributes/spec/invalid/plate/well_1group.json +++ b/tests/attributes/spec/invalid/plate/well_1group.json @@ -24,6 +24,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/well_3groups.json b/tests/attributes/spec/invalid/plate/well_3groups.json index c4c74e9d..79c1489b 100644 --- a/tests/attributes/spec/invalid/plate/well_3groups.json +++ b/tests/attributes/spec/invalid/plate/well_3groups.json @@ -24,6 +24,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/plate/zero_field_count.json b/tests/attributes/spec/invalid/plate/zero_field_count.json index 0cb80325..e699da0c 100644 --- a/tests/attributes/spec/invalid/plate/zero_field_count.json +++ b/tests/attributes/spec/invalid/plate/zero_field_count.json @@ -26,6 +26,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/well/duplicate_images.json b/tests/attributes/spec/invalid/well/duplicate_images.json index 3978b0a1..d4a6e751 100644 --- a/tests/attributes/spec/invalid/well/duplicate_images.json +++ b/tests/attributes/spec/invalid/well/duplicate_images.json @@ -13,6 +13,7 @@ "schema": { "id": "schemas/well.schema" }, - "description": "Tests for the well JSON schema: " + "description": "Tests for the well JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/well/empty_images.json b/tests/attributes/spec/invalid/well/empty_images.json index ef0ccce1..b4eb93e4 100644 --- a/tests/attributes/spec/invalid/well/empty_images.json +++ b/tests/attributes/spec/invalid/well/empty_images.json @@ -6,6 +6,7 @@ "schema": { "id": "schemas/well.schema" }, - "description": "Tests for the well JSON schema: " + "description": "Tests for the well JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/invalid/well/non_integer_acquisition_id.json b/tests/attributes/spec/invalid/well/non_integer_acquisition_id.json index c3855a3f..8193e214 100644 --- a/tests/attributes/spec/invalid/well/non_integer_acquisition_id.json +++ b/tests/attributes/spec/invalid/well/non_integer_acquisition_id.json @@ -11,6 +11,7 @@ "schema": { "id": "schemas/well.schema" }, - "description": "Tests for the well JSON schema: " + "description": "Tests for the well JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/valid/plate/minimal_acquisitions.json b/tests/attributes/spec/valid/plate/minimal_acquisitions.json index 5c98cf35..6b9d798f 100644 --- a/tests/attributes/spec/valid/plate/minimal_acquisitions.json +++ b/tests/attributes/spec/valid/plate/minimal_acquisitions.json @@ -30,6 +30,7 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/strict/invalid/label/no_colors.json b/tests/attributes/strict/invalid/label/no_colors.json index a7bce28d..08ba4e66 100644 --- a/tests/attributes/strict/invalid/label/no_colors.json +++ b/tests/attributes/strict/invalid/label/no_colors.json @@ -7,6 +7,7 @@ "schema": { "id": "schemas/strict_label.schema" }, - "description": "Tests for the strict image-label JSON schema: " + "description": "Tests for the strict image-label JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json b/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json index ad30883e..4ab057e1 100644 --- a/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json +++ b/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json @@ -32,6 +32,7 @@ "schema": { "id": "schemas/strict_plate.schema" }, - "description": "Tests for the strict plate JSON schema: " + "description": "Tests for the strict plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/strict/invalid/plate/missing_acquisition_name.json b/tests/attributes/strict/invalid/plate/missing_acquisition_name.json index f8ecec5c..f5925f0b 100644 --- a/tests/attributes/strict/invalid/plate/missing_acquisition_name.json +++ b/tests/attributes/strict/invalid/plate/missing_acquisition_name.json @@ -32,6 +32,7 @@ "schema": { "id": "schemas/strict_plate.schema" }, - "description": "Tests for the strict plate JSON schema: " + "description": "Tests for the strict plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/strict/invalid/plate/missing_name.json b/tests/attributes/strict/invalid/plate/missing_name.json index 662cfb21..39e777d6 100644 --- a/tests/attributes/strict/invalid/plate/missing_name.json +++ b/tests/attributes/strict/invalid/plate/missing_name.json @@ -25,6 +25,7 @@ "schema": { "id": "schemas/strict_plate.schema" }, - "description": "Tests for the strict plate JSON schema: " + "description": "Tests for the strict plate JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/test_attributes.py b/tests/test_attributes.py index f3fcf607..406aaefc 100644 --- a/tests/test_attributes.py +++ b/tests/test_attributes.py @@ -45,7 +45,7 @@ def test_attributes(case_fname: Path): case_obj: dict[str, Any] = json.loads(case_fname.read_text()) conformance = case_obj.get("_conformance", {}) - valid = 'valid' in case_obj + valid = conformance.get("valid", True) strict = conformance.get("strict", False) if strict: @@ -70,3 +70,7 @@ def test_attributes(case_fname: Path): else: with pytest.raises(ValidationError): validator.validate(case_obj) + + +if __name__ == '__main__': + pytest.main([__file__]) \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/duplicate_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/duplicate_axes.ome.zarr/zarr.json index e1af509d..a5dd7ce0 100644 --- a/tests/zarr/spec/invalid/image/duplicate_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/duplicate_axes.ome.zarr/zarr.json @@ -45,7 +45,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/duplicate_scale.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/duplicate_scale.ome.zarr/zarr.json index 5d095704..68845515 100644 --- a/tests/zarr/spec/invalid/image/duplicate_scale.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/duplicate_scale.ome.zarr/zarr.json @@ -54,7 +54,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/empty_transformations.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/empty_transformations.ome.zarr/zarr.json index e61b0fb7..c85487f6 100644 --- a/tests/zarr/spec/invalid/image/empty_transformations.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/empty_transformations.ome.zarr/zarr.json @@ -35,7 +35,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/invalid_axes_count.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_axes_count.ome.zarr/zarr.json index c4b81eda..5ac2f031 100644 --- a/tests/zarr/spec/invalid/image/invalid_axes_count.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_axes_count.ome.zarr/zarr.json @@ -40,7 +40,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json index 9b0a3ea0..53c19450 100644 --- a/tests/zarr/spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_axis_type.ome.zarr/zarr.json @@ -45,7 +45,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/invalid_channels_color.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_channels_color.ome.zarr/zarr.json index 2625855d..09b09b9a 100644 --- a/tests/zarr/spec/invalid/image/invalid_channels_color.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_channels_color.ome.zarr/zarr.json @@ -62,7 +62,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/invalid_channels_window.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_channels_window.ome.zarr/zarr.json index f2ad3d8f..55f532be 100644 --- a/tests/zarr/spec/invalid/image/invalid_channels_window.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_channels_window.ome.zarr/zarr.json @@ -62,7 +62,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/invalid_multiscales_transformations.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_multiscales_transformations.ome.zarr/zarr.json index 0eb3d104..406ac452 100644 --- a/tests/zarr/spec/invalid/image/invalid_multiscales_transformations.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_multiscales_transformations.ome.zarr/zarr.json @@ -53,7 +53,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json index b8083f51..b6005757 100644 --- a/tests/zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_path.ome.zarr/zarr.json @@ -45,7 +45,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/invalid_transformation_type.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/invalid_transformation_type.ome.zarr/zarr.json index 1ce84e8e..7502a58e 100644 --- a/tests/zarr/spec/invalid/image/invalid_transformation_type.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/invalid_transformation_type.ome.zarr/zarr.json @@ -45,7 +45,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json index b573036e..8a2e8310 100644 --- a/tests/zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_axes.ome.zarr/zarr.json @@ -28,7 +28,8 @@ "_conformance": { "schema": { "id": "age.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/missing_axes_name.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_axes_name.ome.zarr/zarr.json index e17a2447..8af1ebd0 100644 --- a/tests/zarr/spec/invalid/image/missing_axes_name.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_axes_name.ome.zarr/zarr.json @@ -43,7 +43,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/missing_datasets.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_datasets.ome.zarr/zarr.json index 4bbbf312..60599d33 100644 --- a/tests/zarr/spec/invalid/image/missing_datasets.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_datasets.ome.zarr/zarr.json @@ -29,7 +29,8 @@ "_conformance": { "schema": { "id": "age.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json index 63ffab03..5c1aa8c4 100644 --- a/tests/zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_path.ome.zarr/zarr.json @@ -44,7 +44,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/missing_scale.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_scale.ome.zarr/zarr.json index 692b2847..60b56d1f 100644 --- a/tests/zarr/spec/invalid/image/missing_scale.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_scale.ome.zarr/zarr.json @@ -45,7 +45,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/missing_space_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_space_axes.ome.zarr/zarr.json index d837998f..57904b8c 100644 --- a/tests/zarr/spec/invalid/image/missing_space_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_space_axes.ome.zarr/zarr.json @@ -43,7 +43,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/missing_transformations.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/missing_transformations.ome.zarr/zarr.json index 1da42df1..b70d2f1d 100644 --- a/tests/zarr/spec/invalid/image/missing_transformations.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/missing_transformations.ome.zarr/zarr.json @@ -34,7 +34,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json index b54ce9a9..cd7b41f5 100644 --- a/tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/no_axes.ome.zarr/zarr.json @@ -29,7 +29,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json index d840848a..7e8a97db 100644 --- a/tests/zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/no_datasets.ome.zarr/zarr.json @@ -30,7 +30,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/no_multiscales.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/no_multiscales.ome.zarr/zarr.json index d6e9485c..c3c66fdf 100644 --- a/tests/zarr/spec/invalid/image/no_multiscales.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/no_multiscales.ome.zarr/zarr.json @@ -9,7 +9,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/one_space_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/one_space_axes.ome.zarr/zarr.json index bcb60200..0636e4bf 100644 --- a/tests/zarr/spec/invalid/image/one_space_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/one_space_axes.ome.zarr/zarr.json @@ -48,7 +48,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/too_many_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/too_many_axes.ome.zarr/zarr.json index b71b7456..7b50dadf 100644 --- a/tests/zarr/spec/invalid/image/too_many_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/too_many_axes.ome.zarr/zarr.json @@ -63,7 +63,8 @@ "_conformance": { "schema": { "id": "age.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/image/too_many_space_axes.ome.zarr/zarr.json b/tests/zarr/spec/invalid/image/too_many_space_axes.ome.zarr/zarr.json index 18c3c9db..bcc66218 100644 --- a/tests/zarr/spec/invalid/image/too_many_space_axes.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/image/too_many_space_axes.ome.zarr/zarr.json @@ -53,7 +53,8 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } + }, + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/label/colors_duplicate.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/colors_duplicate.ome.zarr/zarr.json index 0880bf76..627df6fd 100644 --- a/tests/zarr/spec/invalid/label/colors_duplicate.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/colors_duplicate.ome.zarr/zarr.json @@ -31,7 +31,8 @@ "schema": { "id": "bel.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/label/colors_no_label_value.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/colors_no_label_value.ome.zarr/zarr.json index 7f37f2b4..38abab8c 100644 --- a/tests/zarr/spec/invalid/label/colors_no_label_value.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/colors_no_label_value.ome.zarr/zarr.json @@ -21,7 +21,8 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/label/colors_rgba_length.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/colors_rgba_length.ome.zarr/zarr.json index 85d029b9..23aae035 100644 --- a/tests/zarr/spec/invalid/label/colors_rgba_length.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/colors_rgba_length.ome.zarr/zarr.json @@ -21,7 +21,8 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json index b7fced99..a3588403 100644 --- a/tests/zarr/spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/colors_rgba_type.ome.zarr/zarr.json @@ -22,7 +22,8 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json index 06382686..ca182b88 100644 --- a/tests/zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/empty_colors.ome.zarr/zarr.json @@ -12,7 +12,8 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/label/empty_properties.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/empty_properties.ome.zarr/zarr.json index a62e8d7f..adf4486d 100644 --- a/tests/zarr/spec/invalid/label/empty_properties.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/empty_properties.ome.zarr/zarr.json @@ -12,7 +12,8 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/label/properties_no_label_value.ome.zarr/zarr.json b/tests/zarr/spec/invalid/label/properties_no_label_value.ome.zarr/zarr.json index f0cdbe54..4a23d83b 100644 --- a/tests/zarr/spec/invalid/label/properties_no_label_value.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/label/properties_no_label_value.ome.zarr/zarr.json @@ -16,7 +16,8 @@ "schema": { "id": "schemas/label.schema" }, - "description": "Tests for the image-label JSON schema: " + "description": "Tests for the image-label JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/acquisition_negative_starttime.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/acquisition_negative_starttime.ome.zarr/zarr.json index e89e1eef..85564032 100644 --- a/tests/zarr/spec/invalid/plate/acquisition_negative_starttime.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/acquisition_negative_starttime.ome.zarr/zarr.json @@ -34,7 +34,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/acquisition_noninteger_endtime.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/acquisition_noninteger_endtime.ome.zarr/zarr.json index 2bcfbaa2..3ad6322a 100644 --- a/tests/zarr/spec/invalid/plate/acquisition_noninteger_endtime.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/acquisition_noninteger_endtime.ome.zarr/zarr.json @@ -34,7 +34,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/acquisition_noninteger_starttime.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/acquisition_noninteger_starttime.ome.zarr/zarr.json index 3de9e511..6846d4c8 100644 --- a/tests/zarr/spec/invalid/plate/acquisition_noninteger_starttime.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/acquisition_noninteger_starttime.ome.zarr/zarr.json @@ -34,7 +34,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/acquisition_zero_maximumfieldcount.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/acquisition_zero_maximumfieldcount.ome.zarr/zarr.json index 7047b3fa..38e5b823 100644 --- a/tests/zarr/spec/invalid/plate/acquisition_zero_maximumfieldcount.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/acquisition_zero_maximumfieldcount.ome.zarr/zarr.json @@ -34,7 +34,8 @@ "schema": { "id": "ate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json index 5f584398..bf3712a2 100644 --- a/tests/zarr/spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/duplicate_columns.ome.zarr/zarr.json @@ -31,7 +31,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json index 7d838dff..9fa66670 100644 --- a/tests/zarr/spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/duplicate_rows-2.ome.zarr/zarr.json @@ -36,7 +36,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json index a3272b5d..2e03fc82 100644 --- a/tests/zarr/spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/duplicate_rows.ome.zarr/zarr.json @@ -31,7 +31,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/empty_columns.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/empty_columns.ome.zarr/zarr.json index 87322fa5..1c17db2e 100644 --- a/tests/zarr/spec/invalid/plate/empty_columns.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/empty_columns.ome.zarr/zarr.json @@ -24,7 +24,8 @@ "schema": { "id": "ate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json index 2c486bf1..b4abf354 100644 --- a/tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/empty_rows.ome.zarr/zarr.json @@ -24,7 +24,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json index be4d3a84..9ccc2e3e 100644 --- a/tests/zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/empty_wells.ome.zarr/zarr.json @@ -22,7 +22,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_acquisition_id.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_acquisition_id.ome.zarr/zarr.json index 861ff932..6fd0eb78 100644 --- a/tests/zarr/spec/invalid/plate/missing_acquisition_id.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_acquisition_id.ome.zarr/zarr.json @@ -33,7 +33,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_column_name.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_column_name.ome.zarr/zarr.json index e656eaec..9c14531e 100644 --- a/tests/zarr/spec/invalid/plate/missing_column_name.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_column_name.ome.zarr/zarr.json @@ -28,7 +28,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_columns.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_columns.ome.zarr/zarr.json index 5fd4dad1..b14157f0 100644 --- a/tests/zarr/spec/invalid/plate/missing_columns.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_columns.ome.zarr/zarr.json @@ -23,7 +23,8 @@ "schema": { "id": "ate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_row_name.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_row_name.ome.zarr/zarr.json index 69642ca9..2ade098e 100644 --- a/tests/zarr/spec/invalid/plate/missing_row_name.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_row_name.ome.zarr/zarr.json @@ -28,7 +28,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json index 8a00f901..b075cfa2 100644 --- a/tests/zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_rows.ome.zarr/zarr.json @@ -23,7 +23,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_well_columnIndex.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_well_columnIndex.ome.zarr/zarr.json index 8b76a13b..b853593a 100644 --- a/tests/zarr/spec/invalid/plate/missing_well_columnIndex.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_well_columnIndex.ome.zarr/zarr.json @@ -27,7 +27,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_well_path.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_well_path.ome.zarr/zarr.json index 50ba914b..7f282faa 100644 --- a/tests/zarr/spec/invalid/plate/missing_well_path.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_well_path.ome.zarr/zarr.json @@ -27,7 +27,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json index f8b24478..27e7e7c1 100644 --- a/tests/zarr/spec/invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_well_rowIndex.ome.zarr/zarr.json @@ -27,7 +27,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/missing_wells.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/missing_wells.ome.zarr/zarr.json index ad8004a7..43f0f344 100644 --- a/tests/zarr/spec/invalid/plate/missing_wells.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/missing_wells.ome.zarr/zarr.json @@ -21,7 +21,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/negative_acquisition_id.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/negative_acquisition_id.ome.zarr/zarr.json index 37084fcb..51ae0578 100644 --- a/tests/zarr/spec/invalid/plate/negative_acquisition_id.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/negative_acquisition_id.ome.zarr/zarr.json @@ -33,7 +33,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/negative_endtime.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/negative_endtime.ome.zarr/zarr.json index 916b89ad..1e32799d 100644 --- a/tests/zarr/spec/invalid/plate/negative_endtime.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/negative_endtime.ome.zarr/zarr.json @@ -34,7 +34,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/non_alphanumeric_column.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/non_alphanumeric_column.ome.zarr/zarr.json index b12c4022..76fc2355 100644 --- a/tests/zarr/spec/invalid/plate/non_alphanumeric_column.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/non_alphanumeric_column.ome.zarr/zarr.json @@ -28,7 +28,8 @@ "schema": { "id": "" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/non_integer_acquisition_id.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/non_integer_acquisition_id.ome.zarr/zarr.json index a8c8b136..21d5ba2c 100644 --- a/tests/zarr/spec/invalid/plate/non_integer_acquisition_id.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/non_integer_acquisition_id.ome.zarr/zarr.json @@ -33,7 +33,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.ome.zarr/zarr.json index 3b7406eb..d69e666f 100644 --- a/tests/zarr/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/non_integer_acquisition_maximumfieldcount.ome.zarr/zarr.json @@ -34,7 +34,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json index 21329407..bbfecc3f 100644 --- a/tests/zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/well_1group.ome.zarr/zarr.json @@ -27,7 +27,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json index 0f17e8e6..e443cfd1 100644 --- a/tests/zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/well_3groups.ome.zarr/zarr.json @@ -27,7 +27,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/plate/zero_field_count.ome.zarr/zarr.json b/tests/zarr/spec/invalid/plate/zero_field_count.ome.zarr/zarr.json index f7cf0770..ccca5776 100644 --- a/tests/zarr/spec/invalid/plate/zero_field_count.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/plate/zero_field_count.ome.zarr/zarr.json @@ -29,7 +29,8 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: " + "description": "Tests for the plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/well/duplicate_images.ome.zarr/zarr.json b/tests/zarr/spec/invalid/well/duplicate_images.ome.zarr/zarr.json index e673272c..1d643118 100644 --- a/tests/zarr/spec/invalid/well/duplicate_images.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/well/duplicate_images.ome.zarr/zarr.json @@ -16,7 +16,8 @@ "schema": { "id": "schemas/well.schema" }, - "description": "Tests for the well JSON schema: " + "description": "Tests for the well JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/well/empty_images.ome.zarr/zarr.json b/tests/zarr/spec/invalid/well/empty_images.ome.zarr/zarr.json index e76374be..8b5bacb9 100644 --- a/tests/zarr/spec/invalid/well/empty_images.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/well/empty_images.ome.zarr/zarr.json @@ -9,7 +9,8 @@ "schema": { "id": "schemas/well.schema" }, - "description": "Tests for the well JSON schema: " + "description": "Tests for the well JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/spec/invalid/well/non_integer_acquisition_id.ome.zarr/zarr.json b/tests/zarr/spec/invalid/well/non_integer_acquisition_id.ome.zarr/zarr.json index 48e25dc6..45fcf75d 100644 --- a/tests/zarr/spec/invalid/well/non_integer_acquisition_id.ome.zarr/zarr.json +++ b/tests/zarr/spec/invalid/well/non_integer_acquisition_id.ome.zarr/zarr.json @@ -14,7 +14,8 @@ "schema": { "id": "schemas/well.schema" }, - "description": "Tests for the well JSON schema: " + "description": "Tests for the well JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json b/tests/zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json index de9c608c..7ca473ad 100644 --- a/tests/zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json +++ b/tests/zarr/strict/invalid/label/no_colors.ome.zarr/zarr.json @@ -10,7 +10,8 @@ "schema": { "id": "schemas/strict_label.schema" }, - "description": "Tests for the strict image-label JSON schema: " + "description": "Tests for the strict image-label JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/strict/invalid/plate/missing_acquisition_maximumfieldcount.ome.zarr/zarr.json b/tests/zarr/strict/invalid/plate/missing_acquisition_maximumfieldcount.ome.zarr/zarr.json index 993c7b37..a85154e4 100644 --- a/tests/zarr/strict/invalid/plate/missing_acquisition_maximumfieldcount.ome.zarr/zarr.json +++ b/tests/zarr/strict/invalid/plate/missing_acquisition_maximumfieldcount.ome.zarr/zarr.json @@ -35,7 +35,8 @@ "schema": { "id": "schemas/strict_plate.schema" }, - "description": "Tests for the strict plate JSON schema: " + "description": "Tests for the strict plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/strict/invalid/plate/missing_acquisition_name.ome.zarr/zarr.json b/tests/zarr/strict/invalid/plate/missing_acquisition_name.ome.zarr/zarr.json index 47359ab3..2b0b0c36 100644 --- a/tests/zarr/strict/invalid/plate/missing_acquisition_name.ome.zarr/zarr.json +++ b/tests/zarr/strict/invalid/plate/missing_acquisition_name.ome.zarr/zarr.json @@ -35,7 +35,8 @@ "schema": { "id": "schemas/strict_plate.schema" }, - "description": "Tests for the strict plate JSON schema: " + "description": "Tests for the strict plate JSON schema: ", + "valid": false } } } \ No newline at end of file diff --git a/tests/zarr/strict/invalid/plate/missing_name.ome.zarr/zarr.json b/tests/zarr/strict/invalid/plate/missing_name.ome.zarr/zarr.json index 3fa24271..09df63a8 100644 --- a/tests/zarr/strict/invalid/plate/missing_name.ome.zarr/zarr.json +++ b/tests/zarr/strict/invalid/plate/missing_name.ome.zarr/zarr.json @@ -28,7 +28,8 @@ "schema": { "id": "schemas/strict_plate.schema" }, - "description": "Tests for the strict plate JSON schema: " + "description": "Tests for the strict plate JSON schema: ", + "valid": false } } } \ No newline at end of file From 1258c25e06d800bd86dad82e0ebf671e1918fa72 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 16:22:49 +0100 Subject: [PATCH 16/27] add strict/valid fields to conformance json object --- .../spec/invalid/image/empty_transformations.json | 6 +++--- tests/attributes/spec/valid/image/custom_type_axes.json | 2 +- tests/attributes/spec/valid/plate/minimal_acquisitions.json | 3 +-- tests/attributes/strict/invalid/label/no_colors.json | 3 ++- .../plate/missing_acquisition_maximumfieldcount.json | 3 ++- .../strict/invalid/plate/missing_acquisition_name.json | 3 ++- tests/attributes/strict/invalid/plate/missing_name.json | 3 ++- tests/attributes/strict/valid/image/image.json | 3 ++- tests/attributes/strict/valid/image/image_metadata.json | 3 ++- tests/attributes/strict/valid/image/image_omero.json | 3 ++- .../attributes/strict/valid/image/multiscales_example.json | 3 ++- .../strict/valid/image/multiscales_transformations.json | 3 ++- .../attributes/strict/valid/plate/strict_acquisitions.json | 3 ++- .../strict/valid/plate/strict_no_acquisitions.json | 3 ++- tests/attributes/strict/valid/well/strict_acquisitions.json | 3 ++- .../strict/valid/well/strict_no_acquisitions.json | 3 ++- 16 files changed, 31 insertions(+), 19 deletions(-) diff --git a/tests/attributes/spec/invalid/image/empty_transformations.json b/tests/attributes/spec/invalid/image/empty_transformations.json index b4c5d967..fb27049a 100644 --- a/tests/attributes/spec/invalid/image/empty_transformations.json +++ b/tests/attributes/spec/invalid/image/empty_transformations.json @@ -32,7 +32,7 @@ "_conformance": { "schema": { "id": "schemas/image.schema" - } - }, - "valid": false + }, + "valid": false + } } \ No newline at end of file diff --git a/tests/attributes/spec/valid/image/custom_type_axes.json b/tests/attributes/spec/valid/image/custom_type_axes.json index 594046b2..afad10fb 100644 --- a/tests/attributes/spec/valid/image/custom_type_axes.json +++ b/tests/attributes/spec/valid/image/custom_type_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev22", + "version": "0.6.dev2", "multiscales": [ { "coordinateSystems": [ diff --git a/tests/attributes/spec/valid/plate/minimal_acquisitions.json b/tests/attributes/spec/valid/plate/minimal_acquisitions.json index 6b9d798f..5c98cf35 100644 --- a/tests/attributes/spec/valid/plate/minimal_acquisitions.json +++ b/tests/attributes/spec/valid/plate/minimal_acquisitions.json @@ -30,7 +30,6 @@ "schema": { "id": "schemas/plate.schema" }, - "description": "Tests for the plate JSON schema: ", - "valid": false + "description": "Tests for the plate JSON schema: " } } \ No newline at end of file diff --git a/tests/attributes/strict/invalid/label/no_colors.json b/tests/attributes/strict/invalid/label/no_colors.json index 08ba4e66..8b5788fe 100644 --- a/tests/attributes/strict/invalid/label/no_colors.json +++ b/tests/attributes/strict/invalid/label/no_colors.json @@ -8,6 +8,7 @@ "id": "schemas/strict_label.schema" }, "description": "Tests for the strict image-label JSON schema: ", - "valid": false + "valid": false, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json b/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json index 4ab057e1..960bf690 100644 --- a/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json +++ b/tests/attributes/strict/invalid/plate/missing_acquisition_maximumfieldcount.json @@ -33,6 +33,7 @@ "id": "schemas/strict_plate.schema" }, "description": "Tests for the strict plate JSON schema: ", - "valid": false + "valid": false, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/invalid/plate/missing_acquisition_name.json b/tests/attributes/strict/invalid/plate/missing_acquisition_name.json index f5925f0b..bb97baf8 100644 --- a/tests/attributes/strict/invalid/plate/missing_acquisition_name.json +++ b/tests/attributes/strict/invalid/plate/missing_acquisition_name.json @@ -33,6 +33,7 @@ "id": "schemas/strict_plate.schema" }, "description": "Tests for the strict plate JSON schema: ", - "valid": false + "valid": false, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/invalid/plate/missing_name.json b/tests/attributes/strict/invalid/plate/missing_name.json index 39e777d6..fcd4e5cb 100644 --- a/tests/attributes/strict/invalid/plate/missing_name.json +++ b/tests/attributes/strict/invalid/plate/missing_name.json @@ -26,6 +26,7 @@ "id": "schemas/strict_plate.schema" }, "description": "Tests for the strict plate JSON schema: ", - "valid": false + "valid": false, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/image/image.json b/tests/attributes/strict/valid/image/image.json index 30a7d181..5a356acd 100644 --- a/tests/attributes/strict/valid/image/image.json +++ b/tests/attributes/strict/valid/image/image.json @@ -47,6 +47,7 @@ "_conformance": { "schema": { "id": "schemas/strict_image.schema" - } + }, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/image/image_metadata.json b/tests/attributes/strict/valid/image/image_metadata.json index 8bfbd253..07aae3fe 100644 --- a/tests/attributes/strict/valid/image/image_metadata.json +++ b/tests/attributes/strict/valid/image/image_metadata.json @@ -58,6 +58,7 @@ "_conformance": { "schema": { "id": "schemas/strict_image.schema" - } + }, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/image/image_omero.json b/tests/attributes/strict/valid/image/image_omero.json index 20913cd6..ecd3951a 100644 --- a/tests/attributes/strict/valid/image/image_omero.json +++ b/tests/attributes/strict/valid/image/image_omero.json @@ -161,6 +161,7 @@ "_conformance": { "schema": { "id": "schemas/strict_image.schema" - } + }, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/image/multiscales_example.json b/tests/attributes/strict/valid/image/multiscales_example.json index b31ea4d3..e15aec8d 100644 --- a/tests/attributes/strict/valid/image/multiscales_example.json +++ b/tests/attributes/strict/valid/image/multiscales_example.json @@ -147,6 +147,7 @@ "_conformance": { "schema": { "id": "schemas/strict_image.schema" - } + }, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/image/multiscales_transformations.json b/tests/attributes/strict/valid/image/multiscales_transformations.json index 1c01493b..979f8427 100644 --- a/tests/attributes/strict/valid/image/multiscales_transformations.json +++ b/tests/attributes/strict/valid/image/multiscales_transformations.json @@ -73,6 +73,7 @@ "_conformance": { "schema": { "id": "schemas/strict_image.schema" - } + }, + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/plate/strict_acquisitions.json b/tests/attributes/strict/valid/plate/strict_acquisitions.json index 61d6cde1..2102142f 100644 --- a/tests/attributes/strict/valid/plate/strict_acquisitions.json +++ b/tests/attributes/strict/valid/plate/strict_acquisitions.json @@ -33,6 +33,7 @@ "schema": { "id": "schemas/strict_plate.schema" }, - "description": "Tests for the strict plate JSON schema: " + "description": "Tests for the strict plate JSON schema: ", + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/plate/strict_no_acquisitions.json b/tests/attributes/strict/valid/plate/strict_no_acquisitions.json index da63097d..3d67870e 100644 --- a/tests/attributes/strict/valid/plate/strict_no_acquisitions.json +++ b/tests/attributes/strict/valid/plate/strict_no_acquisitions.json @@ -26,6 +26,7 @@ "schema": { "id": "schemas/strict_plate.schema" }, - "description": "Tests for the strict plate JSON schema: " + "description": "Tests for the strict plate JSON schema: ", + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/well/strict_acquisitions.json b/tests/attributes/strict/valid/well/strict_acquisitions.json index 06932128..bec64f28 100644 --- a/tests/attributes/strict/valid/well/strict_acquisitions.json +++ b/tests/attributes/strict/valid/well/strict_acquisitions.json @@ -14,6 +14,7 @@ "schema": { "id": "schemas/strict_well.schema" }, - "description": "Tests for the strict well JSON schema: " + "description": "Tests for the strict well JSON schema: ", + "strict": true } } \ No newline at end of file diff --git a/tests/attributes/strict/valid/well/strict_no_acquisitions.json b/tests/attributes/strict/valid/well/strict_no_acquisitions.json index 989def6b..6c98269c 100644 --- a/tests/attributes/strict/valid/well/strict_no_acquisitions.json +++ b/tests/attributes/strict/valid/well/strict_no_acquisitions.json @@ -13,6 +13,7 @@ "schema": { "id": "schemas/strict_well.schema" }, - "description": "Tests for the strict well JSON schema: " + "description": "Tests for the strict well JSON schema: ", + "strict": true } } \ No newline at end of file From 1c9c63a789c455bb29b1146401021f0b055217dd Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 16:23:01 +0100 Subject: [PATCH 17/27] remove unused main --- tests/test_attributes.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/test_attributes.py b/tests/test_attributes.py index 406aaefc..8e1e51b1 100644 --- a/tests/test_attributes.py +++ b/tests/test_attributes.py @@ -70,7 +70,3 @@ def test_attributes(case_fname: Path): else: with pytest.raises(ValidationError): validator.validate(case_obj) - - -if __name__ == '__main__': - pytest.main([__file__]) \ No newline at end of file From 0a856e1665da91bc3c84f5f00d5e3ad8e05e5332 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 16:44:35 +0100 Subject: [PATCH 18/27] update examples --- tests/attributes/spec/invalid/scene/tile_stitching.json | 3 ++- tests/attributes/spec/valid/image/custom_type_axes.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/attributes/spec/invalid/scene/tile_stitching.json b/tests/attributes/spec/invalid/scene/tile_stitching.json index 36026658..614fa565 100644 --- a/tests/attributes/spec/invalid/scene/tile_stitching.json +++ b/tests/attributes/spec/invalid/scene/tile_stitching.json @@ -67,6 +67,7 @@ "schema": { "id": "schemas/scene.schema" }, - "description": "Tests for the scene JSON schema: " + "description": "Tests for the scene JSON schema: ", + "valid": false } } \ No newline at end of file diff --git a/tests/attributes/spec/valid/image/custom_type_axes.json b/tests/attributes/spec/valid/image/custom_type_axes.json index afad10fb..f4938ea0 100644 --- a/tests/attributes/spec/valid/image/custom_type_axes.json +++ b/tests/attributes/spec/valid/image/custom_type_axes.json @@ -1,6 +1,6 @@ { "ome": { - "version": "0.6.dev2", + "version": "0.6.dev3", "multiscales": [ { "coordinateSystems": [ From 4cc3a6ff01f4d046bff051c89c7542aaeeed419d Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 16:54:41 +0100 Subject: [PATCH 19/27] add scene to all schemas --- schemas/ome_zarr.schema | 3 +++ schemas/scene.schema | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/schemas/ome_zarr.schema b/schemas/ome_zarr.schema index c7381be4..71a5b115 100644 --- a/schemas/ome_zarr.schema +++ b/schemas/ome_zarr.schema @@ -21,6 +21,9 @@ }, { "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/well.schema" + }, + { + "$ref": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/scene.schema" } ] } diff --git a/schemas/scene.schema b/schemas/scene.schema index 32fd4d99..337aef8e 100644 --- a/schemas/scene.schema +++ b/schemas/scene.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/coordinate_systems_and_transforms.schema", + "$id": "https://ngff.openmicroscopy.org/0.6.dev3/schemas/scene.schema", "title": "Scene", "description": "Scene metadata combining coordinate systems and coordinate transformations to define spatial relationships", "type": "object", From 758638d40ec508800fe902943dff4ace36d21978 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 21 Jan 2026 17:09:11 +0100 Subject: [PATCH 20/27] require coordinateTransformations in scene --- schemas/scene.schema | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/schemas/scene.schema b/schemas/scene.schema index 337aef8e..40c29454 100644 --- a/schemas/scene.schema +++ b/schemas/scene.schema @@ -77,5 +77,6 @@ "axes" ] } - } + }, + "required": ["coordinateTransformations"] } From 1fb211085be22e07c02fe03026355b7692e2a4b7 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 22 Jan 2026 09:27:57 +0100 Subject: [PATCH 21/27] complete scene schema --- schemas/scene.schema | 120 +++++++++++++++++++++++-------------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/schemas/scene.schema b/schemas/scene.schema index 40c29454..95fa7db1 100644 --- a/schemas/scene.schema +++ b/schemas/scene.schema @@ -5,78 +5,84 @@ "description": "Scene metadata combining coordinate systems and coordinate transformations to define spatial relationships", "type": "object", "properties": { - "coordinateSystems": { - "$ref": "coordinate_systems.schema", - "description": "Coordinate systems to combine with transforms to define spatial relationships" - }, - "coordinateTransformations": { - "$comment": "Merge general coordinate transformations with constraints for scene metadata", - "allOf": [ - { - "$ref": "coordinate_transformations.schema", - "description": "General coordinate transformations defining spatial relationships between coordinate systems" - }, - { - "type": "array", - "items": { - "allOf": [ - { - "properties": { - "input": { - "type": "object", - "properties": { - "name": {"type": "string"}, - "path": {"type": "string"} - }, - "required": ["name"] - }, - "output": { - "type": "object", - "properties": { - "name": {"type": "string"}, - "path": {"type": "string"} - }, - "required": ["name"] - } - } - } - ] - }, - "description": "Constrained input/output for coordinate transformations in scene metadata" - } - ] - - }, - "arrayCoordinateSystem": { + "ome": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "Name of coordinate space" + "coordinateSystems": { + "$ref": "coordinate_systems.schema", + "description": "Coordinate systems to combine with transforms to define spatial relationships" }, - "axes": { + "coordinateTransformations": { + "$comment": "Merge general coordinate transformations with constraints for scene metadata", "allOf": [ { - "$ref": "axes.schema" + "$ref": "coordinate_transformations.schema", + "description": "General coordinate transformations defining spatial relationships between coordinate systems" }, { "type": "array", "items": { - "type": "object", - "properties": { - "type": { - "const": "array" + "allOf": [ + { + "properties": { + "input": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "path": {"type": "string"} + }, + "required": ["name"] + }, + "output": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "path": {"type": "string"} + }, + "required": ["name"] + } + } + } + ] + }, + "description": "Constrained input/output for coordinate transformations in scene metadata" + } + ] + + }, + "arrayCoordinateSystem": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of coordinate space" + }, + "axes": { + "allOf": [ + { + "$ref": "axes.schema" + }, + { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "const": "array" + } + } } } - } + ] } + }, + "required": [ + "axes" ] } }, - "required": [ - "axes" - ] + "required": ["coordinateTransformations"] } }, - "required": ["coordinateTransformations"] + "required": ["ome"] } From 5b9acb6088dc6507fca9acc8c1c690f635fe2b14 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 22 Jan 2026 09:28:05 +0100 Subject: [PATCH 22/27] rename example --- .../scene/scene_input_output_not_object.json | 75 +++++++++++++++++++ .../spec/invalid/scene/tile_stitching.json | 73 ------------------ 2 files changed, 75 insertions(+), 73 deletions(-) create mode 100644 tests/attributes/spec/invalid/scene/scene_input_output_not_object.json delete mode 100644 tests/attributes/spec/invalid/scene/tile_stitching.json diff --git a/tests/attributes/spec/invalid/scene/scene_input_output_not_object.json b/tests/attributes/spec/invalid/scene/scene_input_output_not_object.json new file mode 100644 index 00000000..251acdfe --- /dev/null +++ b/tests/attributes/spec/invalid/scene/scene_input_output_not_object.json @@ -0,0 +1,75 @@ +{ + "ome": { + "version": "0.6.dev3", + "scene": { + "coordinateTransformations": [ + { + "type": "translation", + "output": "world", + "input": {"path": "tile_0", "name": "physical"}, + "translation": [ + 0, + 0 + ], + "name": "tile_0_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_1", "name": "physical"}, + "translation": [ + 0, + 348 + ], + "name": "tile_1_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_2", "name": "physical"}, + "translation": [ + 276, + 0 + ], + "name": "tile_2_mm to world" + }, + { + "type": "translation", + "output": "world", + "input": {"path": "tile_3", "name": "physical"}, + "translation": [ + 276, + 348 + ], + "name": "tile_3_mm to world" + } + ], + "coordinateSystems": [ + { + "name": "world", + "axes": [ + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + } + ] + } + ] + } + }, + "_conformance": { + "schema": { + "id": "schemas/scene.schema" + }, + "description": "Tests for the scene JSON schema: ", + "valid": false + } +} \ No newline at end of file diff --git a/tests/attributes/spec/invalid/scene/tile_stitching.json b/tests/attributes/spec/invalid/scene/tile_stitching.json deleted file mode 100644 index 614fa565..00000000 --- a/tests/attributes/spec/invalid/scene/tile_stitching.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "ome": { - "version": "0.6.dev3", - "coordinateTransformations": [ - { - "type": "translation", - "output": "world", - "input": {"path": "tile_0", "name": "physical"}, - "translation": [ - 0, - 0 - ], - "name": "tile_0_mm to world" - }, - { - "type": "translation", - "output": "world", - "input": {"path": "tile_1", "name": "physical"}, - "translation": [ - 0, - 348 - ], - "name": "tile_1_mm to world" - }, - { - "type": "translation", - "output": "world", - "input": {"path": "tile_2", "name": "physical"}, - "translation": [ - 276, - 0 - ], - "name": "tile_2_mm to world" - }, - { - "type": "translation", - "output": "world", - "input": {"path": "tile_3", "name": "physical"}, - "translation": [ - 276, - 348 - ], - "name": "tile_3_mm to world" - } - ], - "coordinateSystems": [ - { - "name": "world", - "axes": [ - { - "type": "space", - "name": "x", - "unit": "micrometer", - "discrete": false - }, - { - "type": "space", - "name": "y", - "unit": "micrometer", - "discrete": false - } - ] - } - ] - }, - "_conformance": { - "schema": { - "id": "schemas/scene.schema" - }, - "description": "Tests for the scene JSON schema: ", - "valid": false - } -} \ No newline at end of file From 2259f770b427976f0150e5c46a6448eaa5645401 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:00:33 +0100 Subject: [PATCH 23/27] do not require version under multiscales --- schemas/image.schema | 6 ------ 1 file changed, 6 deletions(-) diff --git a/schemas/image.schema b/schemas/image.schema index 0ef4c86d..750acdaa 100644 --- a/schemas/image.schema +++ b/schemas/image.schema @@ -63,12 +63,6 @@ ] } }, - "version": { - "type": "string", - "enum": [ - "0.6.dev3" - ] - }, "coordinateSystems": { "type": "array", "minItems": 1, From 3dd4c59f1f2c00c8c4bd9b2173d5ec1bf21b6acf Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:00:58 +0100 Subject: [PATCH 24/27] name should be allowed field in multiscale transform --- schemas/image.schema | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/schemas/image.schema b/schemas/image.schema index 750acdaa..8b9d1478 100644 --- a/schemas/image.schema +++ b/schemas/image.schema @@ -106,7 +106,8 @@ "maxItems": 2 }, "input": {"type": "string"}, - "output": {"type": "string"} + "output": {"type": "string"}, + "name": {"type": "string"} }, "required": ["type", "transformations", "input", "output"] } From 2782fe5c0f46dc3b5ba6bb7fb02d7309c7e549d3 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:01:05 +0100 Subject: [PATCH 25/27] code style --- schemas/image.schema | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/schemas/image.schema b/schemas/image.schema index 8b9d1478..a5c2bab3 100644 --- a/schemas/image.schema +++ b/schemas/image.schema @@ -79,7 +79,8 @@ } }, "required": [ - "datasets", "coordinateSystems" + "datasets", + "coordinateSystems" ] }, "minItems": 1, From 4759c4e2b8784ce2d0513525a5a35cb00c134ecd Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:01:15 +0100 Subject: [PATCH 26/27] patch in scene field requirement --- schemas/scene.schema | 122 +++++++++++++++++++++++-------------------- 1 file changed, 64 insertions(+), 58 deletions(-) diff --git a/schemas/scene.schema b/schemas/scene.schema index 95fa7db1..7eec7a6b 100644 --- a/schemas/scene.schema +++ b/schemas/scene.schema @@ -8,80 +8,86 @@ "ome": { "type": "object", "properties": { - "coordinateSystems": { - "$ref": "coordinate_systems.schema", - "description": "Coordinate systems to combine with transforms to define spatial relationships" - }, - "coordinateTransformations": { - "$comment": "Merge general coordinate transformations with constraints for scene metadata", - "allOf": [ - { - "$ref": "coordinate_transformations.schema", - "description": "General coordinate transformations defining spatial relationships between coordinate systems" - }, - { - "type": "array", - "items": { - "allOf": [ - { - "properties": { - "input": { - "type": "object", - "properties": { - "name": {"type": "string"}, - "path": {"type": "string"} - }, - "required": ["name"] - }, - "output": { - "type": "object", - "properties": { - "name": {"type": "string"}, - "path": {"type": "string"} - }, - "required": ["name"] - } - } - } - ] - }, - "description": "Constrained input/output for coordinate transformations in scene metadata" - } - ] - - }, - "arrayCoordinateSystem": { - "type": "object", + "scene":{ "properties": { - "name": { - "type": "string", - "description": "Name of coordinate space" + "coordinateSystems": { + "$ref": "coordinate_systems.schema", + "description": "Coordinate systems to combine with transforms to define spatial relationships" }, - "axes": { + "coordinateTransformations": { + "$comment": "Merge general coordinate transformations with constraints for scene metadata", "allOf": [ { - "$ref": "axes.schema" + "$ref": "coordinate_transformations.schema", + "description": "General coordinate transformations defining spatial relationships between coordinate systems" }, { "type": "array", "items": { - "type": "object", - "properties": { - "type": { - "const": "array" + "allOf": [ + { + "properties": { + "input": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "path": {"type": "string"} + }, + "required": ["name"] + }, + "output": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "path": {"type": "string"} + }, + "required": ["name"] + } + } + } + ] + }, + "description": "Constrained input/output for coordinate transformations in scene metadata" + } + ] + + }, + "arrayCoordinateSystem": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of coordinate space" + }, + "axes": { + "allOf": [ + { + "$ref": "axes.schema" + }, + { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "const": "array" + } + } } } - } + ] } + }, + "required": [ + "axes" ] } }, - "required": [ - "axes" - ] + "type": "object", + "required": ["coordinateTransformations"] } }, - "required": ["coordinateTransformations"] + "required": ["scene"] } }, "required": ["ome"] From b0a9fc2017503a89b3b45e720aff245690418158 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:01:27 +0100 Subject: [PATCH 27/27] add/update more examples --- .../multiscales_transform_forbidden.json | 72 +++++++++++ .../multiscales_transform_missing_params.json | 99 ++++++++++++++++ ...multiscales_transform_no_input_output.json | 70 +++++++++++ ...ultiscales_transform_no_input_output2.json | 79 ++++++++++++ ...ltiscales_transform_additional_affine.json | 103 ++++++++++++++++ ...ales_transform_additional_affine_path.json | 99 ++++++++++++++++ ...ales_transform_additional_translation.json | 99 ++++++++++++++++ .../image/multiscales_transform_sequence.json | 71 +++++++++++ .../spec/valid/scene/tile_stitching.json | 112 +++++++++--------- 9 files changed, 749 insertions(+), 55 deletions(-) create mode 100644 tests/attributes/spec/invalid/image/multiscales_transform_forbidden.json create mode 100644 tests/attributes/spec/invalid/image/multiscales_transform_missing_params.json create mode 100644 tests/attributes/spec/invalid/image/multiscales_transform_no_input_output.json create mode 100644 tests/attributes/spec/invalid/image/multiscales_transform_no_input_output2.json create mode 100644 tests/attributes/spec/valid/image/multiscales_transform_additional_affine.json create mode 100644 tests/attributes/spec/valid/image/multiscales_transform_additional_affine_path.json create mode 100644 tests/attributes/spec/valid/image/multiscales_transform_additional_translation.json create mode 100644 tests/attributes/spec/valid/image/multiscales_transform_sequence.json diff --git a/tests/attributes/spec/invalid/image/multiscales_transform_forbidden.json b/tests/attributes/spec/invalid/image/multiscales_transform_forbidden.json new file mode 100644 index 00000000..7ab54ea6 --- /dev/null +++ b/tests/attributes/spec/invalid/image/multiscales_transform_forbidden.json @@ -0,0 +1,72 @@ +{ + "ome": { + "version": "0.6.dev3", + "multiscales": [ + { + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "sequence", + "output": "physical", + "input": "array", + "transformations": [ + { + "type": "rotation", + "rotation": [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ] + }, + { + "type": "translation", + "translation": [ + 30, + 20, + 10 + ] + } + ], + "name": "transform-name" + } + ] + } + ] + } + ] + }, + "_conformance": { + "schema": { + "id": "schemas/image.schema" + }, + "valid": false + } +} diff --git a/tests/attributes/spec/invalid/image/multiscales_transform_missing_params.json b/tests/attributes/spec/invalid/image/multiscales_transform_missing_params.json new file mode 100644 index 00000000..09f92ffc --- /dev/null +++ b/tests/attributes/spec/invalid/image/multiscales_transform_missing_params.json @@ -0,0 +1,99 @@ +{ + "ome": { + "version": "0.6.dev3", + "multiscales": [ + { + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + }, + { + "name": "output", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "sequence", + "input": "array", + "output": "physical", + "transformations": [ + { + "type": "scale", + "scale": [1, 1, 1] + }, + { + "type": "translation", + "translation": [ + 30, + 20, + 10 + ] + } + ], + "name": "transform-name" + } + ] + } + ], + "coordinateTransformations": [ + { + "type": "affine", + "name": "some_additional_transform", + "input": "physical", + "output": "output" + } + ] + } + ] + }, + "_conformance": { + "schema": { + "id": "schemas/image.schema" + }, + "valid": false + } +} diff --git a/tests/attributes/spec/invalid/image/multiscales_transform_no_input_output.json b/tests/attributes/spec/invalid/image/multiscales_transform_no_input_output.json new file mode 100644 index 00000000..185c1ce5 --- /dev/null +++ b/tests/attributes/spec/invalid/image/multiscales_transform_no_input_output.json @@ -0,0 +1,70 @@ +{ + "ome": { + "version": "0.6.dev3", + "multiscales": [ + { + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "sequence", + "transformations": [ + { + "type": "rotation", + "rotation": [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ] + }, + { + "type": "translation", + "translation": [ + 30, + 20, + 10 + ] + } + ], + "name": "transform-name" + } + ] + } + ] + } + ] + }, + "_conformance": { + "schema": { + "id": "schemas/image.schema" + }, + "valid": false + } +} diff --git a/tests/attributes/spec/invalid/image/multiscales_transform_no_input_output2.json b/tests/attributes/spec/invalid/image/multiscales_transform_no_input_output2.json new file mode 100644 index 00000000..3d9ba788 --- /dev/null +++ b/tests/attributes/spec/invalid/image/multiscales_transform_no_input_output2.json @@ -0,0 +1,79 @@ +{ + "ome": { + "version": "0.6.dev3", + "multiscales": [ + { + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "sequence", + "input": "array", + "output": "physical", + "transformations": [ + { + "type": "rotation", + "rotation": [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ] + }, + { + "type": "translation", + "translation": [ + 30, + 20, + 10 + ] + } + ], + "name": "transform-name" + } + ] + } + ], + "coordinateTransformations": [ + { + "type": "translation", + "translation": [1, 1, 1], + "name": "some_additional_transform" + } + ] + } + ] + }, + "_conformance": { + "schema": { + "id": "schemas/image.schema" + }, + "valid": false + } +} diff --git a/tests/attributes/spec/valid/image/multiscales_transform_additional_affine.json b/tests/attributes/spec/valid/image/multiscales_transform_additional_affine.json new file mode 100644 index 00000000..2ab29911 --- /dev/null +++ b/tests/attributes/spec/valid/image/multiscales_transform_additional_affine.json @@ -0,0 +1,103 @@ +{ + "ome": { + "version": "0.6.dev3", + "multiscales": [ + { + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + }, + { + "name": "output", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "sequence", + "input": "array", + "output": "physical", + "transformations": [ + { + "type": "scale", + "scale": [1, 1, 1] + }, + { + "type": "translation", + "translation": [ + 30, + 20, + 10 + ] + } + ], + "name": "transform-name" + } + ] + } + ], + "coordinateTransformations": [ + { + "type": "affine", + "affine": [ + [1, 1, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0] + ], + "name": "some_additional_transform", + "input": "physical", + "output": "output" + } + ] + } + ] + }, + "_conformance": { + "schema": { + "id": "schemas/image.schema" + } + } +} diff --git a/tests/attributes/spec/valid/image/multiscales_transform_additional_affine_path.json b/tests/attributes/spec/valid/image/multiscales_transform_additional_affine_path.json new file mode 100644 index 00000000..1c1fa186 --- /dev/null +++ b/tests/attributes/spec/valid/image/multiscales_transform_additional_affine_path.json @@ -0,0 +1,99 @@ +{ + "ome": { + "version": "0.6.dev3", + "multiscales": [ + { + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + }, + { + "name": "output", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "sequence", + "input": "array", + "output": "physical", + "transformations": [ + { + "type": "scale", + "scale": [1, 1, 1] + }, + { + "type": "translation", + "translation": [ + 30, + 20, + 10 + ] + } + ], + "name": "transform-name" + } + ] + } + ], + "coordinateTransformations": [ + { + "type": "affine", + "path": "some_path_to_affine_matrix", + "name": "some_additional_transform", + "input": "physical", + "output": "output" + } + ] + } + ] + }, + "_conformance": { + "schema": { + "id": "schemas/image.schema" + } + } +} diff --git a/tests/attributes/spec/valid/image/multiscales_transform_additional_translation.json b/tests/attributes/spec/valid/image/multiscales_transform_additional_translation.json new file mode 100644 index 00000000..c6e4f907 --- /dev/null +++ b/tests/attributes/spec/valid/image/multiscales_transform_additional_translation.json @@ -0,0 +1,99 @@ +{ + "ome": { + "version": "0.6.dev3", + "multiscales": [ + { + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + }, + { + "name": "output", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "sequence", + "input": "array", + "output": "physical", + "transformations": [ + { + "type": "scale", + "scale": [1, 1, 1] + }, + { + "type": "translation", + "translation": [ + 30, + 20, + 10 + ] + } + ], + "name": "transform-name" + } + ] + } + ], + "coordinateTransformations": [ + { + "type": "translation", + "translation": [1, 1, 1], + "name": "some_additional_transform", + "input": "physical", + "output": "output" + } + ] + } + ] + }, + "_conformance": { + "schema": { + "id": "schemas/image.schema" + } + } +} diff --git a/tests/attributes/spec/valid/image/multiscales_transform_sequence.json b/tests/attributes/spec/valid/image/multiscales_transform_sequence.json new file mode 100644 index 00000000..cd45168c --- /dev/null +++ b/tests/attributes/spec/valid/image/multiscales_transform_sequence.json @@ -0,0 +1,71 @@ +{ + "ome": { + "version": "0.6.dev3", + "multiscales": [ + { + "name": "multiscales", + "coordinateSystems": [ + { + "name": "physical", + "axes": [ + { + "type": "space", + "name": "z", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + } + ] + } + ], + "datasets": [ + { + "path": "array", + "coordinateTransformations": [ + { + "type": "sequence", + "output": "physical", + "input": "array", + "transformations": [ + { + "type": "scale", + "scale": [ + 4, + 3, + 2 + ] + }, + { + "type": "translation", + "translation": [ + 30, + 20, + 10 + ] + } + ], + "name": "transform-name" + } + ] + } + ] + } + ] + }, + "_conformance": { + "schema": { + "id": "schemas/image.schema" + } + } +} diff --git a/tests/attributes/spec/valid/scene/tile_stitching.json b/tests/attributes/spec/valid/scene/tile_stitching.json index 4c2348e7..aa641667 100644 --- a/tests/attributes/spec/valid/scene/tile_stitching.json +++ b/tests/attributes/spec/valid/scene/tile_stitching.json @@ -1,67 +1,69 @@ { "ome": { "version": "0.6.dev3", - "coordinateTransformations": [ - { - "type": "translation", - "output": {"name": "world"}, - "input": {"path": "tile_0", "name": "physical"}, - "translation": [ - 0, - 0 - ], - "name": "tile_0_mm to world" - }, - { - "type": "translation", - "output": {"name": "world"}, - "input": {"path": "tile_1", "name": "physical"}, - "translation": [ - 0, - 348 - ], - "name": "tile_1_mm to world" - }, - { - "type": "translation", - "output": {"name": "world"}, - "input": {"path": "tile_2", "name": "physical"}, - "translation": [ - 276, - 0 - ], - "name": "tile_2_mm to world" - }, - { - "type": "translation", - "output": {"name": "world"}, - "input": {"path": "tile_3", "name": "physical"}, - "translation": [ - 276, - 348 - ], - "name": "tile_3_mm to world" - } - ], - "coordinateSystems": [ - { - "name": "world", - "axes": [ + "scene":{ + "coordinateTransformations": [ { - "type": "space", - "name": "x", - "unit": "micrometer", - "discrete": false + "type": "translation", + "output": {"name": "world"}, + "input": {"path": "tile_0", "name": "physical"}, + "translation": [ + 0, + 0 + ], + "name": "tile_0_mm to world" }, { - "type": "space", - "name": "y", - "unit": "micrometer", - "discrete": false + "type": "translation", + "output": {"name": "world"}, + "input": {"path": "tile_1", "name": "physical"}, + "translation": [ + 0, + 348 + ], + "name": "tile_1_mm to world" + }, + { + "type": "translation", + "output": {"name": "world"}, + "input": {"path": "tile_2", "name": "physical"}, + "translation": [ + 276, + 0 + ], + "name": "tile_2_mm to world" + }, + { + "type": "translation", + "output": {"name": "world"}, + "input": {"path": "tile_3", "name": "physical"}, + "translation": [ + 276, + 348 + ], + "name": "tile_3_mm to world" + } + ], + "coordinateSystems": [ + { + "name": "world", + "axes": [ + { + "type": "space", + "name": "x", + "unit": "micrometer", + "discrete": false + }, + { + "type": "space", + "name": "y", + "unit": "micrometer", + "discrete": false + } + ] } ] } - ] }, "_conformance": { "schema": {