From ff765810461da378cfc6bc4c23addef0d52dfd11 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 30 May 2024 16:55:01 +0100 Subject: [PATCH 01/35] Changes to the spec and schemata for RFC-2 --- latest/examples/bf2raw/image.json | 8 +- latest/examples/bf2raw/plate.json | 51 +- .../label_strict/colors_properties.json | 57 +- .../multiscales_example.json | 105 +- .../multiscales_transformations.json | 81 +- latest/examples/ome/series-2.json | 8 +- .../examples/plate_strict/plate_2wells.json | 161 +- .../examples/plate_strict/plate_6wells.json | 123 +- latest/examples/well_strict/well_2fields.json | 29 +- latest/examples/well_strict/well_4fields.json | 45 +- latest/index.bs | 163 +- latest/schemas/bf2raw.schema | 37 +- latest/schemas/image.schema | 92 +- latest/schemas/label.schema | 39 +- latest/schemas/ome.schema | 39 +- latest/schemas/plate.schema | 268 +-- latest/schemas/strict_image.schema | 22 +- latest/schemas/strict_label.schema | 17 +- latest/schemas/strict_plate.schema | 35 +- latest/schemas/strict_well.schema | 13 +- latest/schemas/well.schema | 78 +- latest/tests/image_suite.json | 1509 ++++++++--------- latest/tests/label_suite.json | 142 +- latest/tests/plate_suite.json | 1347 ++++++++------- latest/tests/strict_image_suite.json | 558 +++--- latest/tests/strict_label_suite.json | 18 +- latest/tests/strict_plate_suite.json | 277 ++- latest/tests/strict_well_suite.json | 45 +- latest/tests/test_validation.py | 9 +- latest/tests/well_suite.json | 44 +- rfc/2/index.md | 2 +- 31 files changed, 2759 insertions(+), 2663 deletions(-) diff --git a/latest/examples/bf2raw/image.json b/latest/examples/bf2raw/image.json index c5eadb8a..0a6445d1 100644 --- a/latest/examples/bf2raw/image.json +++ b/latest/examples/bf2raw/image.json @@ -1,3 +1,7 @@ { - "bioformats2raw.layout" : 3 -} \ No newline at end of file + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { "bioformats2raw.layout": 3 } + } +} diff --git a/latest/examples/bf2raw/plate.json b/latest/examples/bf2raw/plate.json index bd98a16e..76865d36 100644 --- a/latest/examples/bf2raw/plate.json +++ b/latest/examples/bf2raw/plate.json @@ -1,22 +1,35 @@ { - "bioformats2raw.layout" : 3, - "plate" : { - "columns" : [ { - "name" : "1" - } ], - "name" : "Plate Name 0", - "wells" : [ { - "path" : "A/1", - "rowIndex" : 0, - "columnIndex" : 0 - } ], - "field_count" : 1, - "rows" : [ { - "name" : "A" - } ], - "acquisitions" : [ { - "id" : 0 - } ], - "version" : "0.4" + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "bioformats2raw.layout": 3, + "plate": { + "columns": [ + { + "name": "1" + } + ], + "name": "Plate Name 0", + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ], + "field_count": 1, + "rows": [ + { + "name": "A" + } + ], + "acquisitions": [ + { + "id": 0 + } + ] + } + } } } diff --git a/latest/examples/label_strict/colors_properties.json b/latest/examples/label_strict/colors_properties.json index c96820e1..42793d12 100644 --- a/latest/examples/label_strict/colors_properties.json +++ b/latest/examples/label_strict/colors_properties.json @@ -1,31 +1,36 @@ { - "image-label": { - "version": "0.5-dev", - "colors": [ - { - "label-value": 0, - "rgba": [0, 0, 128, 128] - }, - { - "label-value": 1, - "rgba": [0, 128, 0, 128] + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "image-label": { + "colors": [ + { + "label-value": 0, + "rgba": [0, 0, 128, 128] + }, + { + "label-value": 1, + "rgba": [0, 128, 0, 128] + } + ], + "properties": [ + { + "label-value": 0, + "area (pixels)": 1200, + "class": "intercellular space" + }, + { + "label-value": 1, + "area (pixels)": 1650, + "class": "cell", + "cell type": "neuron" + } + ], + "source": { + "image": "../../" + } } - ], - "properties": [ - { - "label-value": 0, - "area (pixels)": 1200, - "class": "intercellular space" - }, - { - "label-value": 1, - "area (pixels)": 1650, - "class": "cell", - "cell type": "neuron" - } - ], - "source": { - "image": "../../" } } } diff --git a/latest/examples/multiscales_strict/multiscales_example.json b/latest/examples/multiscales_strict/multiscales_example.json index 73e5286c..0fcc2434 100644 --- a/latest/examples/multiscales_strict/multiscales_example.json +++ b/latest/examples/multiscales_strict/multiscales_example.json @@ -1,54 +1,67 @@ { - "multiscales": [ + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "multiscales": [ { - "version": "0.5-dev", - "name": "example", - "axes": [ - {"name": "t", "type": "time", "unit": "millisecond"}, - {"name": "c", "type": "channel"}, - {"name": "z", "type": "space", "unit": "micrometer"}, - {"name": "y", "type": "space", "unit": "micrometer"}, - {"name": "x", "type": "space", "unit": "micrometer"} - ], - "datasets": [ + "name": "example", + "axes": [ + { "name": "t", "type": "time", "unit": "millisecond" }, + { "name": "c", "type": "channel" }, + { "name": "z", "type": "space", "unit": "micrometer" }, + { "name": "y", "type": "space", "unit": "micrometer" }, + { "name": "x", "type": "space", "unit": "micrometer" } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ { - "path": "0", - "coordinateTransformations": [{ - // the voxel size for the first scale level (0.5 micrometer) - "type": "scale", - "scale": [1.0, 1.0, 0.5, 0.5, 0.5] - }] - }, + // the voxel size for the first scale level (0.5 micrometer) + "type": "scale", + "scale": [1.0, 1.0, 0.5, 0.5, 0.5] + } + ] + }, + { + "path": "1", + "coordinateTransformations": [ { - "path": "1", - "coordinateTransformations": [{ - // the voxel size for the second scale level (downscaled by a factor of 2 -> 1 micrometer) - "type": "scale", - "scale": [1.0, 1.0, 1.0, 1.0, 1.0] - }] - }, + // the voxel size for the second scale level (downscaled by a factor of 2 -> 1 micrometer) + "type": "scale", + "scale": [1.0, 1.0, 1.0, 1.0, 1.0] + } + ] + }, + { + "path": "2", + "coordinateTransformations": [ { - "path": "2", - "coordinateTransformations": [{ - // the voxel size for the third scale level (downscaled by a factor of 4 -> 2 micrometer) - "type": "scale", - "scale": [1.0, 1.0, 2.0, 2.0, 2.0] - }] + // the voxel size for the third scale level (downscaled by a factor of 4 -> 2 micrometer) + "type": "scale", + "scale": [1.0, 1.0, 2.0, 2.0, 2.0] } - ], - "coordinateTransformations": [{ - // 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] - }], - "type": "gaussian", - "metadata": { - "description": "the fields in metadata depend on the downscaling implementation. Here, the parameters passed to the skimage function are given", - "method": "skimage.transform.pyramid_gaussian", - "version": "0.16.1", - "args": "[true]", - "kwargs": {"multichannel": true} + ] + } + ], + "coordinateTransformations": [ + { + // 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] } + ], + "type": "gaussian", + "metadata": { + "description": "the fields in metadata depend on the downscaling implementation. Here, the parameters passed to the skimage function are given", + "method": "skimage.transform.pyramid_gaussian", + "version": "0.16.1", + "args": "[true]", + "kwargs": { "multichannel": true } + } } - ] -} \ No newline at end of file + ] + } + } +} diff --git a/latest/examples/multiscales_strict/multiscales_transformations.json b/latest/examples/multiscales_strict/multiscales_transformations.json index 80dbedab..e6c14c79 100644 --- a/latest/examples/multiscales_strict/multiscales_transformations.json +++ b/latest/examples/multiscales_strict/multiscales_transformations.json @@ -1,47 +1,46 @@ { - "multiscales": [ + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "multiscales": [ { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [ - 1, - 1 - ], - "type": "scale" - } - ] - } - ], - "coordinateTransformations": [ + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ { - "scale": [ - 10, - 10 - ], - "type": "scale" + "scale": [1, 1], + "type": "scale" } - ], - "version": "0.5-dev", - "name": "image_with_coordinateTransformations", - "type": "foo", - "metadata": { - "key": "value" + ] + } + ], + "coordinateTransformations": [ + { + "scale": [10, 10], + "type": "scale" } + ], + "name": "image_with_coordinateTransformations", + "type": "foo", + "metadata": { + "key": "value" + } } - ] -} \ No newline at end of file + ] + } + } +} diff --git a/latest/examples/ome/series-2.json b/latest/examples/ome/series-2.json index be7e9ed6..660e1115 100644 --- a/latest/examples/ome/series-2.json +++ b/latest/examples/ome/series-2.json @@ -1,3 +1,9 @@ { - "series" : [ "0", "1" ] + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "series": ["0", "1"] + } + } } diff --git a/latest/examples/plate_strict/plate_2wells.json b/latest/examples/plate_strict/plate_2wells.json index 3578798f..c0df297f 100644 --- a/latest/examples/plate_strict/plate_2wells.json +++ b/latest/examples/plate_strict/plate_2wells.json @@ -1,91 +1,96 @@ { - "plate": { + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "plate": { "acquisitions": [ - { - "id": 1, - "maximumfieldcount": 1, - "name": "single acquisition", - "starttime": 1343731272000 - } + { + "id": 1, + "maximumfieldcount": 1, + "name": "single acquisition", + "starttime": 1343731272000 + } ], "columns": [ - { - "name": "1" - }, - { - "name": "2" - }, - { - "name": "3" - }, - { - "name": "4" - }, - { - "name": "5" - }, - { - "name": "6" - }, - { - "name": "7" - }, - { - "name": "8" - }, - { - "name": "9" - }, - { - "name": "10" - }, - { - "name": "11" - }, - { - "name": "12" - } + { + "name": "1" + }, + { + "name": "2" + }, + { + "name": "3" + }, + { + "name": "4" + }, + { + "name": "5" + }, + { + "name": "6" + }, + { + "name": "7" + }, + { + "name": "8" + }, + { + "name": "9" + }, + { + "name": "10" + }, + { + "name": "11" + }, + { + "name": "12" + } ], "field_count": 1, "name": "sparse test", "rows": [ - { - "name": "A" - }, - { - "name": "B" - }, - { - "name": "C" - }, - { - "name": "D" - }, - { - "name": "E" - }, - { - "name": "F" - }, - { - "name": "G" - }, - { - "name": "H" - } + { + "name": "A" + }, + { + "name": "B" + }, + { + "name": "C" + }, + { + "name": "D" + }, + { + "name": "E" + }, + { + "name": "F" + }, + { + "name": "G" + }, + { + "name": "H" + } ], - "version": "0.5-dev", "wells": [ - { - "path": "C/5", - "rowIndex": 2, - "columnIndex": 4 - }, - { - "path": "D/7", - "rowIndex": 3, - "columnIndex": 6 - } + { + "path": "C/5", + "rowIndex": 2, + "columnIndex": 4 + }, + { + "path": "D/7", + "rowIndex": 3, + "columnIndex": 6 + } ] + } } + } } diff --git a/latest/examples/plate_strict/plate_6wells.json b/latest/examples/plate_strict/plate_6wells.json index d2f06389..c07a8c5b 100644 --- a/latest/examples/plate_strict/plate_6wells.json +++ b/latest/examples/plate_strict/plate_6wells.json @@ -1,72 +1,77 @@ { - "plate": { + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "plate": { "acquisitions": [ - { - "id": 1, - "maximumfieldcount": 2, - "name": "Meas_01(2012-07-31_10-41-12)", - "starttime": 1343731272000 - }, - { - "id": 2, - "maximumfieldcount": 2, - "name": "Meas_02(201207-31_11-56-41)", - "starttime": 1343735801000 - } + { + "id": 1, + "maximumfieldcount": 2, + "name": "Meas_01(2012-07-31_10-41-12)", + "starttime": 1343731272000 + }, + { + "id": 2, + "maximumfieldcount": 2, + "name": "Meas_02(201207-31_11-56-41)", + "starttime": 1343735801000 + } ], "columns": [ - { - "name": "1" - }, - { - "name": "2" - }, - { - "name": "3" - } + { + "name": "1" + }, + { + "name": "2" + }, + { + "name": "3" + } ], "field_count": 4, "name": "test", "rows": [ - { - "name": "A" - }, - { - "name": "B" - } + { + "name": "A" + }, + { + "name": "B" + } ], - "version": "0.5-dev", "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - }, - { - "path": "A/2", - "rowIndex": 0, - "columnIndex": 1 - }, - { - "path": "A/3", - "rowIndex": 0, - "columnIndex": 2 - }, - { - "path": "B/1", - "rowIndex": 1, - "columnIndex": 0 - }, - { - "path": "B/2", - "rowIndex": 1, - "columnIndex": 1 - }, - { - "path": "B/3", - "rowIndex": 1, - "columnIndex": 2 - } + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + }, + { + "path": "A/2", + "rowIndex": 0, + "columnIndex": 1 + }, + { + "path": "A/3", + "rowIndex": 0, + "columnIndex": 2 + }, + { + "path": "B/1", + "rowIndex": 1, + "columnIndex": 0 + }, + { + "path": "B/2", + "rowIndex": 1, + "columnIndex": 1 + }, + { + "path": "B/3", + "rowIndex": 1, + "columnIndex": 2 + } ] + } } + } } diff --git a/latest/examples/well_strict/well_2fields.json b/latest/examples/well_strict/well_2fields.json index 6f43a911..b1531059 100644 --- a/latest/examples/well_strict/well_2fields.json +++ b/latest/examples/well_strict/well_2fields.json @@ -1,15 +1,20 @@ { - "well": { + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "well": { "images": [ - { - "acquisition": 0, - "path": "0" - }, - { - "acquisition": 3, - "path": "1" - } - ], - "version": "0.5-dev" + { + "acquisition": 0, + "path": "0" + }, + { + "acquisition": 3, + "path": "1" + } + ] + } } -} \ No newline at end of file + } +} diff --git a/latest/examples/well_strict/well_4fields.json b/latest/examples/well_strict/well_4fields.json index c2285d53..18eb60eb 100644 --- a/latest/examples/well_strict/well_4fields.json +++ b/latest/examples/well_strict/well_4fields.json @@ -1,23 +1,28 @@ { - "well": { + "zarr_format": 3, + "node_type": "group", + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + "well": { "images": [ - { - "acquisition": 1, - "path": "0" - }, - { - "acquisition": 1, - "path": "1" - }, - { - "acquisition": 2, - "path": "2" - }, - { - "acquisition": 2, - "path": "3" - } - ], - "version": "0.5-dev" + { + "acquisition": 1, + "path": "0" + }, + { + "acquisition": 1, + "path": "1" + }, + { + "acquisition": 2, + "path": "2" + }, + { + "acquisition": 2, + "path": "3" + } + ] + } } -} \ No newline at end of file + } +} diff --git a/latest/index.bs b/latest/index.bs index 26e27b3c..ee3b11bb 100644 --- a/latest/index.bs +++ b/latest/index.bs @@ -1,6 +1,6 @@
-Title: Next-generation file formats (NGFF)
-Shortname: ome-ngff
+Title: OME-Zarr specification
+Shortname: ome-zarr
 Level: 1
 Status: LS-COMMIT
 Status: w3c/ED
@@ -24,19 +24,13 @@ Status Text: will be provided between numbered versions. Data written with these
 Status Text: (an "editor's draft") will not necessarily be supported.
 
-OME-NGFF {#ome-ngff} --------------------- +OME-Zarr specification {#ome-zarr} +---------------------------------- The conventions and specifications defined in this document are designed to enable next-generation file formats to represent the same bioimaging data that can be represented in \[OME-TIFF](http://www.openmicroscopy.org/ome-files/) -and beyond. However, the conventions will also be usable by HDF5 and other sufficiently advanced -binary containers. Eventually, we hope, the moniker "next-generation" will no longer be -applicable, and this will simply be the most efficient, common, and useful representation -of bioimaging data, whether during acquisition or sharing in the cloud. - -Note: The following text makes use of OME-Zarr [[ome-zarr-py]], the current prototype implementation, -for all examples. +and beyond. Document conventions -------------------- @@ -56,8 +50,14 @@ implementations that are later submitted as a formal specification. (See [[#bf2r Some of the JSON examples in this document include comments. However, these are only for clarity purposes and comments MUST NOT be included in JSON objects. -On-disk (or in-cloud) layout {#on-disk} -======================================= +Storage format {#storage-format} +================================ + +OME-Zarr is implemented using the Zarr format as defined by the +[version 3 of the Zarr specification](https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html). +All features of the Zarr format including codecs, chunk grids, chunk +key encodings, data types and storage transformers may be used with +OME-Zarr unless explicitly disallowed in this specification. An overview of the layout of an OME-Zarr fileset should make understanding the following metadata sections easier. The hierarchy @@ -65,66 +65,51 @@ is represented here as it would appear locally but could equally be stored on a web server to be accessed via HTTP or in object storage like S3 or GCS. -OME-Zarr is an implementation of the OME-NGFF specification using the Zarr -format. Arrays MUST be defined and stored in a hierarchical organization as -defined by the -[version 2 of the Zarr specification ](https://zarr.readthedocs.io/en/stable/spec/v2.html). -OME-NGFF metadata MUST be stored as attributes in the corresponding Zarr -groups. - Images {#image-layout} ---------------------- The following layout describes the expected Zarr hierarchy for images with multiple levels of resolutions and optionally associated labels. Note that the number of dimensions is variable between 2 and 5 and that axis names are arbitrary, see [[#multiscale-md]] for details. -For this example we assume an image with 5 dimensions and axes called `t,c,z,y,x`.
-.                             # Root folder, potentially in S3,
-│                             # with a flat list of images by image ID.
-│
-├── 123.zarr                  # One image (id=123) converted to Zarr.
+├── 123.zarr                  # One OME-Zarr image (id=123).
+│   ...
 │
-└── 456.zarr                  # Another image (id=456) converted to Zarr.
+└── 456.zarr                  # Another OME-Zarr image (id=456).
     │
-    ├── .zgroup               # Each image is a Zarr group, or a folder, of other groups and arrays.
-    ├── .zattrs               # Group level attributes are stored in the .zattrs file and include
-    │                         # "multiscales" and "omero" (see below). In addition, the group level attributes
-    │                         # may also contain "_ARRAY_DIMENSIONS" for compatibility with xarray if this group directly contains multi-scale arrays.
+    ├── zarr.json             # Each image is a Zarr group of other groups and arrays.
+    │                         # Group level attributes are stored in the `zarr.json` file and include
+    │                         # "multiscales" and "omero" (see below).
     │
     ├── 0                     # Each multiscale level is stored as a separate Zarr array,
     │   ...                   # which is a folder containing chunk files which compose the array.
     ├── n                     # The name of the array is arbitrary with the ordering defined by
     │   │                     # by the "multiscales" metadata, but is often a sequence starting at 0.
     │   │
-    │   ├── .zarray           # All image arrays must be up to 5-dimensional
+    │   ├── zarr.json         # All image arrays must be up to 5-dimensional
     │   │                     # with the axis of type time before type channel, before spatial axes.
     │   │
-    │   └─ t                  # Chunks are stored with the nested directory layout.
-    │      └─ c               # All but the last chunk element are stored as directories.
-    │         └─ z            # The terminal chunk is a file. Together the directory and file names
-    │            └─ y         # provide the "chunk coordinate" (t, c, z, y, x), where the maximum coordinate
-    │               └─ x      # will be `dimension_size / chunk_size`.
+    │   └─ ...                # Chunks are stored conforming to the Zarr array specification and 
+    │                         # metadata as specified in the array's `zarr.json`.
     │
     └── labels
         │
-        ├── .zgroup           # The labels group is a container which holds a list of labels to make the objects easily discoverable
-        │
-        ├── .zattrs           # All labels will be listed in `.zattrs` e.g. `{ "labels": [ "original/0" ] }`
-        │                     # Each dimension of the label `(t, c, z, y, x)` should be either the same as the
+        ├── zarr.json         # The labels group is a container which holds a list of labels to make the objects easily discoverable
+        │                     # All labels will be listed in `zarr.json` e.g. `{ "labels": [ "original/0" ] }`
+        │                     # Each dimension of the label should be either the same as the
         │                     # corresponding dimension of the image, or `1` if that dimension of the label
         │                     # is irrelevant.
         │
         └── original          # Intermediate folders are permitted but not necessary and currently contain no extra metadata.
             │
             └── 0             # Multiscale, labeled image. The name is unimportant but is registered in the "labels" group above.
-                ├── .zgroup   # Zarr Group which is both a multiscaled image as well as a labeled image.
-                ├── .zattrs   # Metadata of the related image and as well as display information under the "image-label" key.
+                ├── zarr.json # Zarr Group which is both a multiscaled image as well as a labeled image.
+                │             # Metadata of the related image and as well as display information under the "image-label" key.
                 │
                 ├── 0         # Each multiscale level is stored as a separate Zarr array, as above, but only integer values
-                │   ...       # are supported.
-                └── n
+                └── ...       # are supported.
+                
 
@@ -148,39 +133,47 @@ A well group SHOULD NOT be present if there are no images in the well.
-.                             # Root folder, potentially in S3,
+.
 │
-└── 5966.zarr                 # One plate (id=5966) converted to Zarr
-    ├── .zgroup
-    ├── .zattrs               # Implements "plate" specification
+└── 5966.zarr                 # One OME-Zarr plate (id=5966)
+    ├── zarr.json             # Implements "plate" specification
     ├── A                     # First row of the plate
-    │   ├── .zgroup
+    │   ├── zarr.json
     │   │
     │   ├── 1                 # First column of row A
-    │   │   ├── .zgroup
-    │   │   ├── .zattrs       # Implements "well" specification
+    │   │   ├── zarr.json     # Implements "well" specification
     │   │   │
     │   │   ├── 0             # First field of view of well A1
     │   │   │   │
-    │   │   │   ├── .zgroup
-    │   │   │   ├── .zattrs   # Implements "multiscales", "omero"
-    │   │   │   ├── 0
-    │   │   │   │   ...       # Resolution levels
-    │   │   │   ├── n
+    │   │   │   ├── zarr.json # Implements "multiscales", "omero"
+    │   │   │   ├── 0         # Resolution levels          
+    │   │   │   ├── ...
     │   │   │   └── labels    # Labels (optional)
-    │   │   ├── ...           # Fields of view
-    │   │   └── m
-    │   ├── ...               # Columns
-    │   └── 12
-    ├── ...                   # Rows
-    └── H
+    │   │   └── ...           # Other fields of view
+    │   └── ...               # Other columns
+    └── ...                   # Other rows
 
-Metadata {#metadata} -==================== +OME-Zarr Metadata {#metadata} +============================= + +The "OME-Zarr Metadata" contains metadata keys as specified below +for discovering certain types of data, especially images. -The various `.zattrs` files throughout the above array hierarchy may contain metadata -keys as specified below for discovering certain types of data, especially images. +The OME-Zarr Metadata is stored in the various `zarr.json` files throughout the above array +hierarchy. In this file, the metadata is stored under the namespaced key +`https://ngff.openmicroscopy.org/0.5` in `attributes`. + +```json +{ + ... + "attributes": { + "https://ngff.openmicroscopy.org/0.5": { + ... + } + } +} +``` "axes" metadata {#axes-md} -------------------------- @@ -192,7 +185,10 @@ keys as specified below for discovering certain types of data, especially images - Units for "space" axes: 'angstrom', 'attometer', 'centimeter', 'decimeter', 'exameter', 'femtometer', 'foot', 'gigameter', 'hectometer', 'inch', 'kilometer', 'megameter', 'meter', 'micrometer', 'mile', 'millimeter', 'nanometer', 'parsec', 'petameter', 'picometer', 'terameter', 'yard', 'yoctometer', 'yottameter', 'zeptometer', 'zettameter' - Units for "time" axes: 'attosecond', 'centisecond', 'day', 'decisecond', 'exasecond', 'femtosecond', 'gigasecond', 'hectosecond', 'hour', 'kilosecond', 'megasecond', 'microsecond', 'millisecond', 'minute', 'nanosecond', 'petasecond', 'picosecond', 'second', 'terasecond', 'yoctosecond', 'yottasecond', 'zeptosecond', 'zettasecond' -If part of [[#multiscale-md]], the length of "axes" MUST be equal to the number of dimensions of the arrays that contain the image data. +The "axes" are used as part of [[#multiscale-md]]. The length of "axes" MUST be equal to the number of dimensions of the arrays that contain the image data. + +The "dimension_names" attribute in the `zarr.json` of the Zarr array of a multiscale level MUS match the names in the "axes" metadata. + "bioformats2raw.layout" (transitional) {#bf2raw} ------------------------------------------------ @@ -211,11 +207,9 @@ Typical Zarr layout produced by running `bioformats2raw` on a fileset that conta
 series.ome.zarr               # One converted fileset from bioformats2raw
-    ├── .zgroup
-    ├── .zattrs               # Contains "bioformats2raw.layout" metadata
+    ├── zarr.json             # Contains "bioformats2raw.layout" metadata
     ├── OME                   # Special group for containing OME metadata
-    │   ├── .zgroup
-    │   ├── .zattrs           # Contains "series" metadata
+    │   ├── zarr.json         # Contains "series" metadata
     │   └── METADATA.ome.xml  # OME-XML file stored within the Zarr fileset
     ├── 0                     # First image in the collection
     ├── 1                     # Second image in the collection
@@ -224,7 +218,7 @@ series.ome.zarr               # One converted fileset from bioformats2raw
 
 

Attributes

-The top-level `.zattrs` file must contain the `bioformats2raw.layout` key: +The OME-Zarr Metadata in the top-level `zarr.json` file must contain the `bioformats2raw.layout` key:
 path: examples/bf2raw/image.json
 highlight: json
@@ -239,7 +233,7 @@ path: examples/bf2raw/plate.json
 highlight: json
 
-The `.zattrs` file within the OME group may contain the "series" key: +The OME-Zarr Metadata in the `zarr.json` file within the OME group may contain the "series" key:
 path: examples/ome/series-2.json
@@ -250,7 +244,7 @@ highlight: json
 
 Conforming groups:
 
-- MUST have the value "3" for the "bioformats2raw.layout" key in their `.zattrs` metadata at the top of the hierarchy;
+- MUST have the value "3" for the "bioformats2raw.layout" key in their OME-Zarr Metadata in the `zarr.json` at the top of the hierarchy;
 - SHOULD have OME metadata representing the entire collection of images in a file named "OME/METADATA.ome.xml" which:
     - MUST adhere to the OME-XML specification but
     - MUST use `` elements as opposed to ``, `` or ``;
@@ -298,7 +292,9 @@ The transformations in the list are applied sequentially and in order.
 "multiscales" metadata {#multiscale-md}
 ---------------------------------------
 
-Metadata about an image can be found under the "multiscales" key in the group-level metadata. 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.
+Metadata about an image can be found under the "multiscales" key in the group-level OME-Zarr Metadata. 
+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.
 
@@ -399,21 +395,26 @@ The "labels" group is not itself an image; it contains images. The pixels of the
 [`uint8`, `int8`, `uint16`, `int16`, `uint32`, `int32`, `uint64`, `int64`]. Intermediate groups between "labels" and the images within it are allowed, 
 but these MUST NOT contain metadata. Names of the images in the "labels" group are arbitrary.
 
-The `.zattrs` file associated with the "labels" group MUST contain a JSON object with the key `labels`, whose value is a JSON array of paths to the 
+The OME-Zarr Metadata in the `zarr.json` file associated with the "labels" group MUST contain a JSON object with the key `labels`, whose value is a JSON array of paths to the 
 labeled multiscale image(s). All label images SHOULD be listed within this metadata file. For example:
 
 ```json
 {
-  "labels": [
-    "cell_space_segmentation"
-  ]
+  ...
+  "attributes": {
+    "https://ngff.openmicroscopy.org/0.5": {
+      "labels": [
+        "cell_space_segmentation"
+      ]
+    }
+  }
 }
 ```
 
-The `.zattrs` file for the label image MUST implement the multiscales specification. Within the `multiscales` object, the JSON array 
+The `zarr.json` file for the label image MUST implement the multiscales specification. Within the `multiscales` object, the JSON array 
 associated with the `datasets` key MUST have the same number of entries (scale levels) as the original unlabeled image. 
 
-In addition to the `multiscales` key, the JSON object in this image-level `.zattrs` file SHOULD contain another key, `image-label`, 
+In addition to the `multiscales` key, the OME-Zarr Metadata in this image-level `zarr.json` file SHOULD contain another key, `image-label`, 
 whose value is also a JSON object. The `image-label` object stores information about the display colors, source image, and optionally, 
 further arbitrary properties of the label image. That `image-label` object SHOULD contain the following keys: first, a `colors` key, 
 whose value MUST be a JSON array describing color information for the unique label values. Second, a `version` key, whose value MUST be a 
diff --git a/latest/schemas/bf2raw.schema b/latest/schemas/bf2raw.schema
index 834aee24..929516ba 100644
--- a/latest/schemas/bf2raw.schema
+++ b/latest/schemas/bf2raw.schema
@@ -1,14 +1,37 @@
 {
   "$schema": "https://json-schema.org/draft/2020-12/schema",
   "$id": "https://ngff.openmicroscopy.org/latest/schemas/bf2raw.schema",
-  "title": "NGFF container produced by bioformats2raw",
-  "description": "JSON from OME-NGFF .zattrs",
+  "title": "OME-Zarr container produced by bioformats2raw",
+  "description": "JSON from OME-Zarr zarr.json",
   "type": "object",
   "properties": {
-    "bioformats2raw.layout": {
-      "description": "The top-level identifier metadata added by bioformats2raw",
-      "type": "number",
-      "enum": [3]
+    "attributes": {
+      "description": "The zarr.json attributes key",
+      "type": "object",
+      "properties": {
+        "https://ngff.openmicroscopy.org/0.5": {
+          "description": "The versioned OME-Zarr Metadata namespace",
+          "type": "object",
+          "properties": {
+            "bioformats2raw.layout": {
+              "description": "The top-level identifier metadata added by bioformats2raw",
+              "type": "number",
+              "enum": [
+                3
+              ]
+            }
+          },
+          "required": [
+            "bioformats2raw.layout"
+          ]
+        }
+      },
+      "required": [
+        "https://ngff.openmicroscopy.org/0.5"
+      ]
     }
-  }
+  },
+  "required": [
+    "attributes"
+  ]
 }
diff --git a/latest/schemas/image.schema b/latest/schemas/image.schema
index cf2b477f..57a3d811 100644
--- a/latest/schemas/image.schema
+++ b/latest/schemas/image.schema
@@ -1,10 +1,36 @@
 {
   "$schema": "https://json-schema.org/draft/2020-12/schema",
   "$id": "https://ngff.openmicroscopy.org/latest/schemas/image.schema",
-  "title": "NGFF Image",
-  "description": "JSON from OME-NGFF .zattrs",
+  "title": "OME-Zarr Image",
+  "description": "JSON from OME-Zarr zarr.json",
   "type": "object",
   "properties": {
+    "attributes": {
+      "description": "The zarr.json attributes key",
+      "type": "object",
+      "properties": {
+        "https://ngff.openmicroscopy.org/0.5": {
+          "description": "The versioned OME-Zarr Metadata namespace",
+          "type": "object",
+          "properties": {
+            "multiscales": {
+              "$ref": "#/$defs/multiscales"
+            },
+            "omero": {
+              "$ref": "#/$defs/omero"
+            }
+          },
+          "required": [
+            "multiscales"
+          ]
+        }
+      },
+      "required": [
+        "https://ngff.openmicroscopy.org/0.5"
+      ]
+    }
+  },
+  "$defs": {
     "multiscales": {
       "description": "The multiscale datasets for this image",
       "type": "array",
@@ -27,24 +53,22 @@
                   "$ref": "#/$defs/coordinateTransformations"
                 }
               },
-              "required": ["path", "coordinateTransformations"]
+              "required": [
+                "path",
+                "coordinateTransformations"
+              ]
             }
           },
-          "version": {
-            "type": "string",
-            "enum": [
-              "0.5-dev"
-            ]
-          },
           "axes": {
             "$ref": "#/$defs/axes"
           },
           "coordinateTransformations": {
             "$ref": "#/$defs/coordinateTransformations"
-                }
+          }
         },
         "required": [
-          "datasets", "axes", "version"
+          "datasets",
+          "axes"
         ]
       },
       "minItems": 1,
@@ -100,11 +124,7 @@
       "required": [
         "channels"
       ]
-    }
-  },
-  "required": [ "multiscales" ],
-
-  "$defs": {
+    },
     "axes": {
       "type": "array",
       "uniqueItems": true,
@@ -118,7 +138,9 @@
           },
           "type": {
             "type": "string",
-            "enum": ["space"]
+            "enum": [
+              "space"
+            ]
           },
           "unit": {
             "type": "string"
@@ -137,10 +159,17 @@
               },
               "type": {
                 "type": "string",
-                "enum": ["channel", "time", "space"]
+                "enum": [
+                  "channel",
+                  "time",
+                  "space"
+                ]
               }
             },
-            "required": ["name", "type"]
+            "required": [
+              "name",
+              "type"
+            ]
           },
           {
             "type": "object",
@@ -151,11 +180,17 @@
               "type": {
                 "type": "string",
                 "not": {
-                  "enum": ["space", "time", "channel"]
+                  "enum": [
+                    "space",
+                    "time",
+                    "channel"
+                  ]
                 }
               }
             },
-            "required": ["name"]
+            "required": [
+              "name"
+            ]
           }
         ]
       }
@@ -201,7 +236,10 @@
                 }
               }
             },
-            "required": ["type", "scale"]
+            "required": [
+              "type",
+              "scale"
+            ]
           },
           {
             "type": "object",
@@ -220,10 +258,16 @@
                 }
               }
             },
-            "required": ["type", "translation"]
+            "required": [
+              "type",
+              "translation"
+            ]
           }
         ]
       }
     }
-  }
+  },
+  "required": [
+    "attributes"
+  ]
 }
diff --git a/latest/schemas/label.schema b/latest/schemas/label.schema
index 8b23d577..193e64fe 100644
--- a/latest/schemas/label.schema
+++ b/latest/schemas/label.schema
@@ -1,10 +1,33 @@
 {
   "$schema": "https://json-schema.org/draft/2020-12/schema",
   "$id": "https://ngff.openmicroscopy.org/latest/schemas/label.schema",
-  "title": "OME-NGFF labelled image schema",
-  "description": "JSON from OME-NGFF .zattrs",
+  "title": "OME-Zarr labelled image schema",
+  "description": "JSON from OME-Zarr zarr.json",
   "type": "object",
   "properties": {
+    "attributes": {
+      "description": "The zarr.json attributes key",
+      "type": "object",
+      "properties": {
+        "https://ngff.openmicroscopy.org/0.5": {
+          "description": "The versioned OME-Zarr Metadata namespace",
+          "type": "object",
+          "properties": {
+            "image-label": {
+              "$ref": "#/$defs/image-label"
+            }
+          },
+          "required": [
+            "image-label"
+          ]
+        }
+      },
+      "required": [
+        "https://ngff.openmicroscopy.org/0.5"
+      ]
+    }
+  },
+  "$defs": {
     "image-label": {
       "type": "object",
       "properties": {
@@ -63,15 +86,11 @@
               "type": "string"
             }
           }
-        },
-        "version": {
-          "description": "The version of the specification",
-          "type": "string",
-          "enum": [
-            "0.5-dev"
-          ]
         }
       }
     }
-  }
+  },
+  "required": [
+    "attributes"
+  ]
 }
diff --git a/latest/schemas/ome.schema b/latest/schemas/ome.schema
index bd600a2a..e0ce77a5 100644
--- a/latest/schemas/ome.schema
+++ b/latest/schemas/ome.schema
@@ -1,17 +1,38 @@
 {
   "$schema": "https://json-schema.org/draft/2020-12/schema",
   "$id": "https://ngff.openmicroscopy.org/latest/schemas/ome.schema",
-  "title": "NGFF group produced by bioformats2raw to contain OME metadata",
-  "description": "JSON from OME-NGFF OME/.zattrs linked to an OME-XML file",
+  "title": "OME-Zarr group produced by bioformats2raw to contain OME metadata",
+  "description": "JSON from OME-Zarr OME/zarr.json linked to an OME-XML file",
   "type": "object",
   "properties": {
-    "series": {
-      "description": "An array of the same length and the same order as the images defined in the OME-XML",
-      "type": "array",
-      "items": {
-        "type": "string"
+    "attributes": {
+      "description": "The zarr.json attributes key",
+      "type": "object",
+      "properties": {
+        "https://ngff.openmicroscopy.org/0.5": {
+          "description": "The versioned OME-Zarr Metadata namespace",
+          "type": "object",
+          "properties": {
+            "series": {
+              "description": "An array of the same length and the same order as the images defined in the OME-XML",
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "minContains": 1
+            }
+          },
+          "required": [
+            "series"
+          ]
+        }
       },
-      "minContains": 1
+      "required": [
+        "https://ngff.openmicroscopy.org/0.5"
+      ]
     }
-  }
+  },
+  "required": [
+    "attributes"
+  ]
 }
diff --git a/latest/schemas/plate.schema b/latest/schemas/plate.schema
index 1b7ed532..c33a75fc 100644
--- a/latest/schemas/plate.schema
+++ b/latest/schemas/plate.schema
@@ -1,140 +1,158 @@
 {
   "$schema": "https://json-schema.org/draft/2020-12/schema",
   "$id": "https://ngff.openmicroscopy.org/0.4/schemas/plate.schema",
-  "title": "OME-NGFF plate schema",
-  "description": "JSON from OME-NGFF .zattrs",
+  "title": "OME-Zarr plate schema",
+  "description": "JSON from OME-Zarr zarr.json",
   "type": "object",
   "properties": {
-    "plate": {
+    "attributes": {
+      "description": "The zarr.json attributes key",
       "type": "object",
       "properties": {
-        "acquisitions": {
-          "description": "The acquisitions for this plate",
-          "type": "array",
-          "items": {
-            "type": "object",
-            "properties": {
-              "id": {
-                "description": "A unique identifier within the context of the plate",
-                "type": "integer",
-                "minimum": 0
+        "https://ngff.openmicroscopy.org/0.5": {
+          "description": "The versioned OME-Zarr Metadata namespace",
+          "type": "object",
+          "properties": {
+            "plate": {
+              "type": "object",
+              "properties": {
+                "acquisitions": {
+                  "description": "The acquisitions for this plate",
+                  "type": "array",
+                  "items": {
+                    "type": "object",
+                    "properties": {
+                      "id": {
+                        "description": "A unique identifier within the context of the plate",
+                        "type": "integer",
+                        "minimum": 0
+                      },
+                      "maximumfieldcount": {
+                        "description": "The maximum number of fields of view for the acquisition",
+                        "type": "integer",
+                        "exclusiveMinimum": 0
+                      },
+                      "name": {
+                        "description": "The name of the acquisition",
+                        "type": "string"
+                      },
+                      "description": {
+                        "description": "The description of the acquisition",
+                        "type": "string"
+                      },
+                      "starttime": {
+                        "description": "The start timestamp of the acquisition, expressed as epoch time i.e. the number seconds since the Epoch",
+                        "type": "integer",
+                        "minimum": 0
+                      },
+                      "endtime": {
+                        "description": "The end timestamp of the acquisition, expressed as epoch time i.e. the number seconds since the Epoch",
+                        "type": "integer",
+                        "minimum": 0
+                      }
+                    },
+                    "required": [
+                      "id"
+                    ]
+                  }
+                },
+                "field_count": {
+                  "description": "The maximum number of fields per view across all wells",
+                  "type": "integer",
+                  "exclusiveMinimum": 0
+                },
+                "name": {
+                  "description": "The name of the plate",
+                  "type": "string"
+                },
+                "columns": {
+                  "description": "The columns of the plate",
+                  "type": "array",
+                  "items": {
+                    "type": "object",
+                    "properties": {
+                      "name": {
+                        "description": "The column name",
+                        "type": "string",
+                        "pattern": "^[A-Za-z0-9]+$"
+                      }
+                    },
+                    "required": [
+                      "name"
+                    ]
+                  },
+                  "minItems": 1,
+                  "uniqueItems": true
+                },
+                "rows": {
+                  "description": "The rows of the plate",
+                  "type": "array",
+                  "items": {
+                    "type": "object",
+                    "properties": {
+                      "name": {
+                        "description": "The row name",
+                        "type": "string",
+                        "pattern": "^[A-Za-z0-9]+$"
+                      }
+                    },
+                    "required": [
+                      "name"
+                    ]
+                  },
+                  "minItems": 1,
+                  "uniqueItems": true
+                },
+                "wells": {
+                  "description": "The wells of the plate",
+                  "type": "array",
+                  "items": {
+                    "type": "object",
+                    "properties": {
+                      "path": {
+                        "description": "The path to the well subgroup",
+                        "type": "string",
+                        "pattern": "^[A-Za-z0-9]+/[A-Za-z0-9]+$"
+                      },
+                      "rowIndex": {
+                        "description": "The index of the well in the rows list",
+                        "type": "integer",
+                        "minimum": 0
+                      },
+                      "columnIndex": {
+                        "description": "The index of the well in the columns list",
+                        "type": "integer",
+                        "minimum": 0
+                      }
+                    },
+                    "required": [
+                      "path",
+                      "rowIndex",
+                      "columnIndex"
+                    ]
+                  },
+                  "minItems": 1,
+                  "uniqueItems": true
+                }
               },
-              "maximumfieldcount": {
-                "description": "The maximum number of fields of view for the acquisition",
-                "type": "integer",
-                "exclusiveMinimum": 0
-              },
-              "name": {
-                "description": "The name of the acquisition",
-                "type": "string"
-              },
-              "description": {
-                "description": "The description of the acquisition",
-                "type": "string"
-              },
-              "starttime": {
-                "description": "The start timestamp of the acquisition, expressed as epoch time i.e. the number seconds since the Epoch",
-                "type": "integer",
-                "minimum": 0
-              },
-              "endtime": {
-                "description": "The end timestamp of the acquisition, expressed as epoch time i.e. the number seconds since the Epoch",
-                "type": "integer",
-                "minimum": 0
-              }
-            },
-            "required": [
-              "id"
-            ]
-          }
-        },
-        "version": {
-          "description": "The version of the specification",
-          "type": "string",
-          "enum": [
-            "0.5-dev"
-          ]
-        },
-        "field_count": {
-          "description": "The maximum number of fields per view across all wells",
-          "type": "integer",
-          "exclusiveMinimum": 0
-        },
-        "name": {
-          "description": "The name of the plate",
-          "type": "string"
-        },
-        "columns": {
-          "description": "The columns of the plate",
-          "type": "array",
-          "items": {
-            "type": "object",
-            "properties": {
-              "name": {
-                "description": "The column name",
-                "type": "string",
-                "pattern": "^[A-Za-z0-9]+$"
-              }
-            },
-            "required": [
-              "name"
-            ]
+              "required": [
+                "columns",
+                "rows",
+                "wells"
+              ]
+            }
           },
-          "minItems": 1,
-          "uniqueItems": true
-        },
-        "rows": {
-          "description": "The rows of the plate",
-          "type": "array",
-          "items": {
-            "type": "object",
-            "properties": {
-              "name": {
-                "description": "The row name",
-                "type": "string",
-                "pattern": "^[A-Za-z0-9]+$"
-              }
-            },
-            "required": [
-              "name"
-            ]
-          },
-          "minItems": 1,
-          "uniqueItems": true
-        },
-        "wells": {
-          "description": "The wells of the plate",
-          "type": "array",
-          "items": {
-            "type": "object",
-            "properties": {
-              "path": {
-                "description": "The path to the well subgroup",
-                "type": "string",
-                "pattern": "^[A-Za-z0-9]+/[A-Za-z0-9]+$"
-              },
-              "rowIndex": {
-                "description": "The index of the well in the rows list",
-                "type": "integer",
-                "minimum": 0
-              },
-              "columnIndex": {
-                "description": "The index of the well in the columns list",
-                "type": "integer",
-                "minimum": 0
-              }
-            },
-            "required": [
-              "path", "rowIndex", "columnIndex"
-            ]
-          },
-          "minItems": 1,
-          "uniqueItems": true
+          "required": [
+            "plate"
+          ]
         }
       },
       "required": [
-        "columns", "rows", "wells", "version"
+        "https://ngff.openmicroscopy.org/0.5"
       ]
     }
-  }
+  },
+  "required": [
+    "attributes"
+  ]
 }
diff --git a/latest/schemas/strict_image.schema b/latest/schemas/strict_image.schema
index bcecc003..1b04f7ad 100644
--- a/latest/schemas/strict_image.schema
+++ b/latest/schemas/strict_image.schema
@@ -6,14 +6,24 @@
     },
     {
       "properties": {
-        "multiscales": {
-          "items": {
-            "required": [
-              "version", "metadata", "type", "name"
-            ]
+        "attributes": {
+          "properties": {
+            "https://ngff.openmicroscopy.org/0.5": {
+              "properties": {
+                "multiscales": {
+                  "items": {
+                    "required": [
+                      "metadata",
+                      "type",
+                      "name"
+                    ]
+                  }
+                }
+              }
+            }
           }
         }
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/latest/schemas/strict_label.schema b/latest/schemas/strict_label.schema
index c52dd51b..8936ee11 100644
--- a/latest/schemas/strict_label.schema
+++ b/latest/schemas/strict_label.schema
@@ -6,11 +6,18 @@
     },
     {
       "properties": {
-        "image-label": {
-          "required": [
-            "version",
-            "colors"
-          ]
+        "attributes": {
+          "properties": {
+            "https://ngff.openmicroscopy.org/0.5": {
+              "properties": {
+                "image-label": {
+                  "required": [
+                    "colors"
+                  ]
+                }
+              }
+            }
+          }
         }
       }
     }
diff --git a/latest/schemas/strict_plate.schema b/latest/schemas/strict_plate.schema
index 5a88ab72..21075845 100644
--- a/latest/schemas/strict_plate.schema
+++ b/latest/schemas/strict_plate.schema
@@ -1,26 +1,33 @@
 {
-  "$id": "https://ngff.openmicroscopy.org/0.4/schemas/strict_plate.schema",
+  "$id": "https://ngff.openmicroscopy.org/latest/schemas/strict_plate.schema",
   "allOf": [
     {
-      "$ref": "https://ngff.openmicroscopy.org/0.4/schemas/plate.schema"
+      "$ref": "https://ngff.openmicroscopy.org/latest/schemas/plate.schema"
     },
     {
       "properties": {
-        "plate": {
+        "attributes": {
           "properties": {
-            "acquisitions": {
-              "items": {
-                "required": [
-                  "name",
-                  "maximumfieldcount"
-                ]
+            "https://ngff.openmicroscopy.org/0.5": {
+              "properties": {
+                "plate": {
+                  "properties": {
+                    "acquisitions": {
+                      "items": {
+                        "required": [
+                          "name",
+                          "maximumfieldcount"
+                        ]
+                      }
+                    }
+                  },
+                  "required": [
+                    "name"
+                  ]
+                }
               }
             }
-          },
-          "required": [
-            "name",
-            "version"
-          ]
+          }
         }
       }
     }
diff --git a/latest/schemas/strict_well.schema b/latest/schemas/strict_well.schema
index 1e200294..0206b990 100644
--- a/latest/schemas/strict_well.schema
+++ b/latest/schemas/strict_well.schema
@@ -1,17 +1,8 @@
 {
-  "$id": "https://ngff.openmicroscopy.org/0.4/schemas/strict_well.schema",
+  "$id": "https://ngff.openmicroscopy.org/latest/schemas/strict_well.schema",
   "allOf": [
     {
-      "$ref": "https://ngff.openmicroscopy.org/0.4/schemas/well.schema"
-    },
-    {
-      "properties": {
-        "well": {
-          "required": [
-            "version"
-          ]
-        }
-      }
+      "$ref": "https://ngff.openmicroscopy.org/latest/schemas/well.schema"
     }
   ]
 }
diff --git a/latest/schemas/well.schema b/latest/schemas/well.schema
index 891abd05..b44a8e35 100644
--- a/latest/schemas/well.schema
+++ b/latest/schemas/well.schema
@@ -1,47 +1,61 @@
 {
   "$schema": "https://json-schema.org/draft/2020-12/schema",
-  "$id": "https://ngff.openmicroscopy.org/0.4/schemas/well.schema",
-  "title": "OME-NGFF well schema",
-  "description": "JSON from OME-NGFF .zattrs",
+  "$id": "https://ngff.openmicroscopy.org/latest/schemas/well.schema",
+  "title": "OME-Zarr well schema",
+  "description": "JSON from OME-Zarr zarr.json",
   "type": "object",
   "properties": {
-    "well": {
+    "attributes": {
+      "description": "The zarr.json attributes key",
       "type": "object",
       "properties": {
-        "images": {
-          "description": "The fields of view for this well",
-          "type": "array",
-          "items": {
-            "type": "object",
-            "properties": {
-              "acquisition": {
-                "description": "A unique identifier within the context of the plate",
-                "type": "integer"
+        "https://ngff.openmicroscopy.org/0.5": {
+          "description": "The versioned OME-Zarr Metadata namespace",
+          "type": "object",
+          "properties": {
+            "well": {
+              "type": "object",
+              "properties": {
+                "images": {
+                  "description": "The fields of view for this well",
+                  "type": "array",
+                  "items": {
+                    "type": "object",
+                    "properties": {
+                      "acquisition": {
+                        "description": "A unique identifier within the context of the plate",
+                        "type": "integer"
+                      },
+                      "path": {
+                        "description": "The path for this field of view subgroup",
+                        "type": "string",
+                        "pattern": "^[A-Za-z0-9]+$"
+                      }
+                    },
+                    "required": [
+                      "path"
+                    ]
+                  },
+                  "minItems": 1,
+                  "uniqueItems": true
+                }
               },
-              "path": {
-                "description": "The path for this field of view subgroup",
-                "type": "string",
-                "pattern": "^[A-Za-z0-9]+$"
-              }
-            },
-            "required": [
-              "path"
-            ]
+              "required": [
+                "images"
+              ]
+            }
           },
-          "minItems": 1,
-          "uniqueItems": true
-        },
-        "version": {
-          "description": "The version of the specification",
-          "type": "string",
-          "enum": [
-            "0.5-dev"
+          "required": [
+            "well"
           ]
         }
       },
       "required": [
-        "images"
+        "https://ngff.openmicroscopy.org/0.5"
       ]
     }
-  }
+  },
+  "required": [
+    "attributes"
+  ]
 }
diff --git a/latest/tests/image_suite.json b/latest/tests/image_suite.json
index bec52214..645fd683 100644
--- a/latest/tests/image_suite.json
+++ b/latest/tests/image_suite.json
@@ -8,42 +8,42 @@
       "formerly": "valid/mismatch_axes_units.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "t",
-                "type": "time",
-                "unit": "micrometer"
-              },
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      0.13,
-                      0.13
-                    ],
-                    "type": "scale"
+                    "name": "t",
+                    "type": "time",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [0.13, 0.13],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": true
     },
@@ -51,118 +51,78 @@
       "formerly": "valid/untyped_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "angle"
-              },
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "angle"
+                  },
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
                   }
-                ]
-              }
-            ],
-            "version": "0.5-dev"
-          }
-        ]
-      },
-      "valid": true
-    },
-    {
-      "formerly": "invalid/missing_version.json",
-      "description": "TBD",
-      "data": {
-        "@type": "ngff:Image",
-        "multiscales": [
-          {
-            "name": "example",
-            "datasets": [
-              {
-                "path": "path/to/0",
-                "coordinateTransformations": [
+                ],
+                "datasets": [
                   {
-                    "type": "scale",
-                    "scale": [
-                      1,
-                      1
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1, 1],
+                        "type": "scale"
+                      }
                     ]
                   }
                 ]
               }
-            ],
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
             ]
           }
-        ]
+        }
       },
-      "valid": false
+      "valid": true
     },
     {
       "formerly": "valid/invalid_axis_units.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "y",
-                "type": "space",
-                "unit": "micron"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      0.13,
-                      0.13
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micron"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [0.13, 0.13],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": true
     },
@@ -170,50 +130,46 @@
       "formerly": "valid/missing_name.json",
       "description": "TBD",
       "data": {
-        "@type": "ngff:Image",
-        "multiscales": [
-          {
-            "version": "0.5-dev",
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "path/to/0",
-                "coordinateTransformations": [
+                "datasets": [
                   {
-                    "type": "scale",
-                    "scale": [
-                      1,
-                      1
+                    "path": "path/to/0",
+                    "coordinateTransformations": [
+                      {
+                        "type": "scale",
+                        "scale": [1, 1]
+                      }
                     ]
                   }
+                ],
+                "type": "gaussian",
+                "metadata": {
+                  "method": "skimage.transform.pyramid_gaussian",
+                  "version": "0.16.1",
+                  "args": ["true", "false"],
+                  "kwargs": {
+                    "multichannel": true
+                  }
+                },
+                "axes": [
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
                 ]
               }
-            ],
-            "type": "gaussian",
-            "metadata": {
-              "method": "skimage.transform.pyramid_gaussian",
-              "version": "0.16.1",
-              "args": [
-                "true",
-                "false"
-              ],
-              "kwargs": {
-                "multichannel": true
-              }
-            },
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
             ]
           }
-        ]
+        }
       },
       "valid": true
     },
@@ -221,42 +177,41 @@
       "formerly": "valid/custom_type_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "angle",
-                "type": "custom"
-              },
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "angle",
+                    "type": "custom"
+                  },
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": true
     },
@@ -264,37 +219,37 @@
       "formerly": "invalid/duplicate_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -302,35 +257,35 @@
       "formerly": "invalid/missing_space_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "t",
-                "type": "time"
-              },
-              {
-                "name": "c",
-                "type": "channel"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "t",
+                    "type": "time"
+                  },
+                  {
+                    "name": "c",
+                    "type": "channel"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -338,37 +293,37 @@
       "formerly": "invalid/invalid_transformation_type.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "translation"
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "translation"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -376,37 +331,37 @@
       "formerly": "invalid/missing_scale.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
                   {
-                    "translation": [
-                      1,
-                      1
-                    ],
-                    "type": "translation"
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "translation": [1, 1],
+                        "type": "translation"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -414,55 +369,51 @@
       "formerly": "invalid/too_many_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "angle",
-                "type": "custom"
-              },
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "t",
-                "type": "time"
-              },
-              {
-                "name": "c",
-                "type": "channel"
-              },
-              {
-                "name": "z",
-                "type": "space"
-              },
-              {
-                "name": "y",
-                "type": "space"
-              },
-              {
-                "name": "x",
-                "type": "space"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1,
-                      1,
-                      1,
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "angle",
+                    "type": "custom"
+                  },
+                  {
+                    "name": "t",
+                    "type": "time"
+                  },
+                  {
+                    "name": "c",
+                    "type": "channel"
+                  },
+                  {
+                    "name": "z",
+                    "type": "space"
+                  },
+                  {
+                    "name": "y",
+                    "type": "space"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1, 1, 1, 1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -470,53 +421,53 @@
       "formerly": "invalid/invalid_channels_color.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
             ],
-            "version": "0.5-dev"
-          }
-        ],
-        "omero": {
-          "channels": [
-            {
-              "active": true,
-              "coefficient": 1.0,
-              "color": 255,
-              "family": "linear",
-              "label": "1234",
-              "window": {
-                "end": 1765.0,
-                "max": 2555.0,
-                "min": 5.0,
-                "start": 0.0
-              }
+            "omero": {
+              "channels": [
+                {
+                  "active": true,
+                  "coefficient": 1.0,
+                  "color": 255,
+                  "family": "linear",
+                  "label": "1234",
+                  "window": {
+                    "end": 1765.0,
+                    "max": 2555.0,
+                    "min": 5.0,
+                    "start": 0.0
+                  }
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": false
@@ -525,35 +476,35 @@
       "formerly": "invalid/missing_axes_name.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "type": "space",
-                "unit": "micron"
-              },
-              {
-                "type": "space",
-                "unit": "micron"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      0.13,
-                      0.13
-                    ],
-                    "type": "scale"
+                    "type": "space",
+                    "unit": "micron"
+                  },
+                  {
+                    "type": "space",
+                    "unit": "micron"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [0.13, 0.13],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -561,32 +512,32 @@
       "formerly": "invalid/invalid_axes_count.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -594,40 +545,39 @@
       "formerly": "invalid/one_space_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "t",
-                "type": "time"
-              },
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "c",
-                "type": "channel"
-              },
-              {
-                "name": "x",
-                "type": "space"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "t",
+                    "type": "time"
+                  },
+                  {
+                    "name": "c",
+                    "type": "channel"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -635,37 +585,37 @@
       "formerly": "invalid/invalid_path.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": 0,
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": 0,
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -673,45 +623,43 @@
       "formerly": "invalid/invalid_multiscales_transformations.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
+                "axes": [
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
+                  }
+                ],
                 "coordinateTransformations": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
+                    "scale": ["invalid"],
                     "type": "scale"
                   }
                 ]
               }
-            ],
-            "coordinateTransformations": [
-              {
-                "scale": [
-                  "invalid"
-                ],
-                "type": "scale"
-              }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -719,28 +667,31 @@
       "formerly": "invalid/missing_transformations.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0"
+                "axes": [
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0"
+                  }
+                ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -748,149 +699,80 @@
       "formerly": "invalid/no_datasets.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [],
-            "version": "0.5-dev"
-          }
-        ]
-      },
-      "valid": false
-    },
-    {
-      "formerly": "invalid/missing_datasets.json",
-      "description": "TBD",
-      "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "version": "0.5-dev"
-          }
-        ]
-      },
-      "valid": false
-    },
-    {
-      "formerly": "invalid/missing_axes.json",
-      "description": "TBD",
-      "data": {
-        "multiscales": [
-          {
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
                   }
-                ]
+                ],
+                "datasets": []
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
     {
-      "formerly": "invalid/invalid_version.json",
+      "formerly": "invalid/missing_datasets.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
                   }
                 ]
               }
-            ],
-            "version": "0.3"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
     {
-      "formerly": "invalid/missing_version.json",
+      "formerly": "invalid/missing_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "datasets": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
             ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -898,37 +780,37 @@
       "formerly": "invalid/invalid_axis_type.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "y",
-                "type": "invalid",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "invalid",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -936,44 +818,41 @@
       "formerly": "invalid/duplicate_scale.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
                   },
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      },
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -981,26 +860,26 @@
       "formerly": "invalid/no_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [],
+                "datasets": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -1008,45 +887,43 @@
       "formerly": "invalid/too_many_space_axes.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "X",
-                "type": "space"
-              },
-              {
-                "name": "z",
-                "type": "space"
-              },
-              {
-                "name": "y",
-                "type": "space"
-              },
-              {
-                "name": "x",
-                "type": "space"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1,
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "X",
+                    "type": "space"
+                  },
+                  {
+                    "name": "z",
+                    "type": "space"
+                  },
+                  {
+                    "name": "y",
+                    "type": "space"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1, 1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -1054,8 +931,9 @@
       "formerly": "invalid/no_multiscales.json",
       "description": "TBD",
       "data": {
-        "@type": "ngff:Image",
-        "multiscales": []
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": { "multiscales": [] }
+        }
       },
       "valid": false
     },
@@ -1063,53 +941,53 @@
       "formerly": "invalid/invalid_channels_window.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
             ],
-            "version": "0.5-dev"
-          }
-        ],
-        "omero": {
-          "channels": [
-            {
-              "active": true,
-              "coefficient": 1.0,
-              "color": "ff0000",
-              "family": "linear",
-              "label": "1234",
-              "window": {
-                "end": "100",
-                "max": 2555.0,
-                "min": 5.0,
-                "start": 0.0
-              }
+            "omero": {
+              "channels": [
+                {
+                  "active": true,
+                  "coefficient": 1.0,
+                  "color": "ff0000",
+                  "family": "linear",
+                  "label": "1234",
+                  "window": {
+                    "end": "100",
+                    "max": 2555.0,
+                    "min": 5.0,
+                    "start": 0.0
+                  }
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": false
@@ -1118,29 +996,32 @@
       "formerly": "invalid/empty_transformations.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
-                "coordinateTransformations": []
+                "axes": [
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": []
+                  }
+                ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     },
@@ -1148,36 +1029,36 @@
       "formerly": "invalid/missing_path.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
                   }
                 ]
               }
-            ],
-            "version": "0.5-dev"
+            ]
           }
-        ]
+        }
       },
       "valid": false
     }
diff --git a/latest/tests/label_suite.json b/latest/tests/label_suite.json
index 634225c8..64f9b2c3 100644
--- a/latest/tests/label_suite.json
+++ b/latest/tests/label_suite.json
@@ -7,13 +7,17 @@
     {
       "formerly": "image-label/minimal",
       "data": {
-        "image-label": {
-          "colors": [
-            {
-              "label-value": 1,
-              "rgba": [0, 0, 0, 0]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "colors": [
+                {
+                  "label-value": 1,
+                  "rgba": [0, 0, 0, 0]
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": true
@@ -21,18 +25,22 @@
     {
       "formerly": "image-label/minimal_properties",
       "data": {
-        "image-label": {
-          "colors": [
-            {
-              "label-value": 1,
-              "rgba": [0, 0, 0, 0]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "colors": [
+                {
+                  "label-value": 1,
+                  "rgba": [0, 0, 0, 0]
+                }
+              ],
+              "properties": [
+                {
+                  "label-value": 1
+                }
+              ]
             }
-          ],
-          "properties": [
-            {
-              "label-value": 1
-            }
-          ]
+          }
         }
       },
       "valid": true
@@ -40,8 +48,12 @@
     {
       "formerly": "image-label/empty_colors",
       "data": {
-        "image-label": {
-          "colors": []
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "colors": []
+            }
+          }
         }
       },
       "valid": false
@@ -49,8 +61,12 @@
     {
       "formerly": "image-label/empty_properties",
       "data": {
-        "image-label": {
-          "properties": []
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "properties": []
+            }
+          }
         }
       },
       "valid": false
@@ -58,12 +74,16 @@
     {
       "formerly": "image-label/colors_no_label_value",
       "data": {
-        "image-label": {
-          "colors": [
-            {
-              "rgba": [0, 0, 0, 0]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "colors": [
+                {
+                  "rgba": [0, 0, 0, 0]
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": false
@@ -71,12 +91,16 @@
     {
       "formerly": "image-label/properties_no_label_value",
       "data": {
-        "image-label": {
-          "properties": [
-            {
-              "value": "foo"
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "properties": [
+                {
+                  "value": "foo"
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": false
@@ -84,13 +108,17 @@
     {
       "formerly": "image-label/colors_rgba_length",
       "data": {
-        "image-label": {
-          "colors": [
-            {
-              "label-value": 1,
-              "rgba": [0, 0, 0]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "colors": [
+                {
+                  "label-value": 1,
+                  "rgba": [0, 0, 0]
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": false
@@ -98,13 +126,17 @@
     {
       "formerly": "image-label/colors_rgba_type",
       "data": {
-        "image-label": {
-          "colors": [
-            {
-              "label-value": 1,
-              "rgba": [0, 0, 0, 500]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "colors": [
+                {
+                  "label-value": 1,
+                  "rgba": [0, 0, 0, 500]
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": false
@@ -112,17 +144,21 @@
     {
       "formerly": "image-label/colors_duplicate",
       "data": {
-        "image-label": {
-          "colors": [
-            {
-              "label-value": 1,
-              "rgba": [0, 0, 0, 0]
-            },
-            {
-              "label-value": 1,
-              "rgba": [0, 0, 0, 0]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "image-label": {
+              "colors": [
+                {
+                  "label-value": 1,
+                  "rgba": [0, 0, 0, 0]
+                },
+                {
+                  "label-value": 1,
+                  "rgba": [0, 0, 0, 0]
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": false
diff --git a/latest/tests/plate_suite.json b/latest/tests/plate_suite.json
index 876d7c45..35272bf7 100644
--- a/latest/tests/plate_suite.json
+++ b/latest/tests/plate_suite.json
@@ -7,25 +7,28 @@
     {
       "formerly": "plate/minimal_no_acquisitions",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": true
@@ -33,30 +36,33 @@
     {
       "formerly": "plate/minimal_acquisitions",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": 0
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": true
@@ -64,20 +70,23 @@
     {
       "formerly": "plate/missing_rows",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -85,21 +94,24 @@
     {
       "formerly": "plate/empty_rows",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -107,28 +119,31 @@
     {
       "formerly": "plate/duplicate_rows",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            },
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                },
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -136,20 +151,23 @@
     {
       "formerly": "plate/missing_columns",
       "data": {
-        "version": "0.5-dev",
-        "plate": {
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -157,21 +175,24 @@
     {
       "formerly": "plate/empty_columns",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -179,28 +200,31 @@
     {
       "formerly": "plate/duplicate_columns",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            },
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                },
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -208,18 +232,21 @@
     {
       "formerly": "plate/missing_wells",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ]
             }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ]
+          }
         }
       },
       "valid": false
@@ -227,19 +254,22 @@
     {
       "formerly": "plate/empty_wells",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": {}
             }
-          ],
-          "wells": {}
+          }
         }
       },
       "valid": false
@@ -247,33 +277,36 @@
     {
       "formerly": "plate/duplicate_rows",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            },
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            },
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                },
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                },
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -281,25 +314,28 @@
     {
       "formerly": "plate/missing_column_name",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "concentration": 10
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "concentration": 10
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -307,25 +343,28 @@
     {
       "formerly": "plate/missing_row_name",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "concentration": 10
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "concentration": 10
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -333,24 +372,27 @@
     {
       "formerly": "plate/missing_well_path",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -358,24 +400,27 @@
     {
       "formerly": "plate/missing_well_rowIndex",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -383,24 +428,27 @@
     {
       "formerly": "plate/missing_well_columnIndex",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -408,24 +456,27 @@
     {
       "formerly": "plate/well_1group",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A1",
-              "rowIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A1",
+                  "rowIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -433,75 +484,27 @@
     {
       "formerly": "plate/well_3groups",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "plate/A/1",
-              "rowIndex": 0
-            }
-          ]
-        }
-      },
-      "valid": false
-    },
-    {
-      "formerly": "plate/invalid_version",
-      "data": {
-        "plate": {
-          "version": "foo",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
-        }
-      },
-      "valid": false
-    },
-    {
-      "formerly": "plate/missing_version",
-      "data": {
-        "plate": {
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "plate/A/1",
+                  "rowIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -509,25 +512,28 @@
     {
       "formerly": "plate/non_alphanumeric_column",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A-1"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A-1/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A-1"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A-1/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -535,25 +541,28 @@
     {
       "formerly": "plate/non_alphanumeric_row",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "A1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/A1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "A1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/A1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": true
@@ -561,30 +570,33 @@
     {
       "formerly": "plate/missing_acquisition_id",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "maximumfieldcount": 1
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "maximumfieldcount": 1
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -592,30 +604,33 @@
     {
       "formerly": "plate/non_integer_acquisition_id",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": "0"
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": "0"
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -623,30 +638,33 @@
     {
       "formerly": "plate/negative_acquisition_id",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": -1
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": -1
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -654,31 +672,34 @@
     {
       "formerly": "plate/non_integer_acquisition_maximumfieldcount",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": 0,
-              "maximumfieldcount": "0"
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "maximumfieldcount": "0"
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -686,31 +707,34 @@
     {
       "formerly": "plate/acquisition_zero_maximumfieldcount",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": 0,
-              "maximumfieldcount": 0
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "maximumfieldcount": 0
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -718,31 +742,34 @@
     {
       "formerly": "plate/acquisition_noninteger_starttime",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": 0,
-              "starttime": "2022-05-13T13:48:06+00:00"
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "starttime": "2022-05-13T13:48:06+00:00"
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -750,31 +777,34 @@
     {
       "formerly": "plate/acquisition_negative_starttime",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": 0,
-              "starttime": -1
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "starttime": -1
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -782,31 +812,34 @@
     {
       "formerly": "plate/acquisition_noninteger_endtime",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": 0,
-              "endtime": "2022-05-13T13:48:06+00:00"
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "endtime": "2022-05-13T13:48:06+00:00"
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -814,31 +847,34 @@
     {
       "formerly": "plate/negative_endtime",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "acquisitions": [
-            {
-              "id": 0,
-              "endtime": -1
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "endtime": -1
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -846,26 +882,29 @@
     {
       "formerly": "plate/zero_field_count",
       "data": {
-        "plate": {
-          "version": "0.5-dev",
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "field_count": 0,
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "field_count": 0,
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
diff --git a/latest/tests/strict_image_suite.json b/latest/tests/strict_image_suite.json
index 7bff90ca..faf667f2 100644
--- a/latest/tests/strict_image_suite.json
+++ b/latest/tests/strict_image_suite.json
@@ -8,107 +8,86 @@
       "formerly": "valid_strict/multiscales_example.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "version": "0.5-dev",
-            "name": "example",
-            "axes": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "t",
-                "type": "time",
-                "unit": "millisecond"
-              },
-              {
-                "name": "c",
-                "type": "channel"
-              },
-              {
-                "name": "z",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "name": "example",
+                "axes": [
                   {
-                    "type": "scale",
-                    "scale": [
-                      1.0,
-                      1.0,
-                      0.5,
-                      0.5,
-                      0.5
-                    ]
+                    "name": "t",
+                    "type": "time",
+                    "unit": "millisecond"
+                  },
+                  {
+                    "name": "c",
+                    "type": "channel"
+                  },
+                  {
+                    "name": "z",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
                   }
-                ]
-              },
-              {
-                "path": "1",
-                "coordinateTransformations": [
+                ],
+                "datasets": [
                   {
-                    "type": "scale",
-                    "scale": [
-                      1.0,
-                      1.0,
-                      1.0,
-                      1.0,
-                      1.0
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "type": "scale",
+                        "scale": [1.0, 1.0, 0.5, 0.5, 0.5]
+                      }
+                    ]
+                  },
+                  {
+                    "path": "1",
+                    "coordinateTransformations": [
+                      {
+                        "type": "scale",
+                        "scale": [1.0, 1.0, 1.0, 1.0, 1.0]
+                      }
+                    ]
+                  },
+                  {
+                    "path": "2",
+                    "coordinateTransformations": [
+                      {
+                        "type": "scale",
+                        "scale": [1.0, 1.0, 2.0, 2.0, 2.0]
+                      }
                     ]
                   }
-                ]
-              },
-              {
-                "path": "2",
+                ],
                 "coordinateTransformations": [
                   {
                     "type": "scale",
-                    "scale": [
-                      1.0,
-                      1.0,
-                      2.0,
-                      2.0,
-                      2.0
-                    ]
+                    "scale": [0.1, 1.0, 1.0, 1.0, 1.0]
                   }
-                ]
-              }
-            ],
-            "coordinateTransformations": [
-              {
-                "type": "scale",
-                "scale": [
-                  0.1,
-                  1.0,
-                  1.0,
-                  1.0,
-                  1.0
-                ]
-              }
-            ],
-            "type": "gaussian",
-            "metadata": {
-              "description": "the fields in metadata depend on the downscaling implementation. Here, the parameters passed to the skimage function are given",
-              "method": "skimage.transform.pyramid_gaussian",
-              "version": "0.16.1",
-              "args": "[true]",
-              "kwargs": {
-                "multichannel": true
+                ],
+                "type": "gaussian",
+                "metadata": {
+                  "description": "the fields in metadata depend on the downscaling implementation. Here, the parameters passed to the skimage function are given",
+                  "method": "skimage.transform.pyramid_gaussian",
+                  "version": "0.16.1",
+                  "args": "[true]",
+                  "kwargs": {
+                    "multichannel": true
+                  }
+                }
               }
-            }
+            ]
           }
-        ]
+        }
       },
       "valid": true
     },
@@ -116,51 +95,48 @@
       "formerly": "valid_strict/multiscales_transformations.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "path": "0",
+                "axes": [
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
+                  }
+                ],
                 "coordinateTransformations": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
+                    "scale": [10, 10],
                     "type": "scale"
                   }
-                ]
-              }
-            ],
-            "coordinateTransformations": [
-              {
-                "scale": [
-                  10,
-                  10
                 ],
-                "type": "scale"
+                "name": "image_with_coordinateTransformations",
+                "type": "foo",
+                "metadata": {
+                  "key": "value"
+                }
               }
-            ],
-            "version": "0.5-dev",
-            "name": "image_with_coordinateTransformations",
-            "type": "foo",
-            "metadata": {
-              "key": "value"
-            }
+            ]
           }
-        ]
+        }
       },
       "valid": true
     },
@@ -168,53 +144,50 @@
       "formerly": "valid_strict/image_metadata.json",
       "description": "TBD",
       "data": {
-        "@id": "top",
-        "@type": "ngff:Image",
-        "multiscales": [
-          {
-            "@id": "inner",
-            "version": "0.5-dev",
-            "name": "example",
-            "datasets": [
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "@id": "top",
+            "@type": "ngff:Image",
+            "multiscales": [
               {
-                "path": "path/to/0",
-                "coordinateTransformations": [
+                "@id": "inner",
+                "name": "example",
+                "datasets": [
                   {
-                    "type": "scale",
-                    "scale": [
-                      1,
-                      1
+                    "path": "path/to/0",
+                    "coordinateTransformations": [
+                      {
+                        "type": "scale",
+                        "scale": [1, 1]
+                      }
                     ]
                   }
+                ],
+                "type": "gaussian",
+                "metadata": {
+                  "method": "skimage.transform.pyramid_gaussian",
+                  "version": "0.16.1",
+                  "args": ["true", "false"],
+                  "kwargs": {
+                    "multichannel": true
+                  }
+                },
+                "axes": [
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
+                  }
                 ]
               }
-            ],
-            "type": "gaussian",
-            "metadata": {
-              "method": "skimage.transform.pyramid_gaussian",
-              "version": "0.16.1",
-              "args": [
-                "true",
-                "false"
-              ],
-              "kwargs": {
-                "multichannel": true
-              }
-            },
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
             ]
           }
-        ]
+        }
       },
       "valid": true
     },
@@ -222,42 +195,42 @@
       "formerly": "valid_strict/image.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1
-                    ],
-                    "type": "scale"
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
                   }
-                ]
+                ],
+                "datasets": [
+                  {
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1],
+                        "type": "scale"
+                      }
+                    ]
+                  }
+                ],
+                "name": "simple_image",
+                "type": "foo",
+                "metadata": {
+                  "key": "value"
+                }
               }
-            ],
-            "version": "0.5-dev",
-            "name": "simple_image",
-            "type": "foo",
-            "metadata": {
-              "key": "value"
-            }
+            ]
           }
-        ]
+        }
       },
       "valid": true
     },
@@ -265,121 +238,106 @@
       "formerly": "valid_strict/image_omero.json",
       "description": "TBD",
       "data": {
-        "multiscales": [
-          {
-            "axes": [
-              {
-                "name": "t",
-                "type": "time"
-              },
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "multiscales": [
               {
-                "name": "c",
-                "type": "channel"
-              },
-              {
-                "name": "z",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "y",
-                "type": "space",
-                "unit": "micrometer"
-              },
-              {
-                "name": "x",
-                "type": "space",
-                "unit": "micrometer"
-              }
-            ],
-            "datasets": [
-              {
-                "path": "0",
-                "coordinateTransformations": [
+                "axes": [
                   {
-                    "scale": [
-                      1,
-                      1,
-                      0.5,
-                      0.13,
-                      0.13
-                    ],
-                    "type": "scale"
+                    "name": "t",
+                    "type": "time"
                   },
                   {
-                    "translation": [
-                      0,
-                      9,
-                      0.5,
-                      25.74,
-                      21.58
-                    ],
-                    "type": "translation"
+                    "name": "c",
+                    "type": "channel"
+                  },
+                  {
+                    "name": "z",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "y",
+                    "type": "space",
+                    "unit": "micrometer"
+                  },
+                  {
+                    "name": "x",
+                    "type": "space",
+                    "unit": "micrometer"
                   }
-                ]
-              },
-              {
-                "path": "1",
-                "coordinateTransformations": [
+                ],
+                "datasets": [
                   {
-                    "scale": [
-                      1,
-                      1,
-                      1,
-                      0.26,
-                      0.26
-                    ],
-                    "type": "scale"
+                    "path": "0",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1, 0.5, 0.13, 0.13],
+                        "type": "scale"
+                      },
+                      {
+                        "translation": [0, 9, 0.5, 25.74, 21.58],
+                        "type": "translation"
+                      }
+                    ]
+                  },
+                  {
+                    "path": "1",
+                    "coordinateTransformations": [
+                      {
+                        "scale": [1, 1, 1, 0.26, 0.26],
+                        "type": "scale"
+                      }
+                    ]
                   }
-                ]
+                ],
+                "name": "image_with_omero_metadata",
+                "type": "foo",
+                "metadata": {
+                  "key": "value"
+                }
               }
             ],
-            "version": "0.5-dev",
-            "name": "image_with_omero_metadata",
-            "type": "foo",
-            "metadata": {
-              "key": "value"
+            "omero": {
+              "channels": [
+                {
+                  "active": true,
+                  "coefficient": 1.0,
+                  "color": "00FF00",
+                  "family": "linear",
+                  "inverted": false,
+                  "label": "FITC",
+                  "window": {
+                    "end": 813.0,
+                    "max": 870.0,
+                    "min": 102.0,
+                    "start": 82.0
+                  }
+                },
+                {
+                  "active": true,
+                  "coefficient": 1.0,
+                  "color": "FF0000",
+                  "family": "linear",
+                  "inverted": false,
+                  "label": "RD-TR-PE",
+                  "window": {
+                    "end": 815.0,
+                    "max": 441.0,
+                    "min": 129.0,
+                    "start": 78.0
+                  }
+                }
+              ],
+              "id": 1,
+              "rdefs": {
+                "defaultT": 0,
+                "defaultZ": 2,
+                "model": "color"
+              },
+              "version": "0.5-dev"
             }
           }
-        ],
-        "omero": {
-          "channels": [
-            {
-              "active": true,
-              "coefficient": 1.0,
-              "color": "00FF00",
-              "family": "linear",
-              "inverted": false,
-              "label": "FITC",
-              "window": {
-                "end": 813.0,
-                "max": 870.0,
-                "min": 102.0,
-                "start": 82.0
-              }
-            },
-            {
-              "active": true,
-              "coefficient": 1.0,
-              "color": "FF0000",
-              "family": "linear",
-              "inverted": false,
-              "label": "RD-TR-PE",
-              "window": {
-                "end": 815.0,
-                "max": 441.0,
-                "min": 129.0,
-                "start": 78.0
-              }
-            }
-          ],
-          "id": 1,
-          "rdefs": {
-            "defaultT": 0,
-            "defaultZ": 2,
-            "model": "color"
-          },
-          "version": "0.5-dev"
         }
       },
       "valid": true
diff --git a/latest/tests/strict_label_suite.json b/latest/tests/strict_label_suite.json
index 9fe0cda2..96632835 100644
--- a/latest/tests/strict_label_suite.json
+++ b/latest/tests/strict_label_suite.json
@@ -4,25 +4,11 @@
     "id": "schemas/strict_label.schema"
   },
   "tests": [
-    {
-      "formerly": "image-label/no_version",
-      "data": {
-        "image-label": {
-          "colors": [
-            {
-              "label-value": 1,
-              "rgba": [0, 0, 0, 0]
-            }
-          ]
-        }
-      },
-      "valid": false
-    },
     {
       "formerly": "image-label/no_colors",
       "data": {
-        "image-label": {
-          "version": "0.5-dev"
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": { "image-label": {} }
         }
       },
       "valid": false
diff --git a/latest/tests/strict_plate_suite.json b/latest/tests/strict_plate_suite.json
index 931cf7e7..4cbd40fa 100644
--- a/latest/tests/strict_plate_suite.json
+++ b/latest/tests/strict_plate_suite.json
@@ -7,26 +7,29 @@
     {
       "formerly": "plate/strict_no_acquisitions",
       "data": {
-        "plate": {
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "name": "test plate",
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "version": "0.5-dev",
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "name": "test plate",
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": true
@@ -34,51 +37,28 @@
     {
       "formerly": "plate/missing_name",
       "data": {
-        "plate": {
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "version": "0.5-dev",
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
-        }
-      },
-      "valid": false
-    },
-    {
-      "formerly": "plate/missing_version",
-      "data": {
-        "plate": {
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "name": "test plate",
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -86,33 +66,36 @@
     {
       "formerly": "plate/strict_acquisitions",
       "data": {
-        "plate": {
-          "acquisitions": [
-            {
-              "id": 0,
-              "name": "0",
-              "maximumfieldcount": 1
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "name": "test plate",
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "version": "0.5-dev",
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "name": "0",
+                  "maximumfieldcount": 1
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "name": "test plate",
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": true
@@ -120,32 +103,35 @@
     {
       "formerly": "plate/missing_acquisition_name",
       "data": {
-        "plate": {
-          "acquisitions": [
-            {
-              "id": 0,
-              "maximumfieldcount": 1
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "name": "test plate",
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "version": "0.5-dev",
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "maximumfieldcount": 1
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "name": "test plate",
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
@@ -153,32 +139,35 @@
     {
       "formerly": "plate/missing_acquisition_maximumfieldcount",
       "data": {
-        "plate": {
-          "acquisitions": [
-            {
-              "id": 0,
-              "name": "0"
-            }
-          ],
-          "columns": [
-            {
-              "name": "A"
-            }
-          ],
-          "name": "test plate",
-          "rows": [
-            {
-              "name": "1"
-            }
-          ],
-          "version": "0.5-dev",
-          "wells": [
-            {
-              "path": "A/1",
-              "rowIndex": 0,
-              "columnIndex": 0
-            }
-          ]
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "plate": {
+              "acquisitions": [
+                {
+                  "id": 0,
+                  "name": "0"
+                }
+              ],
+              "columns": [
+                {
+                  "name": "A"
+                }
+              ],
+              "name": "test plate",
+              "rows": [
+                {
+                  "name": "1"
+                }
+              ],
+              "wells": [
+                {
+                  "path": "A/1",
+                  "rowIndex": 0,
+                  "columnIndex": 0
+                }
+              ]
+            }
+          }
         }
       },
       "valid": false
diff --git a/latest/tests/strict_well_suite.json b/latest/tests/strict_well_suite.json
index edfb2936..b47c8df8 100644
--- a/latest/tests/strict_well_suite.json
+++ b/latest/tests/strict_well_suite.json
@@ -7,41 +7,34 @@
     {
       "formerly": "well/strict_no_acquisitions",
       "data": {
-        "well": {
-          "images": [
-            {
-              "path": "0"
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "well": {
+              "images": [
+                {
+                  "path": "0"
+                }
+              ]
             }
-          ],
-          "version": "0.5-dev"
+          }
         }
       },
       "valid": true
     },
-    {
-      "formerly": "plate/missing_version",
-      "data": {
-        "well": {
-          "images": [
-            {
-              "path": "0"
-            }
-          ]
-        }
-      },
-      "valid": false
-    },
     {
       "formerly": "plate/strict_acquisitions",
       "data": {
-        "well": {
-          "images": [
-            {
-              "acquisition": 0,
-              "path": "0"
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "well": {
+              "images": [
+                {
+                  "acquisition": 0,
+                  "path": "0"
+                }
+              ]
             }
-          ],
-          "version": "0.5-dev"
+          }
         }
       },
       "valid": true
diff --git a/latest/tests/test_validation.py b/latest/tests/test_validation.py
index 2b862785..53d4adcc 100644
--- a/latest/tests/test_validation.py
+++ b/latest/tests/test_validation.py
@@ -16,9 +16,12 @@
         schema = json.load(f)
         schema_store[schema["$id"]] = schema
 
+print(schema_store)
+
+
 @dataclass
 class Suite:
-    schema:  dict
+    schema: dict
     data: dict
     valid: bool = True
 
@@ -72,7 +75,9 @@ def pytest_generate_tests(metafunc):
             for filename in glob.glob(f"{example_folder}/*.json"):
                 with open(filename) as f:
                     # Strip comments
-                    data = ''.join(line for line in f if not line.lstrip().startswith('//'))
+                    data = "".join(
+                        line for line in f if not line.lstrip().startswith("//")
+                    )
                     data = json.loads(data)
                 ids.append("example_" + str(filename).split("/")[-1][0:-5])
                 suites.append(Suite(schema, data, True))  # Assume true
diff --git a/latest/tests/well_suite.json b/latest/tests/well_suite.json
index 0f752551..a18d5060 100644
--- a/latest/tests/well_suite.json
+++ b/latest/tests/well_suite.json
@@ -7,12 +7,16 @@
     {
       "formerly": "well/minimal_no_acquisition",
       "data": {
-        "well": {
-          "images": [
-            {
-              "path": "0"
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "well": {
+              "images": [
+                {
+                  "path": "0"
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": true
@@ -20,13 +24,17 @@
     {
       "formerly": "well/minimal_acquisitions",
       "data": {
-        "well": {
-          "images": [
-            {
-              "acquisition": 1,
-              "path": "0"
+        "attributes": {
+          "https://ngff.openmicroscopy.org/0.5": {
+            "well": {
+              "images": [
+                {
+                  "acquisition": 1,
+                  "path": "0"
+                }
+              ]
             }
-          ]
+          }
         }
       },
       "valid": true
@@ -56,20 +64,6 @@
       },
       "valid": false
     },
-    {
-      "formerly": "well/invalid_version",
-      "data": {
-        "well": {
-          "images": [
-            {
-              "path": "0"
-            }
-          ],
-          "version": "foo"
-        }
-      },
-      "valid": false
-    },
     {
       "formerly": "well/non_integer_acquisition_id",
       "data": {
diff --git a/rfc/2/index.md b/rfc/2/index.md
index 95571c2d..0800e823 100644
--- a/rfc/2/index.md
+++ b/rfc/2/index.md
@@ -130,7 +130,7 @@ In the future, the OME-Zarr community MAY decide to restrict the allowed feature
 
 While the adoption of Zarr v3 does not strictly require changes to the OME-Zarr metadata, this proposal contains changes to align with community conventions and ease implementation:
 
-- OME-Zarr metadata will be stored under a dedicated key in the Zarr array or group attributes. The key will be a well-known URI of the OME-NGFF specification with a version number, e.g. `https://ngff.openmicroscopy.org/0.6`.
+- OME-Zarr metadata will be stored under a dedicated key in the Zarr array or group attributes. The key will be a well-known URI of the OME-NGFF specification with a version number, e.g. `https://ngff.openmicroscopy.org/0.5`.
 - Since the version is already encoded in the new metadata key, the `version` keys in `multiscale`, `plate`, `well` etc. are removed.
 - The `dimension_names` attribute in the Zarr metadata must match the axes names in the OME-Zarr metadata.
 

From 81d87426251fb6b78584ff9f49c6aa88c1553918 Mon Sep 17 00:00:00 2001
From: Norman Rzepka 
Date: Sun, 2 Jun 2024 08:26:37 +0200
Subject: [PATCH 02/35] typo

---
 latest/index.bs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/latest/index.bs b/latest/index.bs
index ee3b11bb..999423e3 100644
--- a/latest/index.bs
+++ b/latest/index.bs
@@ -187,7 +187,7 @@ hierarchy. In this file, the metadata is stored under the namespaced key
 
 The "axes" are used as part of [[#multiscale-md]]. The length of "axes" MUST be equal to the number of dimensions of the arrays that contain the image data.
 
-The "dimension_names" attribute in the `zarr.json` of the Zarr array of a multiscale level MUS match the names in the "axes" metadata.
+The "dimension_names" attribute in the `zarr.json` of the Zarr array of a multiscale level MUST match the names in the "axes" metadata.
 
 
 "bioformats2raw.layout" (transitional) {#bf2raw}

From 00371a3c28d1a93a042bc5dc831e84b41505fc66 Mon Sep 17 00:00:00 2001
From: Norman Rzepka 
Date: Fri, 28 Jun 2024 14:28:31 +0200
Subject: [PATCH 03/35] change version in link

---
 latest/index.bs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/latest/index.bs b/latest/index.bs
index 999423e3..8e34416f 100644
--- a/latest/index.bs
+++ b/latest/index.bs
@@ -19,7 +19,7 @@ Abstract: This document contains next-generation file format (NGFF)
 Abstract: specifications for storing bioimaging data in the cloud.
 Abstract: All specifications are submitted to the https://image.sc community for review.
 Status Text: The current released version of this specification is
-Status Text: 0.4. Migration scripts
+Status Text: 0.5. Migration scripts
 Status Text: will be provided between numbered versions. Data written with these latest changes
 Status Text: (an "editor's draft") will not necessarily be supported.
 
From ee4ce14d82961745a92e15e8b052ad4524f65b82 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Tue, 2 Jul 2024 17:16:20 +0200 Subject: [PATCH 04/35] adapt spec to RFC-2 revision --- latest/examples/bf2raw/image.json | 2 +- latest/examples/bf2raw/plate.json | 3 +- .../label_strict/colors_properties.json | 3 +- .../multiscales_example.json | 3 +- .../multiscales_transformations.json | 3 +- latest/examples/ome/series-2.json | 4 +- .../examples/plate_strict/plate_2wells.json | 3 +- .../examples/plate_strict/plate_6wells.json | 3 +- latest/examples/well_strict/well_2fields.json | 3 +- latest/examples/well_strict/well_4fields.json | 3 +- latest/index.bs | 13 ++- latest/schemas/bf2raw.schema | 10 ++- latest/schemas/image.schema | 10 ++- latest/schemas/label.schema | 10 ++- latest/schemas/ome.schema | 10 ++- latest/schemas/plate.schema | 10 ++- latest/schemas/strict_image.schema | 2 +- latest/schemas/strict_label.schema | 2 +- latest/schemas/strict_plate.schema | 2 +- latest/schemas/version.schema | 10 +++ latest/schemas/well.schema | 10 ++- latest/tests/image_suite.json | 86 ++++++++++++------ latest/tests/label_suite.json | 27 ++++-- latest/tests/plate_suite.json | 90 ++++++++++++------- latest/tests/strict_image_suite.json | 15 ++-- latest/tests/strict_label_suite.json | 5 +- latest/tests/strict_plate_suite.json | 15 ++-- latest/tests/strict_well_suite.json | 6 +- latest/tests/well_suite.json | 6 +- 29 files changed, 250 insertions(+), 119 deletions(-) create mode 100644 latest/schemas/version.schema diff --git a/latest/examples/bf2raw/image.json b/latest/examples/bf2raw/image.json index 0a6445d1..1a9667ab 100644 --- a/latest/examples/bf2raw/image.json +++ b/latest/examples/bf2raw/image.json @@ -2,6 +2,6 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { "bioformats2raw.layout": 3 } + "ome": { "version": "0.5", "bioformats2raw.layout": 3 } } } diff --git a/latest/examples/bf2raw/plate.json b/latest/examples/bf2raw/plate.json index 76865d36..ef1ac0a7 100644 --- a/latest/examples/bf2raw/plate.json +++ b/latest/examples/bf2raw/plate.json @@ -2,7 +2,8 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "bioformats2raw.layout": 3, "plate": { "columns": [ diff --git a/latest/examples/label_strict/colors_properties.json b/latest/examples/label_strict/colors_properties.json index 42793d12..fa1f4cd6 100644 --- a/latest/examples/label_strict/colors_properties.json +++ b/latest/examples/label_strict/colors_properties.json @@ -2,7 +2,8 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "colors": [ { diff --git a/latest/examples/multiscales_strict/multiscales_example.json b/latest/examples/multiscales_strict/multiscales_example.json index 0fcc2434..4b2c718a 100644 --- a/latest/examples/multiscales_strict/multiscales_example.json +++ b/latest/examples/multiscales_strict/multiscales_example.json @@ -2,7 +2,8 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "name": "example", diff --git a/latest/examples/multiscales_strict/multiscales_transformations.json b/latest/examples/multiscales_strict/multiscales_transformations.json index e6c14c79..e4eb742a 100644 --- a/latest/examples/multiscales_strict/multiscales_transformations.json +++ b/latest/examples/multiscales_strict/multiscales_transformations.json @@ -2,7 +2,8 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ diff --git a/latest/examples/ome/series-2.json b/latest/examples/ome/series-2.json index 660e1115..235c1910 100644 --- a/latest/examples/ome/series-2.json +++ b/latest/examples/ome/series-2.json @@ -2,8 +2,6 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { - "series": ["0", "1"] - } + "ome": { "version": "0.5", "series": ["0", "1"] } } } diff --git a/latest/examples/plate_strict/plate_2wells.json b/latest/examples/plate_strict/plate_2wells.json index c0df297f..e8961001 100644 --- a/latest/examples/plate_strict/plate_2wells.json +++ b/latest/examples/plate_strict/plate_2wells.json @@ -2,7 +2,8 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { diff --git a/latest/examples/plate_strict/plate_6wells.json b/latest/examples/plate_strict/plate_6wells.json index c07a8c5b..bf1b8afe 100644 --- a/latest/examples/plate_strict/plate_6wells.json +++ b/latest/examples/plate_strict/plate_6wells.json @@ -2,7 +2,8 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { diff --git a/latest/examples/well_strict/well_2fields.json b/latest/examples/well_strict/well_2fields.json index b1531059..987fe5e4 100644 --- a/latest/examples/well_strict/well_2fields.json +++ b/latest/examples/well_strict/well_2fields.json @@ -2,7 +2,8 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "well": { "images": [ { diff --git a/latest/examples/well_strict/well_4fields.json b/latest/examples/well_strict/well_4fields.json index 18eb60eb..581ec66b 100644 --- a/latest/examples/well_strict/well_4fields.json +++ b/latest/examples/well_strict/well_4fields.json @@ -2,7 +2,8 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "well": { "images": [ { diff --git a/latest/index.bs b/latest/index.bs index 8e34416f..30bb7c38 100644 --- a/latest/index.bs +++ b/latest/index.bs @@ -162,13 +162,17 @@ for discovering certain types of data, especially images. The OME-Zarr Metadata is stored in the various `zarr.json` files throughout the above array hierarchy. In this file, the metadata is stored under the namespaced key -`https://ngff.openmicroscopy.org/0.5` in `attributes`. +`ome` in `attributes`. +The version of the OME-Zarr Metadata is denoted as a string in the `version` attribute within the `ome` namespace. + +The OME-Zarr Metadata version MUST be consistent within a hierarchy. ```json { ... "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", ... } } @@ -402,7 +406,8 @@ labeled multiscale image(s). All label images SHOULD be listed within this metad { ... "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "labels": [ "cell_space_segmentation" ] @@ -609,7 +614,7 @@ Citing {#citing} [Next-generation file format (NGFF) specifications for storing bioimaging data in the cloud.](https://ngff.openmicroscopy.org/0.4) J. Moore, *et al*. Open Microscopy Environment Consortium, 8 February 2022. -This edition of the specification is [https://ngff.openmicroscopy.org/0.4/](https://ngff.openmicroscopy.org/0.4/]). +This edition of the specification is [https://ngff.openmicroscopy.org/0.5/](https://ngff.openmicroscopy.org/0.5/]). The latest edition is available at [https://ngff.openmicroscopy.org/latest/](https://ngff.openmicroscopy.org/latest/). [(doi:10.5281/zenodo.4282107)](https://doi.org/10.5281/zenodo.4282107) diff --git a/latest/schemas/bf2raw.schema b/latest/schemas/bf2raw.schema index 929516ba..62a183ad 100644 --- a/latest/schemas/bf2raw.schema +++ b/latest/schemas/bf2raw.schema @@ -9,7 +9,7 @@ "description": "The zarr.json attributes key", "type": "object", "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { @@ -19,15 +19,19 @@ "enum": [ 3 ] + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" } }, "required": [ - "bioformats2raw.layout" + "bioformats2raw.layout", + "version" ] } }, "required": [ - "https://ngff.openmicroscopy.org/0.5" + "ome" ] } }, diff --git a/latest/schemas/image.schema b/latest/schemas/image.schema index 57a3d811..1729ceb1 100644 --- a/latest/schemas/image.schema +++ b/latest/schemas/image.schema @@ -9,7 +9,7 @@ "description": "The zarr.json attributes key", "type": "object", "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { @@ -18,15 +18,19 @@ }, "omero": { "$ref": "#/$defs/omero" + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" } }, "required": [ - "multiscales" + "multiscales", + "version" ] } }, "required": [ - "https://ngff.openmicroscopy.org/0.5" + "ome" ] } }, diff --git a/latest/schemas/label.schema b/latest/schemas/label.schema index 193e64fe..9ff0f932 100644 --- a/latest/schemas/label.schema +++ b/latest/schemas/label.schema @@ -9,21 +9,25 @@ "description": "The zarr.json attributes key", "type": "object", "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { "image-label": { "$ref": "#/$defs/image-label" + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" } }, "required": [ - "image-label" + "image-label", + "version" ] } }, "required": [ - "https://ngff.openmicroscopy.org/0.5" + "ome" ] } }, diff --git a/latest/schemas/ome.schema b/latest/schemas/ome.schema index e0ce77a5..88056e20 100644 --- a/latest/schemas/ome.schema +++ b/latest/schemas/ome.schema @@ -9,7 +9,7 @@ "description": "The zarr.json attributes key", "type": "object", "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { @@ -20,15 +20,19 @@ "type": "string" }, "minContains": 1 + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" } }, "required": [ - "series" + "series", + "version" ] } }, "required": [ - "https://ngff.openmicroscopy.org/0.5" + "ome" ] } }, diff --git a/latest/schemas/plate.schema b/latest/schemas/plate.schema index c33a75fc..60ae11a9 100644 --- a/latest/schemas/plate.schema +++ b/latest/schemas/plate.schema @@ -9,7 +9,7 @@ "description": "The zarr.json attributes key", "type": "object", "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { @@ -140,15 +140,19 @@ "rows", "wells" ] + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" } }, "required": [ - "plate" + "plate", + "version" ] } }, "required": [ - "https://ngff.openmicroscopy.org/0.5" + "ome" ] } }, diff --git a/latest/schemas/strict_image.schema b/latest/schemas/strict_image.schema index 1b04f7ad..df755af0 100644 --- a/latest/schemas/strict_image.schema +++ b/latest/schemas/strict_image.schema @@ -8,7 +8,7 @@ "properties": { "attributes": { "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "properties": { "multiscales": { "items": { diff --git a/latest/schemas/strict_label.schema b/latest/schemas/strict_label.schema index 8936ee11..8bcc7d27 100644 --- a/latest/schemas/strict_label.schema +++ b/latest/schemas/strict_label.schema @@ -8,7 +8,7 @@ "properties": { "attributes": { "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "properties": { "image-label": { "required": [ diff --git a/latest/schemas/strict_plate.schema b/latest/schemas/strict_plate.schema index 21075845..61d2e837 100644 --- a/latest/schemas/strict_plate.schema +++ b/latest/schemas/strict_plate.schema @@ -8,7 +8,7 @@ "properties": { "attributes": { "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "properties": { "plate": { "properties": { diff --git a/latest/schemas/version.schema b/latest/schemas/version.schema new file mode 100644 index 00000000..4e04f077 --- /dev/null +++ b/latest/schemas/version.schema @@ -0,0 +1,10 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ngff.openmicroscopy.org/latest/schemas/version.schema", + "title": "OME-Zarr Metadata version", + "description": "The version of the OME-Zarr Metadata", + "type": "string", + "enum": [ + "0.5" + ] +} diff --git a/latest/schemas/well.schema b/latest/schemas/well.schema index b44a8e35..d2dddfca 100644 --- a/latest/schemas/well.schema +++ b/latest/schemas/well.schema @@ -9,7 +9,7 @@ "description": "The zarr.json attributes key", "type": "object", "properties": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { @@ -43,15 +43,19 @@ "required": [ "images" ] + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" } }, "required": [ - "well" + "well", + "version" ] } }, "required": [ - "https://ngff.openmicroscopy.org/0.5" + "ome" ] } }, diff --git a/latest/tests/image_suite.json b/latest/tests/image_suite.json index 645fd683..63925b1a 100644 --- a/latest/tests/image_suite.json +++ b/latest/tests/image_suite.json @@ -9,7 +9,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -52,7 +53,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -93,7 +95,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -131,7 +134,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "datasets": [ @@ -178,7 +182,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -220,7 +225,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -258,7 +264,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -294,7 +301,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -332,7 +340,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -370,7 +379,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -422,7 +432,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -477,7 +488,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -513,7 +525,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -546,7 +559,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -586,7 +600,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -624,7 +639,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -668,7 +684,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -700,7 +717,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -728,7 +746,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -755,7 +774,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "datasets": [ @@ -781,7 +801,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -819,7 +840,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -861,7 +883,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [], @@ -888,7 +911,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -932,7 +956,10 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { "multiscales": [] } + "ome": { + "version": "0.5", + "multiscales": [] + } } }, "valid": false @@ -942,7 +969,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -997,7 +1025,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -1030,7 +1059,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ diff --git a/latest/tests/label_suite.json b/latest/tests/label_suite.json index 64f9b2c3..f9d9d051 100644 --- a/latest/tests/label_suite.json +++ b/latest/tests/label_suite.json @@ -8,7 +8,8 @@ "formerly": "image-label/minimal", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "colors": [ { @@ -26,7 +27,8 @@ "formerly": "image-label/minimal_properties", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "colors": [ { @@ -49,7 +51,8 @@ "formerly": "image-label/empty_colors", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "colors": [] } @@ -62,7 +65,8 @@ "formerly": "image-label/empty_properties", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "properties": [] } @@ -75,7 +79,8 @@ "formerly": "image-label/colors_no_label_value", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "colors": [ { @@ -92,7 +97,8 @@ "formerly": "image-label/properties_no_label_value", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "properties": [ { @@ -109,7 +115,8 @@ "formerly": "image-label/colors_rgba_length", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "colors": [ { @@ -127,7 +134,8 @@ "formerly": "image-label/colors_rgba_type", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "colors": [ { @@ -145,7 +153,8 @@ "formerly": "image-label/colors_duplicate", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "image-label": { "colors": [ { diff --git a/latest/tests/plate_suite.json b/latest/tests/plate_suite.json index 35272bf7..d5aa2abd 100644 --- a/latest/tests/plate_suite.json +++ b/latest/tests/plate_suite.json @@ -8,7 +8,8 @@ "formerly": "plate/minimal_no_acquisitions", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -37,7 +38,8 @@ "formerly": "plate/minimal_acquisitions", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -71,7 +73,8 @@ "formerly": "plate/missing_rows", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -95,7 +98,8 @@ "formerly": "plate/empty_rows", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -120,7 +124,8 @@ "formerly": "plate/duplicate_rows", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -152,7 +157,8 @@ "formerly": "plate/missing_columns", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "rows": [ { @@ -176,7 +182,8 @@ "formerly": "plate/empty_columns", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [], "rows": [ @@ -201,7 +208,8 @@ "formerly": "plate/duplicate_columns", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -233,7 +241,8 @@ "formerly": "plate/missing_wells", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -255,7 +264,8 @@ "formerly": "plate/empty_wells", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -278,7 +288,8 @@ "formerly": "plate/duplicate_rows", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -315,7 +326,8 @@ "formerly": "plate/missing_column_name", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -344,7 +356,8 @@ "formerly": "plate/missing_row_name", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -373,7 +386,8 @@ "formerly": "plate/missing_well_path", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -401,7 +415,8 @@ "formerly": "plate/missing_well_rowIndex", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -429,7 +444,8 @@ "formerly": "plate/missing_well_columnIndex", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -457,7 +473,8 @@ "formerly": "plate/well_1group", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -485,7 +502,8 @@ "formerly": "plate/well_3groups", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -513,7 +531,8 @@ "formerly": "plate/non_alphanumeric_column", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -542,7 +561,8 @@ "formerly": "plate/non_alphanumeric_row", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -571,7 +591,8 @@ "formerly": "plate/missing_acquisition_id", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -605,7 +626,8 @@ "formerly": "plate/non_integer_acquisition_id", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -639,7 +661,8 @@ "formerly": "plate/negative_acquisition_id", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -673,7 +696,8 @@ "formerly": "plate/non_integer_acquisition_maximumfieldcount", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -708,7 +732,8 @@ "formerly": "plate/acquisition_zero_maximumfieldcount", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -743,7 +768,8 @@ "formerly": "plate/acquisition_noninteger_starttime", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -778,7 +804,8 @@ "formerly": "plate/acquisition_negative_starttime", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -813,7 +840,8 @@ "formerly": "plate/acquisition_noninteger_endtime", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -848,7 +876,8 @@ "formerly": "plate/negative_endtime", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -883,7 +912,8 @@ "formerly": "plate/zero_field_count", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { diff --git a/latest/tests/strict_image_suite.json b/latest/tests/strict_image_suite.json index faf667f2..ee4336e6 100644 --- a/latest/tests/strict_image_suite.json +++ b/latest/tests/strict_image_suite.json @@ -9,7 +9,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "name": "example", @@ -96,7 +97,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -145,7 +147,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "@id": "top", "@type": "ngff:Image", "multiscales": [ @@ -196,7 +199,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ @@ -239,7 +243,8 @@ "description": "TBD", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "multiscales": [ { "axes": [ diff --git a/latest/tests/strict_label_suite.json b/latest/tests/strict_label_suite.json index 96632835..32c732ed 100644 --- a/latest/tests/strict_label_suite.json +++ b/latest/tests/strict_label_suite.json @@ -8,7 +8,10 @@ "formerly": "image-label/no_colors", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { "image-label": {} } + "ome": { + "version": "0.5", + "image-label": {} + } } }, "valid": false diff --git a/latest/tests/strict_plate_suite.json b/latest/tests/strict_plate_suite.json index 4cbd40fa..91d1e166 100644 --- a/latest/tests/strict_plate_suite.json +++ b/latest/tests/strict_plate_suite.json @@ -8,7 +8,8 @@ "formerly": "plate/strict_no_acquisitions", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -38,7 +39,8 @@ "formerly": "plate/missing_name", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "columns": [ { @@ -67,7 +69,8 @@ "formerly": "plate/strict_acquisitions", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -104,7 +107,8 @@ "formerly": "plate/missing_acquisition_name", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { @@ -140,7 +144,8 @@ "formerly": "plate/missing_acquisition_maximumfieldcount", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "plate": { "acquisitions": [ { diff --git a/latest/tests/strict_well_suite.json b/latest/tests/strict_well_suite.json index b47c8df8..3b11d4ca 100644 --- a/latest/tests/strict_well_suite.json +++ b/latest/tests/strict_well_suite.json @@ -8,7 +8,8 @@ "formerly": "well/strict_no_acquisitions", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "well": { "images": [ { @@ -25,7 +26,8 @@ "formerly": "plate/strict_acquisitions", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "well": { "images": [ { diff --git a/latest/tests/well_suite.json b/latest/tests/well_suite.json index a18d5060..18ef453f 100644 --- a/latest/tests/well_suite.json +++ b/latest/tests/well_suite.json @@ -8,7 +8,8 @@ "formerly": "well/minimal_no_acquisition", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "well": { "images": [ { @@ -25,7 +26,8 @@ "formerly": "well/minimal_acquisitions", "data": { "attributes": { - "https://ngff.openmicroscopy.org/0.5": { + "ome": { + "version": "0.5", "well": { "images": [ { From f1bab0c826176aac856ae25bae31e4b850d79d30 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 4 Jul 2024 14:05:10 +0200 Subject: [PATCH 05/35] Update rfc/2/index.md --- rfc/2/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfc/2/index.md b/rfc/2/index.md index 0800e823..95571c2d 100644 --- a/rfc/2/index.md +++ b/rfc/2/index.md @@ -130,7 +130,7 @@ In the future, the OME-Zarr community MAY decide to restrict the allowed feature While the adoption of Zarr v3 does not strictly require changes to the OME-Zarr metadata, this proposal contains changes to align with community conventions and ease implementation: -- OME-Zarr metadata will be stored under a dedicated key in the Zarr array or group attributes. The key will be a well-known URI of the OME-NGFF specification with a version number, e.g. `https://ngff.openmicroscopy.org/0.5`. +- OME-Zarr metadata will be stored under a dedicated key in the Zarr array or group attributes. The key will be a well-known URI of the OME-NGFF specification with a version number, e.g. `https://ngff.openmicroscopy.org/0.6`. - Since the version is already encoded in the new metadata key, the `version` keys in `multiscale`, `plate`, `well` etc. are removed. - The `dimension_names` attribute in the Zarr metadata must match the axes names in the OME-Zarr metadata. From 4e4bf5a9b705c68afc6f992242c37a99232fbfbb Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 26 Sep 2024 15:43:43 +0200 Subject: [PATCH 06/35] adds schema_url + changes the root object for the JSON schemas to 'attributes' within a zarr.json --- latest/examples/bf2raw/image.json | 6 +- latest/examples/bf2raw/plate.json | 1 + .../label_strict/colors_properties.json | 1 + .../multiscales_example.json | 1 + .../multiscales_transformations.json | 1 + latest/examples/ome/series-2.json | 6 +- .../examples/plate_strict/plate_2wells.json | 1 + .../examples/plate_strict/plate_6wells.json | 1 + latest/examples/well_strict/well_2fields.json | 1 + latest/examples/well_strict/well_4fields.json | 1 + latest/index.bs | 6 +- latest/schemas/_schema_url.schema | 10 + .../{version.schema => _version.schema} | 2 +- latest/schemas/bf2raw.schema | 41 +- latest/schemas/image.schema | 47 +- latest/schemas/label.schema | 41 +- latest/schemas/ome.schema | 43 +- latest/schemas/ome_zarr.schema | 24 + latest/schemas/plate.schema | 257 ++- latest/schemas/strict_image.schema | 20 +- latest/schemas/strict_label.schema | 14 +- latest/schemas/strict_plate.schema | 30 +- latest/schemas/well.schema | 73 +- latest/tests/image_suite.json | 1682 ++++++++--------- latest/tests/label_suite.json | 183 +- latest/tests/plate_suite.json | 1360 +++++++------ latest/tests/strict_image_suite.json | 571 +++--- latest/tests/strict_label_suite.json | 9 +- latest/tests/strict_plate_suite.json | 261 ++- latest/tests/strict_well_suite.json | 40 +- latest/tests/test_validation.py | 15 + latest/tests/well_suite.json | 40 +- 32 files changed, 2366 insertions(+), 2423 deletions(-) create mode 100644 latest/schemas/_schema_url.schema rename latest/schemas/{version.schema => _version.schema} (73%) create mode 100644 latest/schemas/ome_zarr.schema diff --git a/latest/examples/bf2raw/image.json b/latest/examples/bf2raw/image.json index 1a9667ab..564dec83 100644 --- a/latest/examples/bf2raw/image.json +++ b/latest/examples/bf2raw/image.json @@ -2,6 +2,10 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "ome": { "version": "0.5", "bioformats2raw.layout": 3 } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "bioformats2raw.layout": 3 + } } } diff --git a/latest/examples/bf2raw/plate.json b/latest/examples/bf2raw/plate.json index ef1ac0a7..54a5e99b 100644 --- a/latest/examples/bf2raw/plate.json +++ b/latest/examples/bf2raw/plate.json @@ -4,6 +4,7 @@ "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "bioformats2raw.layout": 3, "plate": { "columns": [ diff --git a/latest/examples/label_strict/colors_properties.json b/latest/examples/label_strict/colors_properties.json index fa1f4cd6..9bff14a5 100644 --- a/latest/examples/label_strict/colors_properties.json +++ b/latest/examples/label_strict/colors_properties.json @@ -4,6 +4,7 @@ "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [ { diff --git a/latest/examples/multiscales_strict/multiscales_example.json b/latest/examples/multiscales_strict/multiscales_example.json index 4b2c718a..e10b93c8 100644 --- a/latest/examples/multiscales_strict/multiscales_example.json +++ b/latest/examples/multiscales_strict/multiscales_example.json @@ -4,6 +4,7 @@ "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "name": "example", diff --git a/latest/examples/multiscales_strict/multiscales_transformations.json b/latest/examples/multiscales_strict/multiscales_transformations.json index e4eb742a..7569ddb3 100644 --- a/latest/examples/multiscales_strict/multiscales_transformations.json +++ b/latest/examples/multiscales_strict/multiscales_transformations.json @@ -4,6 +4,7 @@ "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ diff --git a/latest/examples/ome/series-2.json b/latest/examples/ome/series-2.json index 235c1910..f7c7ce00 100644 --- a/latest/examples/ome/series-2.json +++ b/latest/examples/ome/series-2.json @@ -2,6 +2,10 @@ "zarr_format": 3, "node_type": "group", "attributes": { - "ome": { "version": "0.5", "series": ["0", "1"] } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "series": ["0", "1"] + } } } diff --git a/latest/examples/plate_strict/plate_2wells.json b/latest/examples/plate_strict/plate_2wells.json index e8961001..09214c10 100644 --- a/latest/examples/plate_strict/plate_2wells.json +++ b/latest/examples/plate_strict/plate_2wells.json @@ -4,6 +4,7 @@ "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { diff --git a/latest/examples/plate_strict/plate_6wells.json b/latest/examples/plate_strict/plate_6wells.json index bf1b8afe..45cb725c 100644 --- a/latest/examples/plate_strict/plate_6wells.json +++ b/latest/examples/plate_strict/plate_6wells.json @@ -4,6 +4,7 @@ "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { diff --git a/latest/examples/well_strict/well_2fields.json b/latest/examples/well_strict/well_2fields.json index 987fe5e4..0c3a22df 100644 --- a/latest/examples/well_strict/well_2fields.json +++ b/latest/examples/well_strict/well_2fields.json @@ -4,6 +4,7 @@ "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "well": { "images": [ { diff --git a/latest/examples/well_strict/well_4fields.json b/latest/examples/well_strict/well_4fields.json index 581ec66b..687deb9e 100644 --- a/latest/examples/well_strict/well_4fields.json +++ b/latest/examples/well_strict/well_4fields.json @@ -4,6 +4,7 @@ "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "well": { "images": [ { diff --git a/latest/index.bs b/latest/index.bs index 30bb7c38..bb288311 100644 --- a/latest/index.bs +++ b/latest/index.bs @@ -164,6 +164,7 @@ The OME-Zarr Metadata is stored in the various `zarr.json` files throughout the hierarchy. In this file, the metadata is stored under the namespaced key `ome` in `attributes`. The version of the OME-Zarr Metadata is denoted as a string in the `version` attribute within the `ome` namespace. +A URL to the JSON Schema of the OME-Zarr Metadata is denoted as a string in the `schema_url` attribute within the `ome` namespace. The OME-Zarr Metadata version MUST be consistent within a hierarchy. @@ -173,6 +174,7 @@ The OME-Zarr Metadata version MUST be consistent within a hierarchy. "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", ... } } @@ -324,7 +326,7 @@ Each "multiscales" dictionary MAY contain the field "coordinateTransformations", The transformations MUST follow the same rules about allowed types, order, etc. as in "datasets:coordinateTransformations" and are applied after them. They can for example be used to specify the `scale` for a dimension that is the same for all resolutions. -Each "multiscales" dictionary SHOULD contain the field "name". It MUST contain the field "version", which indicates the version of the multiscale metadata of this image (current version is [NGFFVERSION]). +Each "multiscales" dictionary SHOULD contain the field "name". Each "multiscales" dictionary SHOULD contain the field "type", which gives the type of downscaling method used to generate the multiscale image pyramid. It SHOULD contain the field "metadata", which contains a dictionary with additional information about the downscaling method. @@ -358,7 +360,6 @@ can be found under the "omero" key in the group-level metadata: ```json "id": 1, # ID in OMERO "name": "example.tif", # Name as shown in the UI -"version": "0.5-dev", # Current version "channels": [ # Array matching the c dimension size { "active": true, @@ -408,6 +409,7 @@ labeled multiscale image(s). All label images SHOULD be listed within this metad "attributes": { "ome": { "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/latest/schemas/ome_zarr.schema", "labels": [ "cell_space_segmentation" ] diff --git a/latest/schemas/_schema_url.schema b/latest/schemas/_schema_url.schema new file mode 100644 index 00000000..432f1b12 --- /dev/null +++ b/latest/schemas/_schema_url.schema @@ -0,0 +1,10 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema", + "title": "OME-Zarr Schema URL", + "description": "A URL to the JSON schema of the OME-Zarr Metadata", + "type": "string", + "enum": [ + "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema" + ] +} diff --git a/latest/schemas/version.schema b/latest/schemas/_version.schema similarity index 73% rename from latest/schemas/version.schema rename to latest/schemas/_version.schema index 4e04f077..af941b61 100644 --- a/latest/schemas/version.schema +++ b/latest/schemas/_version.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/version.schema", + "$id": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema", "title": "OME-Zarr Metadata version", "description": "The version of the OME-Zarr Metadata", "type": "string", diff --git a/latest/schemas/bf2raw.schema b/latest/schemas/bf2raw.schema index 62a183ad..896f83eb 100644 --- a/latest/schemas/bf2raw.schema +++ b/latest/schemas/bf2raw.schema @@ -2,40 +2,35 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://ngff.openmicroscopy.org/latest/schemas/bf2raw.schema", "title": "OME-Zarr container produced by bioformats2raw", - "description": "JSON from OME-Zarr zarr.json", + "description": "The zarr.json attributes key", "type": "object", "properties": { - "attributes": { - "description": "The zarr.json attributes key", + "ome": { + "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { - "ome": { - "description": "The versioned OME-Zarr Metadata namespace", - "type": "object", - "properties": { - "bioformats2raw.layout": { - "description": "The top-level identifier metadata added by bioformats2raw", - "type": "number", - "enum": [ - 3 - ] - }, - "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" - } - }, - "required": [ - "bioformats2raw.layout", - "version" + "bioformats2raw.layout": { + "description": "The top-level identifier metadata added by bioformats2raw", + "type": "number", + "enum": [ + 3 ] + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + }, + "schema_url": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ - "ome" + "bioformats2raw.layout", + "version", + "schema_url" ] } }, "required": [ - "attributes" + "ome" ] } diff --git a/latest/schemas/image.schema b/latest/schemas/image.schema index 1729ceb1..c5f05e1f 100644 --- a/latest/schemas/image.schema +++ b/latest/schemas/image.schema @@ -2,38 +2,36 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://ngff.openmicroscopy.org/latest/schemas/image.schema", "title": "OME-Zarr Image", - "description": "JSON from OME-Zarr zarr.json", + "description": "The zarr.json attributes key", "type": "object", "properties": { - "attributes": { - "description": "The zarr.json attributes key", + "ome": { + "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { - "ome": { - "description": "The versioned OME-Zarr Metadata namespace", - "type": "object", - "properties": { - "multiscales": { - "$ref": "#/$defs/multiscales" - }, - "omero": { - "$ref": "#/$defs/omero" - }, - "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" - } - }, - "required": [ - "multiscales", - "version" - ] + "multiscales": { + "$ref": "#/$defs/multiscales" + }, + "omero": { + "$ref": "#/$defs/omero" + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + }, + "schema_url": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ - "ome" + "multiscales", + "version", + "schema_url" ] } }, + "required": [ + "ome" + ], "$defs": { "multiscales": { "description": "The multiscale datasets for this image", @@ -270,8 +268,5 @@ ] } } - }, - "required": [ - "attributes" - ] + } } diff --git a/latest/schemas/label.schema b/latest/schemas/label.schema index 9ff0f932..e2fca2eb 100644 --- a/latest/schemas/label.schema +++ b/latest/schemas/label.schema @@ -2,35 +2,33 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://ngff.openmicroscopy.org/latest/schemas/label.schema", "title": "OME-Zarr labelled image schema", - "description": "JSON from OME-Zarr zarr.json", + "description": "The zarr.json attributes key", "type": "object", "properties": { - "attributes": { - "description": "The zarr.json attributes key", + "ome": { + "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { - "ome": { - "description": "The versioned OME-Zarr Metadata namespace", - "type": "object", - "properties": { - "image-label": { - "$ref": "#/$defs/image-label" - }, - "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" - } - }, - "required": [ - "image-label", - "version" - ] + "image-label": { + "$ref": "#/$defs/image-label" + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + }, + "schema_url": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ - "ome" + "image-label", + "version", + "schema_url" ] } }, + "required": [ + "ome" + ], "$defs": { "image-label": { "type": "object", @@ -93,8 +91,5 @@ } } } - }, - "required": [ - "attributes" - ] + } } diff --git a/latest/schemas/ome.schema b/latest/schemas/ome.schema index 88056e20..900a083d 100644 --- a/latest/schemas/ome.schema +++ b/latest/schemas/ome.schema @@ -2,41 +2,36 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://ngff.openmicroscopy.org/latest/schemas/ome.schema", "title": "OME-Zarr group produced by bioformats2raw to contain OME metadata", - "description": "JSON from OME-Zarr OME/zarr.json linked to an OME-XML file", + "description": "The zarr.json attributes key", "type": "object", "properties": { - "attributes": { - "description": "The zarr.json attributes key", + "ome": { + "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { - "ome": { - "description": "The versioned OME-Zarr Metadata namespace", - "type": "object", - "properties": { - "series": { - "description": "An array of the same length and the same order as the images defined in the OME-XML", - "type": "array", - "items": { - "type": "string" - }, - "minContains": 1 - }, - "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" - } + "series": { + "description": "An array of the same length and the same order as the images defined in the OME-XML", + "type": "array", + "items": { + "type": "string" }, - "required": [ - "series", - "version" - ] + "minContains": 1 + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + }, + "schema_url": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ - "ome" + "series", + "version", + "schema_url" ] } }, "required": [ - "attributes" + "ome" ] } diff --git a/latest/schemas/ome_zarr.schema b/latest/schemas/ome_zarr.schema new file mode 100644 index 00000000..9c1c642a --- /dev/null +++ b/latest/schemas/ome_zarr.schema @@ -0,0 +1,24 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ngff.openmicroscopy.org/latest/schemas/ome_zarr.schema", + "anyOf": [ + { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/bf2raw.schema" + }, + { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/image.schema" + }, + { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/label.schema" + }, + { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/ome.schema" + }, + { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/plate.schema" + }, + { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/well.schema" + } + ] +} diff --git a/latest/schemas/plate.schema b/latest/schemas/plate.schema index 60ae11a9..6b43c61f 100644 --- a/latest/schemas/plate.schema +++ b/latest/schemas/plate.schema @@ -2,161 +2,156 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://ngff.openmicroscopy.org/0.4/schemas/plate.schema", "title": "OME-Zarr plate schema", - "description": "JSON from OME-Zarr zarr.json", + "description": "The zarr.json attributes key", "type": "object", "properties": { - "attributes": { - "description": "The zarr.json attributes key", + "ome": { + "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { - "ome": { - "description": "The versioned OME-Zarr Metadata namespace", + "plate": { "type": "object", "properties": { - "plate": { - "type": "object", - "properties": { - "acquisitions": { - "description": "The acquisitions for this plate", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "description": "A unique identifier within the context of the plate", - "type": "integer", - "minimum": 0 - }, - "maximumfieldcount": { - "description": "The maximum number of fields of view for the acquisition", - "type": "integer", - "exclusiveMinimum": 0 - }, - "name": { - "description": "The name of the acquisition", - "type": "string" - }, - "description": { - "description": "The description of the acquisition", - "type": "string" - }, - "starttime": { - "description": "The start timestamp of the acquisition, expressed as epoch time i.e. the number seconds since the Epoch", - "type": "integer", - "minimum": 0 - }, - "endtime": { - "description": "The end timestamp of the acquisition, expressed as epoch time i.e. the number seconds since the Epoch", - "type": "integer", - "minimum": 0 - } - }, - "required": [ - "id" - ] + "acquisitions": { + "description": "The acquisitions for this plate", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "A unique identifier within the context of the plate", + "type": "integer", + "minimum": 0 + }, + "maximumfieldcount": { + "description": "The maximum number of fields of view for the acquisition", + "type": "integer", + "exclusiveMinimum": 0 + }, + "name": { + "description": "The name of the acquisition", + "type": "string" + }, + "description": { + "description": "The description of the acquisition", + "type": "string" + }, + "starttime": { + "description": "The start timestamp of the acquisition, expressed as epoch time i.e. the number seconds since the Epoch", + "type": "integer", + "minimum": 0 + }, + "endtime": { + "description": "The end timestamp of the acquisition, expressed as epoch time i.e. the number seconds since the Epoch", + "type": "integer", + "minimum": 0 } }, - "field_count": { - "description": "The maximum number of fields per view across all wells", - "type": "integer", - "exclusiveMinimum": 0 + "required": [ + "id" + ] + } + }, + "field_count": { + "description": "The maximum number of fields per view across all wells", + "type": "integer", + "exclusiveMinimum": 0 + }, + "name": { + "description": "The name of the plate", + "type": "string" + }, + "columns": { + "description": "The columns of the plate", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "The column name", + "type": "string", + "pattern": "^[A-Za-z0-9]+$" + } }, - "name": { - "description": "The name of the plate", - "type": "string" + "required": [ + "name" + ] + }, + "minItems": 1, + "uniqueItems": true + }, + "rows": { + "description": "The rows of the plate", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "The row name", + "type": "string", + "pattern": "^[A-Za-z0-9]+$" + } }, - "columns": { - "description": "The columns of the plate", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "The column name", - "type": "string", - "pattern": "^[A-Za-z0-9]+$" - } - }, - "required": [ - "name" - ] + "required": [ + "name" + ] + }, + "minItems": 1, + "uniqueItems": true + }, + "wells": { + "description": "The wells of the plate", + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "description": "The path to the well subgroup", + "type": "string", + "pattern": "^[A-Za-z0-9]+/[A-Za-z0-9]+$" }, - "minItems": 1, - "uniqueItems": true - }, - "rows": { - "description": "The rows of the plate", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "The row name", - "type": "string", - "pattern": "^[A-Za-z0-9]+$" - } - }, - "required": [ - "name" - ] + "rowIndex": { + "description": "The index of the well in the rows list", + "type": "integer", + "minimum": 0 }, - "minItems": 1, - "uniqueItems": true + "columnIndex": { + "description": "The index of the well in the columns list", + "type": "integer", + "minimum": 0 + } }, - "wells": { - "description": "The wells of the plate", - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { - "description": "The path to the well subgroup", - "type": "string", - "pattern": "^[A-Za-z0-9]+/[A-Za-z0-9]+$" - }, - "rowIndex": { - "description": "The index of the well in the rows list", - "type": "integer", - "minimum": 0 - }, - "columnIndex": { - "description": "The index of the well in the columns list", - "type": "integer", - "minimum": 0 - } - }, - "required": [ - "path", - "rowIndex", - "columnIndex" - ] - }, - "minItems": 1, - "uniqueItems": true - } + "required": [ + "path", + "rowIndex", + "columnIndex" + ] }, - "required": [ - "columns", - "rows", - "wells" - ] - }, - "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" + "minItems": 1, + "uniqueItems": true } }, "required": [ - "plate", - "version" + "columns", + "rows", + "wells" ] + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + }, + "schema_url": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ - "ome" + "plate", + "version", + "schema_url" ] } }, "required": [ - "attributes" + "ome" ] } diff --git a/latest/schemas/strict_image.schema b/latest/schemas/strict_image.schema index df755af0..c1084497 100644 --- a/latest/schemas/strict_image.schema +++ b/latest/schemas/strict_image.schema @@ -6,19 +6,15 @@ }, { "properties": { - "attributes": { + "ome": { "properties": { - "ome": { - "properties": { - "multiscales": { - "items": { - "required": [ - "metadata", - "type", - "name" - ] - } - } + "multiscales": { + "items": { + "required": [ + "metadata", + "type", + "name" + ] } } } diff --git a/latest/schemas/strict_label.schema b/latest/schemas/strict_label.schema index 8bcc7d27..6a55b36e 100644 --- a/latest/schemas/strict_label.schema +++ b/latest/schemas/strict_label.schema @@ -6,16 +6,12 @@ }, { "properties": { - "attributes": { + "ome": { "properties": { - "ome": { - "properties": { - "image-label": { - "required": [ - "colors" - ] - } - } + "image-label": { + "required": [ + "colors" + ] } } } diff --git a/latest/schemas/strict_plate.schema b/latest/schemas/strict_plate.schema index 61d2e837..c5228888 100644 --- a/latest/schemas/strict_plate.schema +++ b/latest/schemas/strict_plate.schema @@ -6,26 +6,22 @@ }, { "properties": { - "attributes": { + "ome": { "properties": { - "ome": { + "plate": { "properties": { - "plate": { - "properties": { - "acquisitions": { - "items": { - "required": [ - "name", - "maximumfieldcount" - ] - } - } - }, - "required": [ - "name" - ] + "acquisitions": { + "items": { + "required": [ + "name", + "maximumfieldcount" + ] + } } - } + }, + "required": [ + "name" + ] } } } diff --git a/latest/schemas/well.schema b/latest/schemas/well.schema index d2dddfca..768ee500 100644 --- a/latest/schemas/well.schema +++ b/latest/schemas/well.schema @@ -5,61 +5,56 @@ "description": "JSON from OME-Zarr zarr.json", "type": "object", "properties": { - "attributes": { - "description": "The zarr.json attributes key", + "ome": { + "description": "The versioned OME-Zarr Metadata namespace", "type": "object", "properties": { - "ome": { - "description": "The versioned OME-Zarr Metadata namespace", + "well": { "type": "object", "properties": { - "well": { - "type": "object", - "properties": { - "images": { - "description": "The fields of view for this well", - "type": "array", - "items": { - "type": "object", - "properties": { - "acquisition": { - "description": "A unique identifier within the context of the plate", - "type": "integer" - }, - "path": { - "description": "The path for this field of view subgroup", - "type": "string", - "pattern": "^[A-Za-z0-9]+$" - } - }, - "required": [ - "path" - ] + "images": { + "description": "The fields of view for this well", + "type": "array", + "items": { + "type": "object", + "properties": { + "acquisition": { + "description": "A unique identifier within the context of the plate", + "type": "integer" }, - "minItems": 1, - "uniqueItems": true - } + "path": { + "description": "The path for this field of view subgroup", + "type": "string", + "pattern": "^[A-Za-z0-9]+$" + } + }, + "required": [ + "path" + ] }, - "required": [ - "images" - ] - }, - "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/version.schema" + "minItems": 1, + "uniqueItems": true } }, "required": [ - "well", - "version" + "images" ] + }, + "version": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + }, + "schema_url": { + "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ - "ome" + "well", + "version", + "schema_url" ] } }, "required": [ - "attributes" + "ome" ] } diff --git a/latest/tests/image_suite.json b/latest/tests/image_suite.json index 63925b1a..c9e4d659 100644 --- a/latest/tests/image_suite.json +++ b/latest/tests/image_suite.json @@ -8,42 +8,41 @@ "formerly": "valid/mismatch_axes_units.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "t", - "type": "time", - "unit": "micrometer" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [0.13, 0.13], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "t", + "type": "time", + "unit": "micrometer" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [0.13, 0.13], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": true @@ -52,40 +51,39 @@ "formerly": "valid/untyped_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "angle" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "angle" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": true @@ -94,37 +92,36 @@ "formerly": "valid/invalid_axis_units.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micron" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [0.13, 0.13], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micron" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [0.13, 0.13], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": true @@ -133,46 +130,45 @@ "formerly": "valid/missing_name.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "datasets": [ - { - "path": "path/to/0", - "coordinateTransformations": [ - { - "type": "scale", - "scale": [1, 1] - } - ] - } - ], - "type": "gaussian", - "metadata": { - "method": "skimage.transform.pyramid_gaussian", - "version": "0.16.1", - "args": ["true", "false"], - "kwargs": { - "multichannel": true - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "datasets": [ + { + "path": "path/to/0", + "coordinateTransformations": [ + { + "type": "scale", + "scale": [1, 1] + } + ] + } + ], + "type": "gaussian", + "metadata": { + "method": "skimage.transform.pyramid_gaussian", + "version": "0.16.1", + "args": ["true", "false"], + "kwargs": { + "multichannel": true + } + }, + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" }, - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ] - } - ] - } + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] + } + ] } }, "valid": true @@ -181,41 +177,40 @@ "formerly": "valid/custom_type_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "angle", - "type": "custom" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "angle", + "type": "custom" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": true @@ -224,37 +219,36 @@ "formerly": "invalid/duplicate_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "x", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "x", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -263,35 +257,34 @@ "formerly": "invalid/missing_space_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "t", - "type": "time" - }, - { - "name": "c", - "type": "channel" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -300,37 +293,36 @@ "formerly": "invalid/invalid_transformation_type.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "translation" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "translation" + } + ] + } + ] + } + ] } }, "valid": false @@ -339,37 +331,36 @@ "formerly": "invalid/missing_scale.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "translation": [1, 1], - "type": "translation" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "translation": [1, 1], + "type": "translation" + } + ] + } + ] + } + ] } }, "valid": false @@ -378,51 +369,50 @@ "formerly": "invalid/too_many_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "angle", - "type": "custom" - }, - { - "name": "t", - "type": "time" - }, - { - "name": "c", - "type": "channel" - }, - { - "name": "z", - "type": "space" - }, - { - "name": "y", - "type": "space" - }, - { - "name": "x", - "type": "space" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1, 1, 1, 1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "angle", + "type": "custom" + }, + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "z", + "type": "space" + }, + { + "name": "y", + "type": "space" + }, + { + "name": "x", + "type": "space" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1, 1, 1, 1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -431,53 +421,52 @@ "formerly": "invalid/invalid_channels_color.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ], - "omero": { - "channels": [ - { - "active": true, - "coefficient": 1.0, - "color": 255, - "family": "linear", - "label": "1234", - "window": { - "end": 1765.0, - "max": 2555.0, - "min": 5.0, - "start": 0.0 - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] } ] } + ], + "omero": { + "channels": [ + { + "active": true, + "coefficient": 1.0, + "color": 255, + "family": "linear", + "label": "1234", + "window": { + "end": 1765.0, + "max": 2555.0, + "min": 5.0, + "start": 0.0 + } + } + ] } } }, @@ -487,35 +476,34 @@ "formerly": "invalid/missing_axes_name.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "type": "space", - "unit": "micron" - }, - { - "type": "space", - "unit": "micron" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [0.13, 0.13], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "type": "space", + "unit": "micron" + }, + { + "type": "space", + "unit": "micron" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [0.13, 0.13], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -524,32 +512,31 @@ "formerly": "invalid/invalid_axes_count.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -558,39 +545,38 @@ "formerly": "invalid/one_space_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "t", - "type": "time" - }, - { - "name": "c", - "type": "channel" - }, - { - "name": "x", - "type": "space" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "x", + "type": "space" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -599,37 +585,36 @@ "formerly": "invalid/invalid_path.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": 0, - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": 0, + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -638,43 +623,42 @@ "formerly": "invalid/invalid_multiscales_transformations.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ], - "coordinateTransformations": [ - { - "scale": ["invalid"], - "type": "scale" - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ], + "coordinateTransformations": [ + { + "scale": ["invalid"], + "type": "scale" + } + ] + } + ] } }, "valid": false @@ -683,31 +667,30 @@ "formerly": "invalid/missing_transformations.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0" - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0" + } + ] + } + ] } }, "valid": false @@ -716,27 +699,26 @@ "formerly": "invalid/no_datasets.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [] + } + ] } }, "valid": false @@ -745,26 +727,25 @@ "formerly": "invalid/missing_datasets.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] + } + ] } }, "valid": false @@ -773,25 +754,24 @@ "formerly": "invalid/missing_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -800,37 +780,36 @@ "formerly": "invalid/invalid_axis_type.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "invalid", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "invalid", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -839,41 +818,40 @@ "formerly": "invalid/duplicate_scale.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - }, - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + }, + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -882,26 +860,25 @@ "formerly": "invalid/no_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -910,43 +887,42 @@ "formerly": "invalid/too_many_space_axes.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "X", - "type": "space" - }, - { - "name": "z", - "type": "space" - }, - { - "name": "y", - "type": "space" - }, - { - "name": "x", - "type": "space" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1, 1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "X", + "type": "space" + }, + { + "name": "z", + "type": "space" + }, + { + "name": "y", + "type": "space" + }, + { + "name": "x", + "type": "space" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1, 1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false @@ -955,11 +931,10 @@ "formerly": "invalid/no_multiscales.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [] } }, "valid": false @@ -968,53 +943,52 @@ "formerly": "invalid/invalid_channels_window.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ], - "omero": { - "channels": [ - { - "active": true, - "coefficient": 1.0, - "color": "ff0000", - "family": "linear", - "label": "1234", - "window": { - "end": "100", - "max": 2555.0, - "min": 5.0, - "start": 0.0 - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] } ] } + ], + "omero": { + "channels": [ + { + "active": true, + "coefficient": 1.0, + "color": "ff0000", + "family": "linear", + "label": "1234", + "window": { + "end": "100", + "max": 2555.0, + "min": 5.0, + "start": 0.0 + } + } + ] } } }, @@ -1024,32 +998,31 @@ "formerly": "invalid/empty_transformations.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [] + } + ] + } + ] } }, "valid": false @@ -1058,36 +1031,35 @@ "formerly": "invalid/missing_path.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] + } + ] + } + ] } }, "valid": false diff --git a/latest/tests/label_suite.json b/latest/tests/label_suite.json index f9d9d051..deeeee55 100644 --- a/latest/tests/label_suite.json +++ b/latest/tests/label_suite.json @@ -7,17 +7,16 @@ { "formerly": "image-label/minimal", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "colors": [ - { - "label-value": 1, - "rgba": [0, 0, 0, 0] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "colors": [ + { + "label-value": 1, + "rgba": [0, 0, 0, 0] + } + ] } } }, @@ -26,22 +25,21 @@ { "formerly": "image-label/minimal_properties", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "colors": [ - { - "label-value": 1, - "rgba": [0, 0, 0, 0] - } - ], - "properties": [ - { - "label-value": 1 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "colors": [ + { + "label-value": 1, + "rgba": [0, 0, 0, 0] + } + ], + "properties": [ + { + "label-value": 1 + } + ] } } }, @@ -50,12 +48,11 @@ { "formerly": "image-label/empty_colors", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "colors": [] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "colors": [] } } }, @@ -64,12 +61,11 @@ { "formerly": "image-label/empty_properties", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "properties": [] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "properties": [] } } }, @@ -78,16 +74,15 @@ { "formerly": "image-label/colors_no_label_value", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "colors": [ - { - "rgba": [0, 0, 0, 0] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "colors": [ + { + "rgba": [0, 0, 0, 0] + } + ] } } }, @@ -96,16 +91,15 @@ { "formerly": "image-label/properties_no_label_value", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "properties": [ - { - "value": "foo" - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "properties": [ + { + "value": "foo" + } + ] } } }, @@ -114,17 +108,16 @@ { "formerly": "image-label/colors_rgba_length", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "colors": [ - { - "label-value": 1, - "rgba": [0, 0, 0] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "colors": [ + { + "label-value": 1, + "rgba": [0, 0, 0] + } + ] } } }, @@ -133,17 +126,16 @@ { "formerly": "image-label/colors_rgba_type", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "colors": [ - { - "label-value": 1, - "rgba": [0, 0, 0, 500] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "colors": [ + { + "label-value": 1, + "rgba": [0, 0, 0, 500] + } + ] } } }, @@ -152,21 +144,20 @@ { "formerly": "image-label/colors_duplicate", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": { - "colors": [ - { - "label-value": 1, - "rgba": [0, 0, 0, 0] - }, - { - "label-value": 1, - "rgba": [0, 0, 0, 0] - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": { + "colors": [ + { + "label-value": 1, + "rgba": [0, 0, 0, 0] + }, + { + "label-value": 1, + "rgba": [0, 0, 0, 0] + } + ] } } }, diff --git a/latest/tests/plate_suite.json b/latest/tests/plate_suite.json index d5aa2abd..3bef1f15 100644 --- a/latest/tests/plate_suite.json +++ b/latest/tests/plate_suite.json @@ -7,28 +7,27 @@ { "formerly": "plate/minimal_no_acquisitions", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -37,33 +36,32 @@ { "formerly": "plate/minimal_acquisitions", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0 - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0 + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -72,23 +70,22 @@ { "formerly": "plate/missing_rows", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -97,24 +94,23 @@ { "formerly": "plate/empty_rows", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -123,31 +119,30 @@ { "formerly": "plate/duplicate_rows", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - }, - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + }, + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -156,23 +151,22 @@ { "formerly": "plate/missing_columns", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -181,24 +175,23 @@ { "formerly": "plate/empty_columns", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -207,31 +200,30 @@ { "formerly": "plate/duplicate_columns", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - }, - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + }, + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -240,21 +232,20 @@ { "formerly": "plate/missing_wells", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ] } } }, @@ -263,22 +254,21 @@ { "formerly": "plate/empty_wells", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": {} - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": {} } } }, @@ -287,36 +277,35 @@ { "formerly": "plate/duplicate_rows", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - }, - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - }, - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + }, + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + }, + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -325,28 +314,27 @@ { "formerly": "plate/missing_column_name", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "concentration": 10 - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "concentration": 10 + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -355,28 +343,27 @@ { "formerly": "plate/missing_row_name", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "concentration": 10 - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "concentration": 10 + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -385,27 +372,26 @@ { "formerly": "plate/missing_well_path", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -414,27 +400,26 @@ { "formerly": "plate/missing_well_rowIndex", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "columnIndex": 0 + } + ] } } }, @@ -443,27 +428,26 @@ { "formerly": "plate/missing_well_columnIndex", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0 + } + ] } } }, @@ -472,27 +456,26 @@ { "formerly": "plate/well_1group", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A1", - "rowIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A1", + "rowIndex": 0 + } + ] } } }, @@ -501,27 +484,26 @@ { "formerly": "plate/well_3groups", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "plate/A/1", - "rowIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "plate/A/1", + "rowIndex": 0 + } + ] } } }, @@ -530,28 +512,27 @@ { "formerly": "plate/non_alphanumeric_column", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A-1" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A-1/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A-1" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A-1/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -560,28 +541,27 @@ { "formerly": "plate/non_alphanumeric_row", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "A1" - } - ], - "wells": [ - { - "path": "A/A1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "A1" + } + ], + "wells": [ + { + "path": "A/A1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -590,33 +570,32 @@ { "formerly": "plate/missing_acquisition_id", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "maximumfieldcount": 1 - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "maximumfieldcount": 1 + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -625,33 +604,32 @@ { "formerly": "plate/non_integer_acquisition_id", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": "0" - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": "0" + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -660,33 +638,32 @@ { "formerly": "plate/negative_acquisition_id", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": -1 - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": -1 + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -695,34 +672,33 @@ { "formerly": "plate/non_integer_acquisition_maximumfieldcount", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "maximumfieldcount": "0" - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "maximumfieldcount": "0" + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -731,34 +707,33 @@ { "formerly": "plate/acquisition_zero_maximumfieldcount", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "maximumfieldcount": 0 - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "maximumfieldcount": 0 + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -767,34 +742,33 @@ { "formerly": "plate/acquisition_noninteger_starttime", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "starttime": "2022-05-13T13:48:06+00:00" - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "starttime": "2022-05-13T13:48:06+00:00" + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -803,34 +777,33 @@ { "formerly": "plate/acquisition_negative_starttime", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "starttime": -1 - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "starttime": -1 + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -839,34 +812,33 @@ { "formerly": "plate/acquisition_noninteger_endtime", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "endtime": "2022-05-13T13:48:06+00:00" - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "endtime": "2022-05-13T13:48:06+00:00" + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -875,34 +847,33 @@ { "formerly": "plate/negative_endtime", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "endtime": -1 - } - ], - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "endtime": -1 + } + ], + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -911,29 +882,28 @@ { "formerly": "plate/zero_field_count", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "field_count": 0, - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "field_count": 0, + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, diff --git a/latest/tests/strict_image_suite.json b/latest/tests/strict_image_suite.json index ee4336e6..99a6db0e 100644 --- a/latest/tests/strict_image_suite.json +++ b/latest/tests/strict_image_suite.json @@ -8,86 +8,85 @@ "formerly": "valid_strict/multiscales_example.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "name": "example", - "axes": [ - { - "name": "t", - "type": "time", - "unit": "millisecond" - }, - { - "name": "c", - "type": "channel" - }, - { - "name": "z", - "type": "space", - "unit": "micrometer" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "type": "scale", - "scale": [1.0, 1.0, 0.5, 0.5, 0.5] - } - ] - }, - { - "path": "1", - "coordinateTransformations": [ - { - "type": "scale", - "scale": [1.0, 1.0, 1.0, 1.0, 1.0] - } - ] - }, - { - "path": "2", - "coordinateTransformations": [ - { - "type": "scale", - "scale": [1.0, 1.0, 2.0, 2.0, 2.0] - } - ] - } - ], - "coordinateTransformations": [ - { - "type": "scale", - "scale": [0.1, 1.0, 1.0, 1.0, 1.0] - } - ], - "type": "gaussian", - "metadata": { - "description": "the fields in metadata depend on the downscaling implementation. Here, the parameters passed to the skimage function are given", - "method": "skimage.transform.pyramid_gaussian", - "version": "0.16.1", - "args": "[true]", - "kwargs": { - "multichannel": true - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "name": "example", + "axes": [ + { + "name": "t", + "type": "time", + "unit": "millisecond" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "z", + "type": "space", + "unit": "micrometer" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "type": "scale", + "scale": [1.0, 1.0, 0.5, 0.5, 0.5] + } + ] + }, + { + "path": "1", + "coordinateTransformations": [ + { + "type": "scale", + "scale": [1.0, 1.0, 1.0, 1.0, 1.0] + } + ] + }, + { + "path": "2", + "coordinateTransformations": [ + { + "type": "scale", + "scale": [1.0, 1.0, 2.0, 2.0, 2.0] + } + ] + } + ], + "coordinateTransformations": [ + { + "type": "scale", + "scale": [0.1, 1.0, 1.0, 1.0, 1.0] + } + ], + "type": "gaussian", + "metadata": { + "description": "the fields in metadata depend on the downscaling implementation. Here, the parameters passed to the skimage function are given", + "method": "skimage.transform.pyramid_gaussian", + "version": "0.16.1", + "args": "[true]", + "kwargs": { + "multichannel": true } } - ] - } + } + ] } }, "valid": true @@ -96,48 +95,47 @@ "formerly": "valid_strict/multiscales_transformations.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ], - "coordinateTransformations": [ - { - "scale": [10, 10], - "type": "scale" - } - ], - "name": "image_with_coordinateTransformations", - "type": "foo", - "metadata": { - "key": "value" + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] } + ], + "coordinateTransformations": [ + { + "scale": [10, 10], + "type": "scale" + } + ], + "name": "image_with_coordinateTransformations", + "type": "foo", + "metadata": { + "key": "value" } - ] - } + } + ] } }, "valid": true @@ -146,50 +144,49 @@ "formerly": "valid_strict/image_metadata.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "@id": "top", - "@type": "ngff:Image", - "multiscales": [ - { - "@id": "inner", - "name": "example", - "datasets": [ - { - "path": "path/to/0", - "coordinateTransformations": [ - { - "type": "scale", - "scale": [1, 1] - } - ] - } - ], - "type": "gaussian", - "metadata": { - "method": "skimage.transform.pyramid_gaussian", - "version": "0.16.1", - "args": ["true", "false"], - "kwargs": { - "multichannel": true - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "@id": "top", + "@type": "ngff:Image", + "multiscales": [ + { + "@id": "inner", + "name": "example", + "datasets": [ + { + "path": "path/to/0", + "coordinateTransformations": [ + { + "type": "scale", + "scale": [1, 1] + } + ] + } + ], + "type": "gaussian", + "metadata": { + "method": "skimage.transform.pyramid_gaussian", + "version": "0.16.1", + "args": ["true", "false"], + "kwargs": { + "multichannel": true + } + }, + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" }, - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ] - } - ] - } + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ] + } + ] } }, "valid": true @@ -198,42 +195,41 @@ "formerly": "valid_strict/image.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1], - "type": "scale" - } - ] - } - ], - "name": "simple_image", - "type": "foo", - "metadata": { - "key": "value" + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" + } + ], + "datasets": [ + { + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1], + "type": "scale" + } + ] } + ], + "name": "simple_image", + "type": "foo", + "metadata": { + "key": "value" } - ] - } + } + ] } }, "valid": true @@ -242,106 +238,105 @@ "formerly": "valid_strict/image_omero.json", "description": "TBD", "data": { - "attributes": { - "ome": { - "version": "0.5", - "multiscales": [ - { - "axes": [ - { - "name": "t", - "type": "time" - }, - { - "name": "c", - "type": "channel" - }, - { - "name": "z", - "type": "space", - "unit": "micrometer" - }, - { - "name": "y", - "type": "space", - "unit": "micrometer" - }, - { - "name": "x", - "type": "space", - "unit": "micrometer" - } - ], - "datasets": [ - { - "path": "0", - "coordinateTransformations": [ - { - "scale": [1, 1, 0.5, 0.13, 0.13], - "type": "scale" - }, - { - "translation": [0, 9, 0.5, 25.74, 21.58], - "type": "translation" - } - ] - }, - { - "path": "1", - "coordinateTransformations": [ - { - "scale": [1, 1, 1, 0.26, 0.26], - "type": "scale" - } - ] - } - ], - "name": "image_with_omero_metadata", - "type": "foo", - "metadata": { - "key": "value" + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "multiscales": [ + { + "axes": [ + { + "name": "t", + "type": "time" + }, + { + "name": "c", + "type": "channel" + }, + { + "name": "z", + "type": "space", + "unit": "micrometer" + }, + { + "name": "y", + "type": "space", + "unit": "micrometer" + }, + { + "name": "x", + "type": "space", + "unit": "micrometer" } - } - ], - "omero": { - "channels": [ + ], + "datasets": [ { - "active": true, - "coefficient": 1.0, - "color": "00FF00", - "family": "linear", - "inverted": false, - "label": "FITC", - "window": { - "end": 813.0, - "max": 870.0, - "min": 102.0, - "start": 82.0 - } + "path": "0", + "coordinateTransformations": [ + { + "scale": [1, 1, 0.5, 0.13, 0.13], + "type": "scale" + }, + { + "translation": [0, 9, 0.5, 25.74, 21.58], + "type": "translation" + } + ] }, { - "active": true, - "coefficient": 1.0, - "color": "FF0000", - "family": "linear", - "inverted": false, - "label": "RD-TR-PE", - "window": { - "end": 815.0, - "max": 441.0, - "min": 129.0, - "start": 78.0 - } + "path": "1", + "coordinateTransformations": [ + { + "scale": [1, 1, 1, 0.26, 0.26], + "type": "scale" + } + ] } ], - "id": 1, - "rdefs": { - "defaultT": 0, - "defaultZ": 2, - "model": "color" - }, - "version": "0.5-dev" + "name": "image_with_omero_metadata", + "type": "foo", + "metadata": { + "key": "value" + } } + ], + "omero": { + "channels": [ + { + "active": true, + "coefficient": 1.0, + "color": "00FF00", + "family": "linear", + "inverted": false, + "label": "FITC", + "window": { + "end": 813.0, + "max": 870.0, + "min": 102.0, + "start": 82.0 + } + }, + { + "active": true, + "coefficient": 1.0, + "color": "FF0000", + "family": "linear", + "inverted": false, + "label": "RD-TR-PE", + "window": { + "end": 815.0, + "max": 441.0, + "min": 129.0, + "start": 78.0 + } + } + ], + "id": 1, + "rdefs": { + "defaultT": 0, + "defaultZ": 2, + "model": "color" + }, + "version": "0.5-dev" } } }, diff --git a/latest/tests/strict_label_suite.json b/latest/tests/strict_label_suite.json index 32c732ed..f0156100 100644 --- a/latest/tests/strict_label_suite.json +++ b/latest/tests/strict_label_suite.json @@ -7,11 +7,10 @@ { "formerly": "image-label/no_colors", "data": { - "attributes": { - "ome": { - "version": "0.5", - "image-label": {} - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "image-label": {} } }, "valid": false diff --git a/latest/tests/strict_plate_suite.json b/latest/tests/strict_plate_suite.json index 91d1e166..ad372e41 100644 --- a/latest/tests/strict_plate_suite.json +++ b/latest/tests/strict_plate_suite.json @@ -7,29 +7,28 @@ { "formerly": "plate/strict_no_acquisitions", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "name": "test plate", - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "name": "test plate", + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -38,28 +37,27 @@ { "formerly": "plate/missing_name", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "columns": [ - { - "name": "A" - } - ], - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "columns": [ + { + "name": "A" + } + ], + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -68,36 +66,35 @@ { "formerly": "plate/strict_acquisitions", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "name": "0", - "maximumfieldcount": 1 - } - ], - "columns": [ - { - "name": "A" - } - ], - "name": "test plate", - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "name": "0", + "maximumfieldcount": 1 + } + ], + "columns": [ + { + "name": "A" + } + ], + "name": "test plate", + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -106,35 +103,34 @@ { "formerly": "plate/missing_acquisition_name", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "maximumfieldcount": 1 - } - ], - "columns": [ - { - "name": "A" - } - ], - "name": "test plate", - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "maximumfieldcount": 1 + } + ], + "columns": [ + { + "name": "A" + } + ], + "name": "test plate", + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, @@ -143,35 +139,34 @@ { "formerly": "plate/missing_acquisition_maximumfieldcount", "data": { - "attributes": { - "ome": { - "version": "0.5", - "plate": { - "acquisitions": [ - { - "id": 0, - "name": "0" - } - ], - "columns": [ - { - "name": "A" - } - ], - "name": "test plate", - "rows": [ - { - "name": "1" - } - ], - "wells": [ - { - "path": "A/1", - "rowIndex": 0, - "columnIndex": 0 - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "plate": { + "acquisitions": [ + { + "id": 0, + "name": "0" + } + ], + "columns": [ + { + "name": "A" + } + ], + "name": "test plate", + "rows": [ + { + "name": "1" + } + ], + "wells": [ + { + "path": "A/1", + "rowIndex": 0, + "columnIndex": 0 + } + ] } } }, diff --git a/latest/tests/strict_well_suite.json b/latest/tests/strict_well_suite.json index 3b11d4ca..0eacf7ec 100644 --- a/latest/tests/strict_well_suite.json +++ b/latest/tests/strict_well_suite.json @@ -7,16 +7,15 @@ { "formerly": "well/strict_no_acquisitions", "data": { - "attributes": { - "ome": { - "version": "0.5", - "well": { - "images": [ - { - "path": "0" - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "well": { + "images": [ + { + "path": "0" + } + ] } } }, @@ -25,17 +24,16 @@ { "formerly": "plate/strict_acquisitions", "data": { - "attributes": { - "ome": { - "version": "0.5", - "well": { - "images": [ - { - "acquisition": 0, - "path": "0" - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "well": { + "images": [ + { + "acquisition": 0, + "path": "0" + } + ] } } }, diff --git a/latest/tests/test_validation.py b/latest/tests/test_validation.py index 53d4adcc..615fc26f 100644 --- a/latest/tests/test_validation.py +++ b/latest/tests/test_validation.py @@ -16,6 +16,10 @@ schema = json.load(f) schema_store[schema["$id"]] = schema +GENERIC_SCHEMA = schema_store[ + "https://ngff.openmicroscopy.org/latest/schemas/ome_zarr.schema" +] + print(schema_store) @@ -32,6 +36,10 @@ def validate(self, validator) -> None: else: validator.validate(self.data) + def maybe_validate(self, validator) -> None: + if self.valid: + validator.validate(self.data) + def pytest_generate_tests(metafunc): """ @@ -79,6 +87,7 @@ def pytest_generate_tests(metafunc): line for line in f if not line.lstrip().startswith("//") ) data = json.loads(data) + data = data["attributes"] # Only validate the attributes object ids.append("example_" + str(filename).split("/")[-1][0:-5]) suites.append(Suite(schema, data, True)) # Assume true @@ -96,6 +105,12 @@ def test_run(suite): suite.validate(validator) +def test_generic_run(suite): + resolver = RefResolver.from_schema(GENERIC_SCHEMA, store=schema_store) + validator = Validator(GENERIC_SCHEMA, resolver=resolver) + suite.maybe_validate(validator) + + def test_example_configs(): """ Test that all example folders have a config file diff --git a/latest/tests/well_suite.json b/latest/tests/well_suite.json index 18ef453f..c5996578 100644 --- a/latest/tests/well_suite.json +++ b/latest/tests/well_suite.json @@ -7,16 +7,15 @@ { "formerly": "well/minimal_no_acquisition", "data": { - "attributes": { - "ome": { - "version": "0.5", - "well": { - "images": [ - { - "path": "0" - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "well": { + "images": [ + { + "path": "0" + } + ] } } }, @@ -25,17 +24,16 @@ { "formerly": "well/minimal_acquisitions", "data": { - "attributes": { - "ome": { - "version": "0.5", - "well": { - "images": [ - { - "acquisition": 1, - "path": "0" - } - ] - } + "ome": { + "version": "0.5", + "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", + "well": { + "images": [ + { + "acquisition": 1, + "path": "0" + } + ] } } }, From 4df0940e4738c3f337a037ecdfb543328e5222e8 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Fri, 27 Sep 2024 12:03:11 +0200 Subject: [PATCH 07/35] rm schema_url --- latest/examples/bf2raw/image.json | 1 - latest/examples/bf2raw/plate.json | 1 - .../label_strict/colors_properties.json | 1 - .../multiscales_example.json | 1 - .../multiscales_transformations.json | 1 - latest/examples/ome/series-2.json | 1 - .../examples/plate_strict/plate_2wells.json | 1 - .../examples/plate_strict/plate_6wells.json | 1 - latest/examples/well_strict/well_2fields.json | 1 - latest/examples/well_strict/well_4fields.json | 1 - latest/index.bs | 2 -- latest/schemas/bf2raw.schema | 6 +--- latest/schemas/image.schema | 6 +--- latest/schemas/label.schema | 6 +--- latest/schemas/ome.schema | 6 +--- latest/schemas/plate.schema | 6 +--- latest/schemas/well.schema | 6 +--- latest/tests/image_suite.json | 28 ----------------- latest/tests/label_suite.json | 9 ------ latest/tests/plate_suite.json | 30 ------------------- latest/tests/strict_image_suite.json | 5 ---- latest/tests/strict_label_suite.json | 1 - latest/tests/strict_plate_suite.json | 5 ---- latest/tests/strict_well_suite.json | 2 -- latest/tests/well_suite.json | 2 -- 25 files changed, 6 insertions(+), 124 deletions(-) diff --git a/latest/examples/bf2raw/image.json b/latest/examples/bf2raw/image.json index 564dec83..8fda1fd2 100644 --- a/latest/examples/bf2raw/image.json +++ b/latest/examples/bf2raw/image.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "bioformats2raw.layout": 3 } } diff --git a/latest/examples/bf2raw/plate.json b/latest/examples/bf2raw/plate.json index 54a5e99b..ef1ac0a7 100644 --- a/latest/examples/bf2raw/plate.json +++ b/latest/examples/bf2raw/plate.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "bioformats2raw.layout": 3, "plate": { "columns": [ diff --git a/latest/examples/label_strict/colors_properties.json b/latest/examples/label_strict/colors_properties.json index 9bff14a5..fa1f4cd6 100644 --- a/latest/examples/label_strict/colors_properties.json +++ b/latest/examples/label_strict/colors_properties.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [ { diff --git a/latest/examples/multiscales_strict/multiscales_example.json b/latest/examples/multiscales_strict/multiscales_example.json index e10b93c8..4b2c718a 100644 --- a/latest/examples/multiscales_strict/multiscales_example.json +++ b/latest/examples/multiscales_strict/multiscales_example.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "name": "example", diff --git a/latest/examples/multiscales_strict/multiscales_transformations.json b/latest/examples/multiscales_strict/multiscales_transformations.json index 7569ddb3..e4eb742a 100644 --- a/latest/examples/multiscales_strict/multiscales_transformations.json +++ b/latest/examples/multiscales_strict/multiscales_transformations.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ diff --git a/latest/examples/ome/series-2.json b/latest/examples/ome/series-2.json index f7c7ce00..ad4c25e8 100644 --- a/latest/examples/ome/series-2.json +++ b/latest/examples/ome/series-2.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "series": ["0", "1"] } } diff --git a/latest/examples/plate_strict/plate_2wells.json b/latest/examples/plate_strict/plate_2wells.json index 09214c10..e8961001 100644 --- a/latest/examples/plate_strict/plate_2wells.json +++ b/latest/examples/plate_strict/plate_2wells.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { diff --git a/latest/examples/plate_strict/plate_6wells.json b/latest/examples/plate_strict/plate_6wells.json index 45cb725c..bf1b8afe 100644 --- a/latest/examples/plate_strict/plate_6wells.json +++ b/latest/examples/plate_strict/plate_6wells.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { diff --git a/latest/examples/well_strict/well_2fields.json b/latest/examples/well_strict/well_2fields.json index 0c3a22df..987fe5e4 100644 --- a/latest/examples/well_strict/well_2fields.json +++ b/latest/examples/well_strict/well_2fields.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "well": { "images": [ { diff --git a/latest/examples/well_strict/well_4fields.json b/latest/examples/well_strict/well_4fields.json index 687deb9e..581ec66b 100644 --- a/latest/examples/well_strict/well_4fields.json +++ b/latest/examples/well_strict/well_4fields.json @@ -4,7 +4,6 @@ "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "well": { "images": [ { diff --git a/latest/index.bs b/latest/index.bs index bb288311..88006d27 100644 --- a/latest/index.bs +++ b/latest/index.bs @@ -164,7 +164,6 @@ The OME-Zarr Metadata is stored in the various `zarr.json` files throughout the hierarchy. In this file, the metadata is stored under the namespaced key `ome` in `attributes`. The version of the OME-Zarr Metadata is denoted as a string in the `version` attribute within the `ome` namespace. -A URL to the JSON Schema of the OME-Zarr Metadata is denoted as a string in the `schema_url` attribute within the `ome` namespace. The OME-Zarr Metadata version MUST be consistent within a hierarchy. @@ -174,7 +173,6 @@ The OME-Zarr Metadata version MUST be consistent within a hierarchy. "attributes": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", ... } } diff --git a/latest/schemas/bf2raw.schema b/latest/schemas/bf2raw.schema index 896f83eb..db9e05e2 100644 --- a/latest/schemas/bf2raw.schema +++ b/latest/schemas/bf2raw.schema @@ -18,15 +18,11 @@ }, "version": { "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" - }, - "schema_url": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ "bioformats2raw.layout", - "version", - "schema_url" + "version" ] } }, diff --git a/latest/schemas/image.schema b/latest/schemas/image.schema index c5f05e1f..4f141c59 100644 --- a/latest/schemas/image.schema +++ b/latest/schemas/image.schema @@ -17,15 +17,11 @@ }, "version": { "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" - }, - "schema_url": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ "multiscales", - "version", - "schema_url" + "version" ] } }, diff --git a/latest/schemas/label.schema b/latest/schemas/label.schema index e2fca2eb..6c618210 100644 --- a/latest/schemas/label.schema +++ b/latest/schemas/label.schema @@ -14,15 +14,11 @@ }, "version": { "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" - }, - "schema_url": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ "image-label", - "version", - "schema_url" + "version" ] } }, diff --git a/latest/schemas/ome.schema b/latest/schemas/ome.schema index 900a083d..7baa6dec 100644 --- a/latest/schemas/ome.schema +++ b/latest/schemas/ome.schema @@ -19,15 +19,11 @@ }, "version": { "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" - }, - "schema_url": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ "series", - "version", - "schema_url" + "version" ] } }, diff --git a/latest/schemas/plate.schema b/latest/schemas/plate.schema index 6b43c61f..9707ac06 100644 --- a/latest/schemas/plate.schema +++ b/latest/schemas/plate.schema @@ -139,15 +139,11 @@ }, "version": { "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" - }, - "schema_url": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ "plate", - "version", - "schema_url" + "version" ] } }, diff --git a/latest/schemas/well.schema b/latest/schemas/well.schema index 768ee500..a04a4834 100644 --- a/latest/schemas/well.schema +++ b/latest/schemas/well.schema @@ -42,15 +42,11 @@ }, "version": { "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" - }, - "schema_url": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema" } }, "required": [ "well", - "version", - "schema_url" + "version" ] } }, diff --git a/latest/tests/image_suite.json b/latest/tests/image_suite.json index c9e4d659..df359ce4 100644 --- a/latest/tests/image_suite.json +++ b/latest/tests/image_suite.json @@ -10,7 +10,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -53,7 +52,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -94,7 +92,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -132,7 +129,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "datasets": [ @@ -179,7 +175,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -221,7 +216,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -259,7 +253,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -295,7 +288,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -333,7 +325,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -371,7 +362,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -423,7 +413,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -478,7 +467,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -514,7 +502,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -547,7 +534,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -587,7 +573,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -625,7 +610,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -669,7 +653,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -701,7 +684,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -729,7 +711,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -756,7 +737,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "datasets": [ @@ -782,7 +762,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -820,7 +799,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -862,7 +840,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [], @@ -889,7 +866,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -933,7 +909,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [] } }, @@ -945,7 +920,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -1000,7 +974,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -1033,7 +1006,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ diff --git a/latest/tests/label_suite.json b/latest/tests/label_suite.json index deeeee55..66a2d35d 100644 --- a/latest/tests/label_suite.json +++ b/latest/tests/label_suite.json @@ -9,7 +9,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [ { @@ -27,7 +26,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [ { @@ -50,7 +48,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [] } @@ -63,7 +60,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "properties": [] } @@ -76,7 +72,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [ { @@ -93,7 +88,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "properties": [ { @@ -110,7 +104,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [ { @@ -128,7 +121,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [ { @@ -146,7 +138,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": { "colors": [ { diff --git a/latest/tests/plate_suite.json b/latest/tests/plate_suite.json index 3bef1f15..3db70de7 100644 --- a/latest/tests/plate_suite.json +++ b/latest/tests/plate_suite.json @@ -9,7 +9,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -38,7 +37,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -72,7 +70,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -96,7 +93,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -121,7 +117,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -153,7 +148,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "rows": [ { @@ -177,7 +171,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [], "rows": [ @@ -202,7 +195,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -234,7 +226,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -256,7 +247,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -279,7 +269,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -316,7 +305,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -345,7 +333,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -374,7 +361,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -402,7 +388,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -430,7 +415,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -458,7 +442,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -486,7 +469,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -514,7 +496,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -543,7 +524,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -572,7 +552,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -606,7 +585,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -640,7 +618,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -674,7 +651,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -709,7 +685,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -744,7 +719,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -779,7 +753,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -814,7 +787,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -849,7 +821,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -884,7 +855,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { diff --git a/latest/tests/strict_image_suite.json b/latest/tests/strict_image_suite.json index 99a6db0e..b52fd2d3 100644 --- a/latest/tests/strict_image_suite.json +++ b/latest/tests/strict_image_suite.json @@ -10,7 +10,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "name": "example", @@ -97,7 +96,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -146,7 +144,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "@id": "top", "@type": "ngff:Image", "multiscales": [ @@ -197,7 +194,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ @@ -240,7 +236,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "multiscales": [ { "axes": [ diff --git a/latest/tests/strict_label_suite.json b/latest/tests/strict_label_suite.json index f0156100..1b3535c2 100644 --- a/latest/tests/strict_label_suite.json +++ b/latest/tests/strict_label_suite.json @@ -9,7 +9,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "image-label": {} } }, diff --git a/latest/tests/strict_plate_suite.json b/latest/tests/strict_plate_suite.json index ad372e41..7cea0747 100644 --- a/latest/tests/strict_plate_suite.json +++ b/latest/tests/strict_plate_suite.json @@ -9,7 +9,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -39,7 +38,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "columns": [ { @@ -68,7 +66,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -105,7 +102,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { @@ -141,7 +137,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "plate": { "acquisitions": [ { diff --git a/latest/tests/strict_well_suite.json b/latest/tests/strict_well_suite.json index 0eacf7ec..f56b6c24 100644 --- a/latest/tests/strict_well_suite.json +++ b/latest/tests/strict_well_suite.json @@ -9,7 +9,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "well": { "images": [ { @@ -26,7 +25,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "well": { "images": [ { diff --git a/latest/tests/well_suite.json b/latest/tests/well_suite.json index c5996578..7fbf8ca2 100644 --- a/latest/tests/well_suite.json +++ b/latest/tests/well_suite.json @@ -9,7 +9,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "well": { "images": [ { @@ -26,7 +25,6 @@ "data": { "ome": { "version": "0.5", - "schema_url": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "well": { "images": [ { From 1383ce6218539baf9fe4350c46d992f2dbfe7af1 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 10 Oct 2024 15:34:26 +0200 Subject: [PATCH 08/35] Delete latest/schemas/_schema_url.schema --- latest/schemas/_schema_url.schema | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 latest/schemas/_schema_url.schema diff --git a/latest/schemas/_schema_url.schema b/latest/schemas/_schema_url.schema deleted file mode 100644 index 432f1b12..00000000 --- a/latest/schemas/_schema_url.schema +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/_schema_url.schema", - "title": "OME-Zarr Schema URL", - "description": "A URL to the JSON schema of the OME-Zarr Metadata", - "type": "string", - "enum": [ - "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema" - ] -} From 72c443041f49c0ab4c414d5d40f196143c612fd1 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 11:04:22 +0100 Subject: [PATCH 09/35] mv latest 0.5 && ln -s 0.5 latest --- {latest => 0.5}/copyright.include | 0 {latest => 0.5}/examples/bf2raw/.config.json | 0 {latest => 0.5}/examples/bf2raw/image.json | 0 {latest => 0.5}/examples/bf2raw/plate.json | 0 {latest => 0.5}/examples/label_strict/.config.json | 0 {latest => 0.5}/examples/label_strict/colors_properties.json | 0 {latest => 0.5}/examples/multiscales_strict/.config.json | 0 .../examples/multiscales_strict/multiscales_example.json | 0 .../examples/multiscales_strict/multiscales_transformations.json | 0 {latest => 0.5}/examples/ome/.config.json | 0 {latest => 0.5}/examples/ome/series-2.json | 0 {latest => 0.5}/examples/plate_strict/.config.json | 0 {latest => 0.5}/examples/plate_strict/plate_2wells.json | 0 {latest => 0.5}/examples/plate_strict/plate_6wells.json | 0 {latest => 0.5}/examples/well_strict/.config.json | 0 {latest => 0.5}/examples/well_strict/well_2fields.json | 0 {latest => 0.5}/examples/well_strict/well_4fields.json | 0 {latest => 0.5}/header.include | 0 {latest => 0.5}/index.bs | 0 {latest => 0.5}/schemas/_schema_url.schema | 0 {latest => 0.5}/schemas/_version.schema | 0 {latest => 0.5}/schemas/bf2raw.schema | 0 {latest => 0.5}/schemas/image.schema | 0 {latest => 0.5}/schemas/label.schema | 0 {latest => 0.5}/schemas/ome.schema | 0 {latest => 0.5}/schemas/ome_zarr.schema | 0 {latest => 0.5}/schemas/plate.schema | 0 {latest => 0.5}/schemas/strict_image.schema | 0 {latest => 0.5}/schemas/strict_label.schema | 0 {latest => 0.5}/schemas/strict_plate.schema | 0 {latest => 0.5}/schemas/strict_well.schema | 0 {latest => 0.5}/schemas/well.schema | 0 {latest => 0.5}/tests/image_suite.json | 0 {latest => 0.5}/tests/label_suite.json | 0 {latest => 0.5}/tests/plate_suite.json | 0 {latest => 0.5}/tests/strict_image_suite.json | 0 {latest => 0.5}/tests/strict_label_suite.json | 0 {latest => 0.5}/tests/strict_plate_suite.json | 0 {latest => 0.5}/tests/strict_well_suite.json | 0 {latest => 0.5}/tests/test_validation.py | 0 {latest => 0.5}/tests/well_suite.json | 0 {latest => 0.5}/tox.ini | 0 latest | 1 + 43 files changed, 1 insertion(+) rename {latest => 0.5}/copyright.include (100%) rename {latest => 0.5}/examples/bf2raw/.config.json (100%) rename {latest => 0.5}/examples/bf2raw/image.json (100%) rename {latest => 0.5}/examples/bf2raw/plate.json (100%) rename {latest => 0.5}/examples/label_strict/.config.json (100%) rename {latest => 0.5}/examples/label_strict/colors_properties.json (100%) rename {latest => 0.5}/examples/multiscales_strict/.config.json (100%) rename {latest => 0.5}/examples/multiscales_strict/multiscales_example.json (100%) rename {latest => 0.5}/examples/multiscales_strict/multiscales_transformations.json (100%) rename {latest => 0.5}/examples/ome/.config.json (100%) rename {latest => 0.5}/examples/ome/series-2.json (100%) rename {latest => 0.5}/examples/plate_strict/.config.json (100%) rename {latest => 0.5}/examples/plate_strict/plate_2wells.json (100%) rename {latest => 0.5}/examples/plate_strict/plate_6wells.json (100%) rename {latest => 0.5}/examples/well_strict/.config.json (100%) rename {latest => 0.5}/examples/well_strict/well_2fields.json (100%) rename {latest => 0.5}/examples/well_strict/well_4fields.json (100%) rename {latest => 0.5}/header.include (100%) rename {latest => 0.5}/index.bs (100%) rename {latest => 0.5}/schemas/_schema_url.schema (100%) rename {latest => 0.5}/schemas/_version.schema (100%) rename {latest => 0.5}/schemas/bf2raw.schema (100%) rename {latest => 0.5}/schemas/image.schema (100%) rename {latest => 0.5}/schemas/label.schema (100%) rename {latest => 0.5}/schemas/ome.schema (100%) rename {latest => 0.5}/schemas/ome_zarr.schema (100%) rename {latest => 0.5}/schemas/plate.schema (100%) rename {latest => 0.5}/schemas/strict_image.schema (100%) rename {latest => 0.5}/schemas/strict_label.schema (100%) rename {latest => 0.5}/schemas/strict_plate.schema (100%) rename {latest => 0.5}/schemas/strict_well.schema (100%) rename {latest => 0.5}/schemas/well.schema (100%) rename {latest => 0.5}/tests/image_suite.json (100%) rename {latest => 0.5}/tests/label_suite.json (100%) rename {latest => 0.5}/tests/plate_suite.json (100%) rename {latest => 0.5}/tests/strict_image_suite.json (100%) rename {latest => 0.5}/tests/strict_label_suite.json (100%) rename {latest => 0.5}/tests/strict_plate_suite.json (100%) rename {latest => 0.5}/tests/strict_well_suite.json (100%) rename {latest => 0.5}/tests/test_validation.py (100%) rename {latest => 0.5}/tests/well_suite.json (100%) rename {latest => 0.5}/tox.ini (100%) create mode 120000 latest diff --git a/latest/copyright.include b/0.5/copyright.include similarity index 100% rename from latest/copyright.include rename to 0.5/copyright.include diff --git a/latest/examples/bf2raw/.config.json b/0.5/examples/bf2raw/.config.json similarity index 100% rename from latest/examples/bf2raw/.config.json rename to 0.5/examples/bf2raw/.config.json diff --git a/latest/examples/bf2raw/image.json b/0.5/examples/bf2raw/image.json similarity index 100% rename from latest/examples/bf2raw/image.json rename to 0.5/examples/bf2raw/image.json diff --git a/latest/examples/bf2raw/plate.json b/0.5/examples/bf2raw/plate.json similarity index 100% rename from latest/examples/bf2raw/plate.json rename to 0.5/examples/bf2raw/plate.json diff --git a/latest/examples/label_strict/.config.json b/0.5/examples/label_strict/.config.json similarity index 100% rename from latest/examples/label_strict/.config.json rename to 0.5/examples/label_strict/.config.json diff --git a/latest/examples/label_strict/colors_properties.json b/0.5/examples/label_strict/colors_properties.json similarity index 100% rename from latest/examples/label_strict/colors_properties.json rename to 0.5/examples/label_strict/colors_properties.json diff --git a/latest/examples/multiscales_strict/.config.json b/0.5/examples/multiscales_strict/.config.json similarity index 100% rename from latest/examples/multiscales_strict/.config.json rename to 0.5/examples/multiscales_strict/.config.json diff --git a/latest/examples/multiscales_strict/multiscales_example.json b/0.5/examples/multiscales_strict/multiscales_example.json similarity index 100% rename from latest/examples/multiscales_strict/multiscales_example.json rename to 0.5/examples/multiscales_strict/multiscales_example.json diff --git a/latest/examples/multiscales_strict/multiscales_transformations.json b/0.5/examples/multiscales_strict/multiscales_transformations.json similarity index 100% rename from latest/examples/multiscales_strict/multiscales_transformations.json rename to 0.5/examples/multiscales_strict/multiscales_transformations.json diff --git a/latest/examples/ome/.config.json b/0.5/examples/ome/.config.json similarity index 100% rename from latest/examples/ome/.config.json rename to 0.5/examples/ome/.config.json diff --git a/latest/examples/ome/series-2.json b/0.5/examples/ome/series-2.json similarity index 100% rename from latest/examples/ome/series-2.json rename to 0.5/examples/ome/series-2.json diff --git a/latest/examples/plate_strict/.config.json b/0.5/examples/plate_strict/.config.json similarity index 100% rename from latest/examples/plate_strict/.config.json rename to 0.5/examples/plate_strict/.config.json diff --git a/latest/examples/plate_strict/plate_2wells.json b/0.5/examples/plate_strict/plate_2wells.json similarity index 100% rename from latest/examples/plate_strict/plate_2wells.json rename to 0.5/examples/plate_strict/plate_2wells.json diff --git a/latest/examples/plate_strict/plate_6wells.json b/0.5/examples/plate_strict/plate_6wells.json similarity index 100% rename from latest/examples/plate_strict/plate_6wells.json rename to 0.5/examples/plate_strict/plate_6wells.json diff --git a/latest/examples/well_strict/.config.json b/0.5/examples/well_strict/.config.json similarity index 100% rename from latest/examples/well_strict/.config.json rename to 0.5/examples/well_strict/.config.json diff --git a/latest/examples/well_strict/well_2fields.json b/0.5/examples/well_strict/well_2fields.json similarity index 100% rename from latest/examples/well_strict/well_2fields.json rename to 0.5/examples/well_strict/well_2fields.json diff --git a/latest/examples/well_strict/well_4fields.json b/0.5/examples/well_strict/well_4fields.json similarity index 100% rename from latest/examples/well_strict/well_4fields.json rename to 0.5/examples/well_strict/well_4fields.json diff --git a/latest/header.include b/0.5/header.include similarity index 100% rename from latest/header.include rename to 0.5/header.include diff --git a/latest/index.bs b/0.5/index.bs similarity index 100% rename from latest/index.bs rename to 0.5/index.bs diff --git a/latest/schemas/_schema_url.schema b/0.5/schemas/_schema_url.schema similarity index 100% rename from latest/schemas/_schema_url.schema rename to 0.5/schemas/_schema_url.schema diff --git a/latest/schemas/_version.schema b/0.5/schemas/_version.schema similarity index 100% rename from latest/schemas/_version.schema rename to 0.5/schemas/_version.schema diff --git a/latest/schemas/bf2raw.schema b/0.5/schemas/bf2raw.schema similarity index 100% rename from latest/schemas/bf2raw.schema rename to 0.5/schemas/bf2raw.schema diff --git a/latest/schemas/image.schema b/0.5/schemas/image.schema similarity index 100% rename from latest/schemas/image.schema rename to 0.5/schemas/image.schema diff --git a/latest/schemas/label.schema b/0.5/schemas/label.schema similarity index 100% rename from latest/schemas/label.schema rename to 0.5/schemas/label.schema diff --git a/latest/schemas/ome.schema b/0.5/schemas/ome.schema similarity index 100% rename from latest/schemas/ome.schema rename to 0.5/schemas/ome.schema diff --git a/latest/schemas/ome_zarr.schema b/0.5/schemas/ome_zarr.schema similarity index 100% rename from latest/schemas/ome_zarr.schema rename to 0.5/schemas/ome_zarr.schema diff --git a/latest/schemas/plate.schema b/0.5/schemas/plate.schema similarity index 100% rename from latest/schemas/plate.schema rename to 0.5/schemas/plate.schema diff --git a/latest/schemas/strict_image.schema b/0.5/schemas/strict_image.schema similarity index 100% rename from latest/schemas/strict_image.schema rename to 0.5/schemas/strict_image.schema diff --git a/latest/schemas/strict_label.schema b/0.5/schemas/strict_label.schema similarity index 100% rename from latest/schemas/strict_label.schema rename to 0.5/schemas/strict_label.schema diff --git a/latest/schemas/strict_plate.schema b/0.5/schemas/strict_plate.schema similarity index 100% rename from latest/schemas/strict_plate.schema rename to 0.5/schemas/strict_plate.schema diff --git a/latest/schemas/strict_well.schema b/0.5/schemas/strict_well.schema similarity index 100% rename from latest/schemas/strict_well.schema rename to 0.5/schemas/strict_well.schema diff --git a/latest/schemas/well.schema b/0.5/schemas/well.schema similarity index 100% rename from latest/schemas/well.schema rename to 0.5/schemas/well.schema diff --git a/latest/tests/image_suite.json b/0.5/tests/image_suite.json similarity index 100% rename from latest/tests/image_suite.json rename to 0.5/tests/image_suite.json diff --git a/latest/tests/label_suite.json b/0.5/tests/label_suite.json similarity index 100% rename from latest/tests/label_suite.json rename to 0.5/tests/label_suite.json diff --git a/latest/tests/plate_suite.json b/0.5/tests/plate_suite.json similarity index 100% rename from latest/tests/plate_suite.json rename to 0.5/tests/plate_suite.json diff --git a/latest/tests/strict_image_suite.json b/0.5/tests/strict_image_suite.json similarity index 100% rename from latest/tests/strict_image_suite.json rename to 0.5/tests/strict_image_suite.json diff --git a/latest/tests/strict_label_suite.json b/0.5/tests/strict_label_suite.json similarity index 100% rename from latest/tests/strict_label_suite.json rename to 0.5/tests/strict_label_suite.json diff --git a/latest/tests/strict_plate_suite.json b/0.5/tests/strict_plate_suite.json similarity index 100% rename from latest/tests/strict_plate_suite.json rename to 0.5/tests/strict_plate_suite.json diff --git a/latest/tests/strict_well_suite.json b/0.5/tests/strict_well_suite.json similarity index 100% rename from latest/tests/strict_well_suite.json rename to 0.5/tests/strict_well_suite.json diff --git a/latest/tests/test_validation.py b/0.5/tests/test_validation.py similarity index 100% rename from latest/tests/test_validation.py rename to 0.5/tests/test_validation.py diff --git a/latest/tests/well_suite.json b/0.5/tests/well_suite.json similarity index 100% rename from latest/tests/well_suite.json rename to 0.5/tests/well_suite.json diff --git a/latest/tox.ini b/0.5/tox.ini similarity index 100% rename from latest/tox.ini rename to 0.5/tox.ini diff --git a/latest b/latest new file mode 120000 index 00000000..ea2303bc --- /dev/null +++ b/latest @@ -0,0 +1 @@ +0.5 \ No newline at end of file From 45738290e3a51c42d31c47d89d58f4cd18e1035a Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 11:16:48 +0100 Subject: [PATCH 10/35] latest -> 0.5 --- .github/workflows/validation.yml | 1 + 0.5/index.bs | 1 - 0.5/schemas/_version.schema | 2 +- 0.5/schemas/bf2raw.schema | 4 ++-- 0.5/schemas/image.schema | 4 ++-- 0.5/schemas/label.schema | 4 ++-- 0.5/schemas/ome.schema | 4 ++-- 0.5/schemas/ome_zarr.schema | 14 +++++++------- 0.5/schemas/plate.schema | 4 ++-- 0.5/schemas/strict_image.schema | 4 ++-- 0.5/schemas/strict_label.schema | 4 ++-- 0.5/schemas/strict_plate.schema | 4 ++-- 0.5/schemas/strict_well.schema | 4 ++-- 0.5/schemas/well.schema | 4 ++-- specifications/index.md | 3 ++- 15 files changed, 31 insertions(+), 30 deletions(-) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 99e7b321..32a2d601 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -14,6 +14,7 @@ jobs: - '0.2' - '0.3' - '0.4' + - '0.5' - 'latest' runs-on: ubuntu-20.04 steps: diff --git a/0.5/index.bs b/0.5/index.bs index 42070012..600bd24b 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -634,7 +634,6 @@ Version History {#history} 2024-11-21 use Zarr v3 in OME-Zarr, see [RFC-2](https://ngff.openmicroscopy.org/rfc/2/index.html). - 0.4.1 2023-02-09 diff --git a/0.5/schemas/_version.schema b/0.5/schemas/_version.schema index af941b61..1da06a6d 100644 --- a/0.5/schemas/_version.schema +++ b/0.5/schemas/_version.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/_version.schema", "title": "OME-Zarr Metadata version", "description": "The version of the OME-Zarr Metadata", "type": "string", diff --git a/0.5/schemas/bf2raw.schema b/0.5/schemas/bf2raw.schema index db9e05e2..d3c87253 100644 --- a/0.5/schemas/bf2raw.schema +++ b/0.5/schemas/bf2raw.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/bf2raw.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/bf2raw.schema", "title": "OME-Zarr container produced by bioformats2raw", "description": "The zarr.json attributes key", "type": "object", @@ -17,7 +17,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/_version.schema" } }, "required": [ diff --git a/0.5/schemas/image.schema b/0.5/schemas/image.schema index 4f141c59..f94fd942 100644 --- a/0.5/schemas/image.schema +++ b/0.5/schemas/image.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/image.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/image.schema", "title": "OME-Zarr Image", "description": "The zarr.json attributes key", "type": "object", @@ -16,7 +16,7 @@ "$ref": "#/$defs/omero" }, "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/_version.schema" } }, "required": [ diff --git a/0.5/schemas/label.schema b/0.5/schemas/label.schema index 6c618210..dd5cb6d6 100644 --- a/0.5/schemas/label.schema +++ b/0.5/schemas/label.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/label.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/label.schema", "title": "OME-Zarr labelled image schema", "description": "The zarr.json attributes key", "type": "object", @@ -13,7 +13,7 @@ "$ref": "#/$defs/image-label" }, "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/_version.schema" } }, "required": [ diff --git a/0.5/schemas/ome.schema b/0.5/schemas/ome.schema index 7baa6dec..36569280 100644 --- a/0.5/schemas/ome.schema +++ b/0.5/schemas/ome.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/ome.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/ome.schema", "title": "OME-Zarr group produced by bioformats2raw to contain OME metadata", "description": "The zarr.json attributes key", "type": "object", @@ -18,7 +18,7 @@ "minContains": 1 }, "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/_version.schema" } }, "required": [ diff --git a/0.5/schemas/ome_zarr.schema b/0.5/schemas/ome_zarr.schema index 9c1c642a..9b22bba6 100644 --- a/0.5/schemas/ome_zarr.schema +++ b/0.5/schemas/ome_zarr.schema @@ -1,24 +1,24 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/ome_zarr.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema", "anyOf": [ { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/bf2raw.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/bf2raw.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/image.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/label.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/ome.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/ome.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/plate.schema" }, { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/well.schema" } ] } diff --git a/0.5/schemas/plate.schema b/0.5/schemas/plate.schema index 9707ac06..3c8a1b97 100644 --- a/0.5/schemas/plate.schema +++ b/0.5/schemas/plate.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/0.4/schemas/plate.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/plate.schema", "title": "OME-Zarr plate schema", "description": "The zarr.json attributes key", "type": "object", @@ -138,7 +138,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/_version.schema" } }, "required": [ diff --git a/0.5/schemas/strict_image.schema b/0.5/schemas/strict_image.schema index c1084497..042790e7 100644 --- a/0.5/schemas/strict_image.schema +++ b/0.5/schemas/strict_image.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/latest/schemas/strict_image.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/strict_image.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/image.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/image.schema" }, { "properties": { diff --git a/0.5/schemas/strict_label.schema b/0.5/schemas/strict_label.schema index 6a55b36e..f1ec4db5 100644 --- a/0.5/schemas/strict_label.schema +++ b/0.5/schemas/strict_label.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/latest/schemas/strict_label.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/strict_label.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/label.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/label.schema" }, { "properties": { diff --git a/0.5/schemas/strict_plate.schema b/0.5/schemas/strict_plate.schema index c5228888..ce678ce8 100644 --- a/0.5/schemas/strict_plate.schema +++ b/0.5/schemas/strict_plate.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/latest/schemas/strict_plate.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/strict_plate.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/plate.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/plate.schema" }, { "properties": { diff --git a/0.5/schemas/strict_well.schema b/0.5/schemas/strict_well.schema index 0206b990..43cb58cb 100644 --- a/0.5/schemas/strict_well.schema +++ b/0.5/schemas/strict_well.schema @@ -1,8 +1,8 @@ { - "$id": "https://ngff.openmicroscopy.org/latest/schemas/strict_well.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/strict_well.schema", "allOf": [ { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/well.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/well.schema" } ] } diff --git a/0.5/schemas/well.schema b/0.5/schemas/well.schema index a04a4834..447f51df 100644 --- a/0.5/schemas/well.schema +++ b/0.5/schemas/well.schema @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://ngff.openmicroscopy.org/latest/schemas/well.schema", + "$id": "https://ngff.openmicroscopy.org/0.5/schemas/well.schema", "title": "OME-Zarr well schema", "description": "JSON from OME-Zarr zarr.json", "type": "object", @@ -41,7 +41,7 @@ ] }, "version": { - "$ref": "https://ngff.openmicroscopy.org/latest/schemas/_version.schema" + "$ref": "https://ngff.openmicroscopy.org/0.5/schemas/_version.schema" } }, "required": [ diff --git a/specifications/index.md b/specifications/index.md index a40e0708..bb26c38d 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -1,7 +1,7 @@ Specifications ============== -The current released version of the OME-NGFF specification is 0.4. +The current released version of the OME-NGFF specification is 0.5. The latest version is still undergoing changes and is not yet released. @@ -12,5 +12,6 @@ Version history:
  • 0.2 March 2021
  • 0.3 August 2021
  • 0.4 February 2022
  • +
  • 0.5 November 2024
  • latest
  • From 647ee37d2f86d0ab0650098e2a184846c5c14a5c Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 11:21:16 +0100 Subject: [PATCH 11/35] latest -> 0.5 --- 0.5/tests/test_validation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0.5/tests/test_validation.py b/0.5/tests/test_validation.py index 615fc26f..b9c7c929 100644 --- a/0.5/tests/test_validation.py +++ b/0.5/tests/test_validation.py @@ -17,7 +17,7 @@ schema_store[schema["$id"]] = schema GENERIC_SCHEMA = schema_store[ - "https://ngff.openmicroscopy.org/latest/schemas/ome_zarr.schema" + "https://ngff.openmicroscopy.org/0.5/schemas/ome_zarr.schema" ] print(schema_store) From 36238bbe2be8727b0fdf3156a8d8adc5c1404098 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 11:44:15 +0100 Subject: [PATCH 12/35] add testresources --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 9cc69f43..9ffd7c09 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ bikeshed<4.2 myst-parser sphinx-book-theme +testresources \ No newline at end of file From e183b9ac6c9d6337ec354f445778eaf7f7490646 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 11:48:00 +0100 Subject: [PATCH 13/35] bump ubuntu --- .github/workflows/publish.yml | 2 +- .readthedocs.yaml | 2 +- conf.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 5ca3898e..b6301fd3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,7 +12,7 @@ on: jobs: main: name: Build, Validate and Deploy - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v2 - uses: ome/spec-prod@main diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 11ce7bdd..52ecf6d1 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,7 @@ version: 2 build: - os: ubuntu-22.04 + os: ubuntu-24.04 tools: python: "3.10" diff --git a/conf.py b/conf.py index f18fb755..dbdc36ad 100644 --- a/conf.py +++ b/conf.py @@ -7,7 +7,7 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = 'NGFF' -copyright = '2023, NGFF Community' +copyright = '2024, NGFF Community' author = 'NGFF Community' # -- General configuration --------------------------------------------------- From 733edc07916cbd1210dd69e26988dced4a47e59f Mon Sep 17 00:00:00 2001 From: Josh Moore Date: Thu, 21 Nov 2024 11:57:50 +0100 Subject: [PATCH 14/35] Fix markdown in html --- 0.5/index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0.5/index.bs b/0.5/index.bs index 600bd24b..798c4c39 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -632,7 +632,7 @@ Version History {#history} 0.5 2024-11-21 - use Zarr v3 in OME-Zarr, see [RFC-2](https://ngff.openmicroscopy.org/rfc/2/index.html). + use Zarr v3 in OME-Zarr, see RFC-2. 0.4.1 From 743a1e064d31f2e99b44274c5d81efab2e79a14a Mon Sep 17 00:00:00 2001 From: Josh Moore Date: Thu, 21 Nov 2024 11:57:57 +0100 Subject: [PATCH 15/35] Remove 'Group: ome' --- 0.1/index.bs | 1 - 0.2/index.bs | 1 - 0.3/index.bs | 1 - 0.4/index.bs | 1 - 0.5/index.bs | 1 - 5 files changed, 5 deletions(-) diff --git a/0.1/index.bs b/0.1/index.bs index e044a74f..1bc32f6f 100644 --- a/0.1/index.bs +++ b/0.1/index.bs @@ -3,7 +3,6 @@ Title: Next-generation file formats (NGFF) Shortname: ome-ngff Level: 1 Status: w3c/CG-FINAL -Group: ome URL: https://ngff.openmicroscopy.org/0.1/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff diff --git a/0.2/index.bs b/0.2/index.bs index 64c07c78..4c0e09f6 100644 --- a/0.2/index.bs +++ b/0.2/index.bs @@ -3,7 +3,6 @@ Title: Next-generation file formats (NGFF) Shortname: ome-ngff Level: 1 Status: w3c/CG-FINAL -Group: ome URL: https://ngff.openmicroscopy.org/0.2/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff diff --git a/0.3/index.bs b/0.3/index.bs index 0f64fbe0..451f8682 100644 --- a/0.3/index.bs +++ b/0.3/index.bs @@ -3,7 +3,6 @@ Title: Next-generation file formats (NGFF) Shortname: ome-ngff Level: 1 Status: w3c/CG-FINAL -Group: ome URL: https://ngff.openmicroscopy.org/0.3/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff diff --git a/0.4/index.bs b/0.4/index.bs index 0cc02bac..bdd26c51 100644 --- a/0.4/index.bs +++ b/0.4/index.bs @@ -4,7 +4,6 @@ Shortname: ome-ngff Level: 1 Status: LS-COMMIT Status: w3c/CG-FINAL -Group: ome URL: https://ngff.openmicroscopy.org/0.4/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff diff --git a/0.5/index.bs b/0.5/index.bs index 798c4c39..8b46bfce 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -4,7 +4,6 @@ Shortname: ome-zarr Level: 1 Status: LS-COMMIT Status: w3c/ED -Group: ome URL: https://ngff.openmicroscopy.org/latest/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff From 807d547d2b4593cc9182ddc0c0078acdbad1fd4f Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 12:24:58 +0100 Subject: [PATCH 16/35] add reference to data from the challenge --- data/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data/index.md b/data/index.md index be0f179e..f2591ea0 100644 --- a/data/index.md +++ b/data/index.md @@ -15,7 +15,9 @@ Data Resources | [Sanger](https://www.sanger.ac.uk/project/ome-zarr/) | Sanger, UK | 10 | 1 TB | | [SpatialData](https://github.com/scverse/spatialdata-notebooks/tree/main/datasets) | EMBL-HD | 10 | 25 GB | | [SSBD](https://ssbd.riken.jp/ssbd-ome-ngff-samples) | SSBD | 12 | 196 GB | -| [webKnossos](https://zarr.webknossos.org) | scalableminds GmbH | 69 | 70 TB | +| [webKnossos](https://zarr.webknossos.org) | scalable minds | 69 | 70 TB | + +OME-Zarr 0.5 data has been collected during [the OME 2024 NGFF challenge](https://ome.github.io/ome2024-ngff-challenge/). [dandi2]: https://identifiers.org/DANDI:000108 [dandi3]: https://github.com/dandisets/000108 From 97fb4f8c87d3449465011399c38daa27622807a4 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 12:33:18 +0100 Subject: [PATCH 17/35] update about --- about/index.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/about/index.md b/about/index.md index 855ecd60..c6a32016 100644 --- a/about/index.md +++ b/about/index.md @@ -19,11 +19,11 @@ factor before publication is possible. Without a common effort, each lab or resource is left building the tools they need and maintaining that infrastructure often without dedicated funding. -This document defines a specification for bioimaging data to make it possible -to enable the conversion of proprietary formats into a common, cloud-ready one. -Such next-generation file formats layout data so that individual portions, or -"chunks", of large data are reference-able eliminating the need to download -entire datasets. +This document defines OME-Zarr, a specification for bioimaging data to make it +possible to enable the conversion of proprietary formats into a common, +cloud-ready one. Such a next-generation file format layouts data so that +individual portions, or "chunks", of large data are reference-able eliminating +the need to download entire datasets. Why "NGFF"? @@ -47,13 +47,14 @@ the limitations of HDF5 ("N5" was originally short for "Not-HDF5"). Both of these formats permit storing individual chunks of data either locally in separate files or in cloud-based object stores as separate keys. -An [updated Zarr version (v3)](https://zarr-specs.readthedocs.io/) -is underway to unify the two similar specifications to provide a single binary +An [updated Zarr version (v3)](https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html) +has been accepted to unify the two similar specifications to provide a single binary specification. See this [blog post](https://zarr.dev/blog/zep1-update/) for more information. +The file format now is called "OME-Zarr". The term "NGFF" is still refered to the community and [specification process](../rfc/index.md). -In addition to the next-generation file format (NGFF) [specifications](../specifications/index.md), +In addition to the [OME-Zarr specification](../specifications/index.md), the pages listed below are intended to provide an overview of external resources available -for working with NGFF data. +for working with OME-Zarr data. The following pages are intended to provide an overview of the available resources in the NGFF space: @@ -74,3 +75,4 @@ Additionally, notes and recordings of the past NGFF community calls are availabl |6 (0.4/axes)| 2022-01-27| Constantin, Will, Seb| [image.sc](https://forum.image.sc/t/next-call-on-next-gen-bioimaging-data-tools-2022-01-27/60885)| [hackmd](https://hackmd.io/QfiBKHIoTZ-CJSp3q0Wykg)| |7 (0.5/tables & transforms)| 2022-10-05| Kevin & John| [image.sc](https://forum.image.sc/t/ome-ngff-community-call-transforms-and-tables/71792)| [hackmd](https://hackmd.io/TyfrLiCqRteL0Xfc8HRiOA) | |8 (Metadata) | 2023-03-15 | Wouter-Michiel | [image.sc](https://forum.image.sc/t/community-call-metadata-in-ome-ngff/77570/10) | [hackmd](https://hackmd.io/BqnK9Wm4QpGYAhYOoaFBQQ) | +|9 (Collections and labels) | 2024-04-03 | Norman | [image.sc](https://forum.image.sc/t/ome-ngff-community-call-labels-and-other-collections/93815) | [hackmd](https://hackmd.io/So61knrQR0iLftd2LGAVjA) | From 7d4e92199db52f6aa599e790d69447b91716dff0 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 13:02:44 +0100 Subject: [PATCH 18/35] bikeshed -f --- conf.py | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/conf.py b/conf.py index dbdc36ad..5b02e3b8 100644 --- a/conf.py +++ b/conf.py @@ -6,9 +6,9 @@ # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information -project = 'NGFF' -copyright = '2024, NGFF Community' -author = 'NGFF Community' +project = "NGFF" +copyright = "2024, NGFF Community" +author = "NGFF Community" # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration @@ -18,44 +18,53 @@ myst_heading_anchors = 5 myst_enable_extensions = ["deflist"] -templates_path = ['_templates'] -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '.git', '.pytest_cache', '**/.pytest_cache', '**/.tox', 'README.md', 'LICENSE.md', 'CONTRIBUTING.md'] - +templates_path = ["_templates"] +exclude_patterns = [ + "_build", + "Thumbs.db", + ".DS_Store", + ".git", + ".pytest_cache", + "**/.pytest_cache", + "**/.tox", + "README.md", + "LICENSE.md", + "CONTRIBUTING.md", +] # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = 'sphinx_book_theme' +html_theme = "sphinx_book_theme" -html_static_path = ['_static'] +html_static_path = ["_static"] html_css_files = [ - 'https://cdn.datatables.net/v/dt/dt-1.11.5/datatables.min.css', + "https://cdn.datatables.net/v/dt/dt-1.11.5/datatables.min.css", ] html_js_files = [ - 'https://cdn.datatables.net/v/dt/dt-1.11.5/datatables.min.js', - 'main.js', + "https://cdn.datatables.net/v/dt/dt-1.11.5/datatables.min.js", + "main.js", ] html_extra_path = [ - '_bikeshed', + "_bikeshed", ] # #################################### # Run bikeshed build # #################################### -def bikeshed(): +def bikeshed(): import glob import os import shutil import subprocess for index_file in ["latest/index.bs"] + glob.glob("[0-9]*/index.bs"): - output_file = index_file.replace("bs", "html") output_dir = os.path.dirname(output_file) target_dir = os.path.join("_bikeshed", output_dir) @@ -71,11 +80,14 @@ def bikeshed(): run_bikeshed = False if run_bikeshed: - subprocess.check_call(f"bikeshed spec {index_file} {output_file}", shell=True) + subprocess.check_call( + f"bikeshed -f spec {index_file} {output_file}", shell=True + ) if os.path.exists(target_dir): shutil.rmtree(target_dir) shutil.copytree(output_dir, target_dir) + bikeshed() del bikeshed From e0d5c976d0202537aefebaf19016abc0827bc5db Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 13:09:34 +0100 Subject: [PATCH 19/35] messaging --- about/index.md | 2 +- index.rst | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/about/index.md b/about/index.md index c6a32016..b0c82fdd 100644 --- a/about/index.md +++ b/about/index.md @@ -50,7 +50,7 @@ separate files or in cloud-based object stores as separate keys. An [updated Zarr version (v3)](https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html) has been accepted to unify the two similar specifications to provide a single binary specification. See this [blog post](https://zarr.dev/blog/zep1-update/) for more information. -The file format now is called "OME-Zarr". The term "NGFF" is still refered to the community and [specification process](../rfc/index.md). +The file format now is called "OME-Zarr". The term "NGFF" is still referred to the community and [specification process](../rfc/index.md). In addition to the [OME-Zarr specification](../specifications/index.md), the pages listed below are intended to provide an overview of external resources available diff --git a/index.rst b/index.rst index ecbb8bab..829bd243 100644 --- a/index.rst +++ b/index.rst @@ -6,13 +6,13 @@ Next-generation file formats (NGFF) =================================== -OME-NGFF is an imaging format specification being developed by the bioimaging community to +OME-NGFF is an initiative by the bioimaging community to develop imaging format specifications to address issues of scalability and interoperability. Please see the :doc:`about/index` section for an introduction. -The OME-NGFF specification is detailed under :doc:`specifications/index`. -Various Image viewers and other software for working with NGFF data +The OME-Zarr specification is detailed under :doc:`specifications/index`. +Various Image viewers and other software for working with OME-Zarr data are listed on the :doc:`tools/index` page. -Sample NGFF datasets provided by the community can be found under :doc:`data/index`. +Sample OME-Zarr datasets provided by the community can be found under :doc:`data/index`. .. toctree:: :maxdepth: 1 From 6bcb6bdaea0bc15bb1f5b5d3b1c00be2bc425c8e Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 13:11:45 +0100 Subject: [PATCH 20/35] custom ome/spec-prod --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b6301fd3..51d46fdd 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v2 - - uses: ome/spec-prod@main + - uses: normanrz/spec-prod@patch-1 with: GH_PAGES_BRANCH: gh-pages VALIDATE_LINKS: false From 85dcc34123a43f17c22ab7e55147c1eb189fa51a Mon Sep 17 00:00:00 2001 From: Josh Moore Date: Thu, 21 Nov 2024 13:22:17 +0100 Subject: [PATCH 21/35] Fix TR links --- 0.1/index.bs | 1 + 0.2/index.bs | 1 + 0.3/index.bs | 1 + 0.4/index.bs | 2 +- 0.5/index.bs | 4 ++-- 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/0.1/index.bs b/0.1/index.bs index 1bc32f6f..0401627d 100644 --- a/0.1/index.bs +++ b/0.1/index.bs @@ -3,6 +3,7 @@ Title: Next-generation file formats (NGFF) Shortname: ome-ngff Level: 1 Status: w3c/CG-FINAL +TR: https://ngff.openmicroscopy.org/0.1/ URL: https://ngff.openmicroscopy.org/0.1/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff diff --git a/0.2/index.bs b/0.2/index.bs index 4c0e09f6..31d9eb60 100644 --- a/0.2/index.bs +++ b/0.2/index.bs @@ -3,6 +3,7 @@ Title: Next-generation file formats (NGFF) Shortname: ome-ngff Level: 1 Status: w3c/CG-FINAL +TR: https://ngff.openmicroscopy.org/0.2/ URL: https://ngff.openmicroscopy.org/0.2/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff diff --git a/0.3/index.bs b/0.3/index.bs index 451f8682..4d01d658 100644 --- a/0.3/index.bs +++ b/0.3/index.bs @@ -3,6 +3,7 @@ Title: Next-generation file formats (NGFF) Shortname: ome-ngff Level: 1 Status: w3c/CG-FINAL +TR: https://ngff.openmicroscopy.org/0.3/ URL: https://ngff.openmicroscopy.org/0.3/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff diff --git a/0.4/index.bs b/0.4/index.bs index bdd26c51..c108c477 100644 --- a/0.4/index.bs +++ b/0.4/index.bs @@ -2,8 +2,8 @@ Title: Next-generation file formats (NGFF) Shortname: ome-ngff Level: 1 -Status: LS-COMMIT Status: w3c/CG-FINAL +TR: https://ngff.openmicroscopy.org/0.4/ URL: https://ngff.openmicroscopy.org/0.4/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff diff --git a/0.5/index.bs b/0.5/index.bs index 8b46bfce..927fa0ae 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -2,9 +2,9 @@ Title: OME-Zarr specification Shortname: ome-zarr Level: 1 -Status: LS-COMMIT Status: w3c/ED -URL: https://ngff.openmicroscopy.org/latest/ +TR: https://ngff.openmicroscopy.org/0.5/ +URL: https://ngff.openmicroscopy.org/0.5/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff Logo: http://www.openmicroscopy.org/img/logos/ome-logomark.svg From b343cffcf2b001c3be6ac58618091c08971ea473 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 13:24:26 +0100 Subject: [PATCH 22/35] Update conf.py --- conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.py b/conf.py index 5b02e3b8..5f64deaa 100644 --- a/conf.py +++ b/conf.py @@ -81,7 +81,7 @@ def bikeshed(): if run_bikeshed: subprocess.check_call( - f"bikeshed -f spec {index_file} {output_file}", shell=True + f"bikeshed spec {index_file} {output_file}", shell=True ) if os.path.exists(target_dir): From b484af072d3115169ca2253e2883a300a4501e90 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 13:25:34 +0100 Subject: [PATCH 23/35] Update .github/workflows/publish.yml --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 51d46fdd..b6301fd3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v2 - - uses: normanrz/spec-prod@patch-1 + - uses: ome/spec-prod@main with: GH_PAGES_BRANCH: gh-pages VALIDATE_LINKS: false From 1fe76d6d0603e3096e500a8a8e8c8a05b57a6503 Mon Sep 17 00:00:00 2001 From: Josh Moore Date: Thu, 21 Nov 2024 13:41:50 +0100 Subject: [PATCH 24/35] Minor wording updates --- about/index.md | 2 +- index.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/about/index.md b/about/index.md index b0c82fdd..8009f7b6 100644 --- a/about/index.md +++ b/about/index.md @@ -50,7 +50,7 @@ separate files or in cloud-based object stores as separate keys. An [updated Zarr version (v3)](https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html) has been accepted to unify the two similar specifications to provide a single binary specification. See this [blog post](https://zarr.dev/blog/zep1-update/) for more information. -The file format now is called "OME-Zarr". The term "NGFF" is still referred to the community and [specification process](../rfc/index.md). +The file format is called "OME-Zarr". The term "NGFF" still refers to the community and [specification process](../rfc/index.md). In addition to the [OME-Zarr specification](../specifications/index.md), the pages listed below are intended to provide an overview of external resources available diff --git a/index.rst b/index.rst index 829bd243..85db7d2b 100644 --- a/index.rst +++ b/index.rst @@ -6,7 +6,7 @@ Next-generation file formats (NGFF) =================================== -OME-NGFF is an initiative by the bioimaging community to develop imaging format specifications to +NGFF is an initiative by the bioimaging community to develop imaging format specifications to address issues of scalability and interoperability. Please see the :doc:`about/index` section for an introduction. The OME-Zarr specification is detailed under :doc:`specifications/index`. From 1b661d303a6b0e4b11efff8228c38eedc57810ae Mon Sep 17 00:00:00 2001 From: Josh Moore Date: Thu, 21 Nov 2024 13:42:32 +0100 Subject: [PATCH 25/35] Update Josh's affiliation --- 0.5/index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0.5/index.bs b/0.5/index.bs index 927fa0ae..45e7841f 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -12,7 +12,7 @@ Local Boilerplate: header yes Local Boilerplate: copyright yes Boilerplate: style-darkmode off Markup Shorthands: markdown yes -Editor: Josh Moore, University of Dundee (UoD) https://www.dundee.ac.uk, https://orcid.org/0000-0003-4028-811X +Editor: Josh Moore, German BioImaging, e.V., https://gerbi-gmb.de/, https://orcid.org/0000-0003-4028-811X Text Macro: NGFFVERSION 0.5 Abstract: This document contains next-generation file format (NGFF) Abstract: specifications for storing bioimaging data in the cloud. From 237031f9d957a74f1c663e82a3f3617219a0c2bd Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 13:55:43 +0100 Subject: [PATCH 26/35] OME-NGFF -> OME-Zarr --- 0.5/index.bs | 42 +++--------------------------------------- tools/index.md | 2 +- 2 files changed, 4 insertions(+), 40 deletions(-) diff --git a/0.5/index.bs b/0.5/index.bs index 45e7841f..953248ed 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -200,7 +200,7 @@ The "dimension_names" attribute in the `zarr.json` of the Zarr array of a multis The need for the collection stems from the common "multi-image file" scenario in microscopy. Parsers like Bio-Formats define a strict, stable ordering of the images in a single container that can be used to refer to them by other tools. -In order to capture that information within an OME-NGFF dataset, `bioformats2raw` internally introduced a wrapping layer. +In order to capture that information within an OME-Zarr dataset, `bioformats2raw` internally introduced a wrapping layer. The bioformats2raw layout has been added to v0.4 as a transitional specification to specify filesets that already exist in the wild. An upcoming NGFF specification will replace this layout with explicit metadata. @@ -422,7 +422,7 @@ In addition to the `multiscales` key, the OME-Zarr Metadata in this image-level whose value is also a JSON object. The `image-label` object stores information about the display colors, source image, and optionally, further arbitrary properties of the label image. That `image-label` object SHOULD contain the following keys: first, a `colors` key, whose value MUST be a JSON array describing color information for the unique label values. Second, a `version` key, whose value MUST be a -string specifying the version of the OME-NGFF `image-label` schema. +string specifying the version of the OME-Zarr `image-label` schema. Conforming readers SHOULD display labels using the colors specified by the `colors` JSON array, as follows. This array contains one JSON object for each unique custom label. Each of these objects MUST contain the `label-value` key, whose value MUST be the integer @@ -570,43 +570,7 @@ were added before this was adopted, but they should be updated in due course. Implementations {#implementations} ================================== -Projects which support reading and/or writing OME-NGFF data include: - -
    - -
    [bigdataviewer-ome-zarr](https://github.com/mobie/bigdataviewer-ome-zarr)
    -
    Fiji-plugin for reading OME-Zarr.
    - -
    [bioformats2raw](https://github.com/glencoesoftware/bioformats2raw)
    -
    A performant, Bio-Formats image file format converter.
    - -
    [omero-ms-zarr](https://github.com/ome/omero-ms-zarr)
    -
    A microservice for OMERO.server that converts images stored in OMERO to OME-Zarr files on the fly, served via a web API.
    - -
    [idr-zarr-tools](https://github.com/IDR/idr-zarr-tools)
    -
    A full workflow demonstrating the conversion of IDR images to OME-Zarr images on S3.
    - -
    [OMERO CLI Zarr plugin](https://github.com/ome/omero-cli-zarr)
    -
    An OMERO CLI plugin that converts images stored in OMERO.server into a local Zarr file.
    - -
    [ome-zarr-py](https://github.com/ome/ome-zarr-py)
    -
    A napari plugin for reading ome-zarr files.
    - -
    [vizarr](https://github.com/hms-dbmi/vizarr/)
    -
    A minimal, purely client-side program for viewing Zarr-based images with Viv & ImJoy.
    - -
    [ITKIOOMEZarrNGFF](https://github.com/InsightSoftwareConsortium/ITKIOOMEZarrNGFF/)
    -
    ITK IO for images stored in OME-NGFF format.
    - -
    - -Diagram of related projects - -All implementations prevent an equivalent representation of a dataset which can be downloaded or uploaded freely. An interactive -version of this diagram is available from the [OME2020 Workshop](https://downloads.openmicroscopy.org/presentations/2020/Dundee/Workshops/NGFF/zarr_diagram/). -Mouseover the blackboxes representing the implementations above to get a quick tip on how to use them. - -Note: If you would like to see your project listed, please open an issue or PR on the [ome/ngff](https://github.com/ome/ngff) repository. +See [Tools](https://ngff.openmicroscopy.org/tools/index.html). Citing {#citing} ================ diff --git a/tools/index.md b/tools/index.md index 1a4a62ec..59eed830 100644 --- a/tools/index.md +++ b/tools/index.md @@ -1,6 +1,6 @@ # Tools -A list of tools and libraries with OME-Zarr support. These are developed by various members of the OME-NGFF community. If you think your tool/library should be listed here, please [open a pull request](https://github.com/ome/ngff). +A list of tools and libraries with OME-Zarr support. These are developed by various members of the NGFF community. If you think your tool/library should be listed here, please [open a pull request](https://github.com/ome/ngff). In addition to this collection, an evaluation of selected tools/libraries is available on . From 0fdc48a43617cd9220c9a52170b3594046e857ed Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 15:54:44 +0100 Subject: [PATCH 27/35] Update index.bs --- 0.5/index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0.5/index.bs b/0.5/index.bs index 953248ed..d8bc1a3c 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -12,7 +12,7 @@ Local Boilerplate: header yes Local Boilerplate: copyright yes Boilerplate: style-darkmode off Markup Shorthands: markdown yes -Editor: Josh Moore, German BioImaging, e.V., https://gerbi-gmb.de/, https://orcid.org/0000-0003-4028-811X +Editor: Josh Moore, German BioImaging e.V., https://gerbi-gmb.de/, https://orcid.org/0000-0003-4028-811X Text Macro: NGFFVERSION 0.5 Abstract: This document contains next-generation file format (NGFF) Abstract: specifications for storing bioimaging data in the cloud. From c71e8e650dee8c2607dfb60d8b6669f1024979b3 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 16:07:49 +0100 Subject: [PATCH 28/35] fix link --- specifications/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specifications/index.md b/specifications/index.md index bb26c38d..1ef03002 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -1,7 +1,7 @@ Specifications ============== -The current released version of the OME-NGFF specification is 0.5. +The current released version of the OME-Zarr specification is 0.5. The latest version is still undergoing changes and is not yet released. @@ -12,6 +12,6 @@ Version history:
  • 0.2 March 2021
  • 0.3 August 2021
  • 0.4 February 2022
  • -
  • 0.5 November 2024
  • +
  • 0.5 November 2024
  • latest
  • From a8e80998e6f1e52ff832b8ca08ecb098b9931227 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 16:09:42 +0100 Subject: [PATCH 29/35] messaging --- specifications/index.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/specifications/index.md b/specifications/index.md index 1ef03002..b33772b6 100644 --- a/specifications/index.md +++ b/specifications/index.md @@ -3,8 +3,6 @@ Specifications The current released version of the OME-Zarr specification is 0.5. -The latest version is still undergoing changes and is not yet released. - Version history:
      From 1457de2c6812169dce00c072f259a305277ead31 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 16:17:10 +0100 Subject: [PATCH 30/35] local boilerplate? --- 0.5/index.bs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/0.5/index.bs b/0.5/index.bs index d8bc1a3c..05f0c26f 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -8,8 +8,7 @@ URL: https://ngff.openmicroscopy.org/0.5/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff Logo: http://www.openmicroscopy.org/img/logos/ome-logomark.svg -Local Boilerplate: header yes -Local Boilerplate: copyright yes +Local Boilerplate: header yes, copyright yes Boilerplate: style-darkmode off Markup Shorthands: markdown yes Editor: Josh Moore, German BioImaging e.V., https://gerbi-gmb.de/, https://orcid.org/0000-0003-4028-811X From 8fd6a5d1b215fdaf81b690e742458261a8b544ee Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 16:19:45 +0100 Subject: [PATCH 31/35] fix bikeshed includes --- 0.1/index.bs | 3 +-- 0.2/index.bs | 3 +-- 0.3/index.bs | 3 +-- 0.4/index.bs | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/0.1/index.bs b/0.1/index.bs index 0401627d..1e7fe1e2 100644 --- a/0.1/index.bs +++ b/0.1/index.bs @@ -8,8 +8,7 @@ URL: https://ngff.openmicroscopy.org/0.1/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff Logo: http://www.openmicroscopy.org/img/logos/ome-logomark.svg -Local Boilerplate: header yes -Local Boilerplate: copyright yes +Local Boilerplate: header yes, copyright yes Boilerplate: style-darkmode off Markup Shorthands: markdown yes Editor: Josh Moore, Open Microscopy Environment (OME) https://www.openmicroscopy.org diff --git a/0.2/index.bs b/0.2/index.bs index 31d9eb60..960f38ee 100644 --- a/0.2/index.bs +++ b/0.2/index.bs @@ -8,8 +8,7 @@ URL: https://ngff.openmicroscopy.org/0.2/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff Logo: http://www.openmicroscopy.org/img/logos/ome-logomark.svg -Local Boilerplate: header yes -Local Boilerplate: copyright yes +Local Boilerplate: header yes, copyright yes Boilerplate: style-darkmode off Markup Shorthands: markdown yes Editor: Josh Moore, Open Microscopy Environment (OME) https://www.openmicroscopy.org diff --git a/0.3/index.bs b/0.3/index.bs index 4d01d658..f8b3550e 100644 --- a/0.3/index.bs +++ b/0.3/index.bs @@ -8,8 +8,7 @@ URL: https://ngff.openmicroscopy.org/0.3/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff Logo: http://www.openmicroscopy.org/img/logos/ome-logomark.svg -Local Boilerplate: header yes -Local Boilerplate: copyright yes +Local Boilerplate: header yes, copyright yes Boilerplate: style-darkmode off Markup Shorthands: markdown yes Editor: Josh Moore, Open Microscopy Environment (OME) https://www.openmicroscopy.org diff --git a/0.4/index.bs b/0.4/index.bs index c108c477..04f5bfb6 100644 --- a/0.4/index.bs +++ b/0.4/index.bs @@ -8,8 +8,7 @@ URL: https://ngff.openmicroscopy.org/0.4/ Repository: https://github.com/ome/ngff Issue Tracking: Forums https://forum.image.sc/tag/ome-ngff Logo: http://www.openmicroscopy.org/img/logos/ome-logomark.svg -Local Boilerplate: header yes -Local Boilerplate: copyright yes +Local Boilerplate: header yes, copyright yes Boilerplate: style-darkmode off Markup Shorthands: markdown yes Editor: Josh Moore, University of Dundee (UoD) https://www.dundee.ac.uk, https://orcid.org/0000-0003-4028-811X From e1818bdbd66996f721cf6e79af34bc1658623e40 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 16:23:05 +0100 Subject: [PATCH 32/35] add header.include --- 0.3/header.include | 34 ++++++++++++++++++++++++++++++++++ 0.4/header.include | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 0.3/header.include create mode 100644 0.4/header.include diff --git a/0.3/header.include b/0.3/header.include new file mode 100644 index 00000000..e98bf6fe --- /dev/null +++ b/0.3/header.include @@ -0,0 +1,34 @@ + + + + + + [TITLE] + + + +
      + + + OME logo (6 circles in a hexagon) + +

      [TITLE]

      +

      [LONGSTATUS], +

      +
      +
      + +
      +
      + +
      + +

      Status of this document

      +
      +
      + + +
      diff --git a/0.4/header.include b/0.4/header.include new file mode 100644 index 00000000..e98bf6fe --- /dev/null +++ b/0.4/header.include @@ -0,0 +1,34 @@ + + + + + + [TITLE] + + + +
      + + + OME logo (6 circles in a hexagon) + +

      [TITLE]

      +

      [LONGSTATUS], +

      +
      +
      + +
      +
      + +
      + +

      Status of this document

      +
      +
      + + +
      From 3a23c79a5e731876a70408141cbf467415cb0e63 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Thu, 21 Nov 2024 17:01:47 +0100 Subject: [PATCH 33/35] 0.5 status -> final --- 0.5/index.bs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/0.5/index.bs b/0.5/index.bs index 05f0c26f..5891b18d 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -2,7 +2,7 @@ Title: OME-Zarr specification Shortname: ome-zarr Level: 1 -Status: w3c/ED +Status: w3c/CG-FINAL TR: https://ngff.openmicroscopy.org/0.5/ URL: https://ngff.openmicroscopy.org/0.5/ Repository: https://github.com/ome/ngff @@ -16,8 +16,7 @@ Text Macro: NGFFVERSION 0.5 Abstract: This document contains next-generation file format (NGFF) Abstract: specifications for storing bioimaging data in the cloud. Abstract: All specifications are submitted to the https://image.sc community for review. -Status Text: The current released version of this specification is -Status Text: 0.5. Migration scripts +Status Text: The current released version of this specification is 0.5. Migration scripts Status Text: will be provided between numbered versions. Data written with these latest changes Status Text: (an "editor's draft") will not necessarily be supported.
    From 6c430a1c58fdffe2439103a8c74c1cd5598be540 Mon Sep 17 00:00:00 2001 From: Jan Eglinger Date: Thu, 21 Nov 2024 11:01:45 +0100 Subject: [PATCH 34/35] Clarify: other axis type values should be strings --- 0.4/index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0.4/index.bs b/0.4/index.bs index 04f5bfb6..98db1b16 100644 --- a/0.4/index.bs +++ b/0.4/index.bs @@ -239,7 +239,7 @@ keys as specified below for discovering certain types of data, especially images "axes" describes the dimensions of a physical coordinate space. It is a list 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. -- SHOULD contain the field "type". It SHOULD be one of "space", "time" or "channel", but MAY take other values for custom axis types that are not part of this specification yet. +- SHOULD contain the field "type". It SHOULD be one of "space", "time" or "channel", but MAY take other string values for custom axis types that are not part of this specification yet. - SHOULD contain the field "unit" to specify the physical unit of this dimension. The value SHOULD be one of the following strings, which are valid units according to UDUNITS-2. - Units for "space" axes: 'angstrom', 'attometer', 'centimeter', 'decimeter', 'exameter', 'femtometer', 'foot', 'gigameter', 'hectometer', 'inch', 'kilometer', 'megameter', 'meter', 'micrometer', 'mile', 'millimeter', 'nanometer', 'parsec', 'petameter', 'picometer', 'terameter', 'yard', 'yoctometer', 'yottameter', 'zeptometer', 'zettameter' - Units for "time" axes: 'attosecond', 'centisecond', 'day', 'decisecond', 'exasecond', 'femtosecond', 'gigasecond', 'hectosecond', 'hour', 'kilosecond', 'megasecond', 'microsecond', 'millisecond', 'minute', 'nanosecond', 'petasecond', 'picosecond', 'second', 'terasecond', 'yoctosecond', 'yottasecond', 'zeptosecond', 'zettasecond' From d3e1fb82260bbb3a3d929ca0d549975bbf63767b Mon Sep 17 00:00:00 2001 From: Josh Moore Date: Fri, 22 Nov 2024 01:02:55 +0100 Subject: [PATCH 35/35] Apply change from gh-270 to 0.5 --- 0.5/index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0.5/index.bs b/0.5/index.bs index 5891b18d..3f326ffa 100644 --- a/0.5/index.bs +++ b/0.5/index.bs @@ -181,7 +181,7 @@ The OME-Zarr Metadata version MUST be consistent within a hierarchy. "axes" describes the dimensions of a physical coordinate space. It is a list 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. -- SHOULD contain the field "type". It SHOULD be one of "space", "time" or "channel", but MAY take other values for custom axis types that are not part of this specification yet. +- SHOULD contain the field "type". It SHOULD be one of "space", "time" or "channel", but MAY take other string values for custom axis types that are not part of this specification yet. - SHOULD contain the field "unit" to specify the physical unit of this dimension. The value SHOULD be one of the following strings, which are valid units according to UDUNITS-2. - Units for "space" axes: 'angstrom', 'attometer', 'centimeter', 'decimeter', 'exameter', 'femtometer', 'foot', 'gigameter', 'hectometer', 'inch', 'kilometer', 'megameter', 'meter', 'micrometer', 'mile', 'millimeter', 'nanometer', 'parsec', 'petameter', 'picometer', 'terameter', 'yard', 'yoctometer', 'yottameter', 'zeptometer', 'zettameter' - Units for "time" axes: 'attosecond', 'centisecond', 'day', 'decisecond', 'exasecond', 'femtosecond', 'gigasecond', 'hectosecond', 'hour', 'kilosecond', 'megasecond', 'microsecond', 'millisecond', 'minute', 'nanosecond', 'petasecond', 'picosecond', 'second', 'terasecond', 'yoctosecond', 'yottasecond', 'zeptosecond', 'zettasecond'