Skip to content

Commit da24b78

Browse files
authored
Merge branch 'main' into omero_metadata_optional
2 parents e0c81bc + 983a12e commit da24b78

1 file changed

Lines changed: 51 additions & 52 deletions

File tree

index.md

Lines changed: 51 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Note that the number of dimensions is variable between 2 and 5 and that axis nam
8787
8888
└── labels
8989
90-
├── zarr.json # The labels group is a container which holds a list of labels to make the objects easily discoverable
90+
├── zarr.json # The labels group is a container which holds an array of labels to make the objects easily discoverable
9191
│ # All labels will be listed in `zarr.json` e.g. `{ "labels": [ "original/0" ] }`
9292
│ # Each dimension of the label should be either the same as the
9393
│ # corresponding dimension of the image, or `1` if that dimension of the label
@@ -207,8 +207,8 @@ See the [example below](#spec:example:coordinate_transformation).
207207
`axes` describes the dimensions of a coordinate systems
208208
and adds an interpretation to the samples along that dimension.
209209

210-
It is a list of dictionaries,
211-
where each dictionary describes a dimension (axis) and:
210+
It is an array of objects,
211+
where each object describes a dimension (axis) and:
212212
- MUST contain the field `name` that gives the name for this dimension.
213213
The values MUST be unique across all `name` fields in the same coordinate system.
214214
- SHOULD contain the field `type`.
@@ -381,7 +381,7 @@ Additionally, the logic for finding the Zarr group for each image follows the fo
381381
- Matching `series` metadata (as described next) SHOULD be provided for tools that are unaware of the `plate` specification.
382382
- If the `OME` Zarr group exists, it:
383383
- MAY contain a `series` attribute. If so:
384-
- `series` MUST be a list of string objects, each of which is a path to an image group.
384+
- `series` MUST be an array of string objects, each of which is a path to an image group.
385385
- The order of the paths MUST match the order of the `Image` elements in `OME/METADATA.ome.xml` if provided.
386386
- If the `series` attribute does not exist and no `plate` is present:
387387
- separate `multiscales` images MUST be stored in consecutively numbered groups starting from 0 (i.e. `0/`, `1/`, `2/`, `3/`, ...).
@@ -420,11 +420,11 @@ The following transformations are supported:
420420
|------|--------|-------------|
421421
| [`identity`](#identity-md) | | The identity transformation is the do-nothing transformation and is typically not explicitly defined. |
422422
| [`mapAxis`](#mapaxis-md) | `"mapAxis":List[number]` | an axis permutation as a transpose array of integer indices that refer to the ordering of the axes in the respective coordinate system. |
423-
| [`translation`](#translation-md) | one of:<br>`"translation":List[number]`,<br>`"path":str` | Translation vector, stored either as a list of numbers (`translation`) or as a zarr array at a location in this container (`path`). |
424-
| [`scale`](#scale-md) | one of:<br>`"scale":List[number]`,<br>`"path":str` | Scale vector, stored either as a list of numbers (`scale`) or as a zarr array at a location in this container (`path`). |
423+
| [`translation`](#translation-md) | one of:<br>`"translation":List[number]`,<br>`"path":str` | Translation vector, stored either as an array of numbers (`translation`) or as a zarr array at a location in this container (`path`). |
424+
| [`scale`](#scale-md) | one of:<br>`"scale":List[number]`,<br>`"path":str` | Scale vector, stored either as an array of numbers (`scale`) or as a zarr array at a location in this container (`path`). |
425425
| [`affine`](#affine-md) | one of:<br>`"affine":List[List[number]]`,<br>`"path":str` | 2D affine transformation matrix stored either with JSON (`affine`) or as a zarr array at a location in this container (`path`). |
426426
| [`rotation`](#rotation-md) | one of:<br>`"rotation":List[List[number]]`,<br>`"path":str` | 2D rotation transformation matrix stored as an array stored either with json (`rotation`) or as a zarr array at a location in this container (`path`).|
427-
| [`sequence`](#sequence-md) | `"transformations":List[Transformation]` | sequence of transformations. Applying the sequence applies the composition of all transforms in the list, in order. |
427+
| [`sequence`](#sequence-md) | `"transformations":List[Transformation]` | sequence of transformations. Applying the sequence applies the composition of all transforms in the array, in order. |
428428
| [`displacements`](#coordinates-displacements-md) | `"path":str`<br>`"interpolation":str` | Displacement field transformation located at `path`. |
429429
| [`coordinates`](#coordinates-displacements-md) | `"path":str`<br>`"interpolation":str` | Coordinate field transformation located at `path`. |
430430
| [`inverseOf`](#inverseof-md) | `"transformation":Transformation` | The inverse of a transformation. Useful if a transform is not closed-form invertible. See forward and inverse of [bijections](#bijection-md) for details and examples. |
@@ -477,8 +477,8 @@ Coordinate transformations can be stored in multiple places to reflect different
477477
- Transformations in individual multiscale datasets represent a special case of transformations
478478
and are explained [below](#multiscales-md).
479479
- Additional transformations for single multiscale images MUST be stored under a field `coordinateTransformations`
480-
in the multiscales dictionaries.
481-
This `coordinateTransformations` field MUST contain a list of valid [transformations](#trafo-types-md).
480+
in the multiscales objects.
481+
This `coordinateTransformations` field MUST contain an array of valid [transformations](#trafo-types-md).
482482
- Transformations between two or more images MUST be stored in the attributes of a parent zarr group.
483483
For transformations that store data or parameters in a zarr array,
484484
those zarr arrays SHOULD be stored in a zarr group called `coordinateTransformations`.
@@ -579,7 +579,7 @@ Most coordinate transformations MUST specify their input and output coordinate s
579579
using `input` and `output` with a string value
580580
that MUST correspond to the name of a coordinate system or the path to a multiscales group.
581581
Exceptions are if the coordinate transformation is wrapped in another transformation,
582-
e.g. as part of a `transformations` list of a `sequence` or
582+
e.g. as part of a `transformations` array of a `sequence` or
583583
as `transformation` of an `inverseOf` transformation.
584584
In these two cases input and output could, in some cases, be omitted (see below for details).
585585
If unused, the `input` and `output` fields MAY be null.
@@ -788,8 +788,8 @@ The `input` and `output` fields MAY be omitted if wrapped in another transformat
788788
The array at this path MUST be 1D, and its length MUST be `N`.
789789

790790
<strong>translation</strong>
791-
: The translation parameters stored as a JSON list of numbers.
792-
The list MUST have length `N`.
791+
: The translation parameters stored as a JSON array of numbers.
792+
The array MUST have length `N`.
793793

794794
:::{dropdown} Example
795795
:animate: fade-in
@@ -824,8 +824,8 @@ The `input` and `output` fields MAY be omitted if wrapped in another transformat
824824
The array at this path MUST be 1D, and its length MUST be `N`.
825825

826826
<strong>scale</strong>
827-
: The scale parameters are stored as a JSON list of numbers.
828-
The list MUST have length `N`.
827+
: The scale parameters are stored as a JSON array of numbers.
828+
The array MUST have length `N`.
829829

830830
:::{dropdown} Example 1
831831
:animate: fade-in
@@ -1025,7 +1025,7 @@ A `sequence` transformation consists of an ordered array of coordinate transform
10251025
and is invertible if every coordinate transform in the array is invertible
10261026
(though could be invertible in other cases as well).
10271027
To apply a sequence transformation to a point in the input coordinate system,
1028-
apply the first transformation in the list of transformations.
1028+
apply the first transformation in the array of transformations.
10291029
Next, apply the second transformation to the result.
10301030
Repeat until every transformation has been applied.
10311031
The output of the last transformation is the result of the sequence.
@@ -1039,7 +1039,7 @@ The `input` and `output` fields MUST be included for sequence transformations.
10391039
:::{note}
10401040

10411041
Considering transformations as functions of points,
1042-
if the list contains transformations `[f0, f1, f2]` in that order,
1042+
if the array contains transformations `[f0, f1, f2]` in that order,
10431043
applying this sequence to point `x` is equivalent to:
10441044

10451045
```
@@ -1348,7 +1348,7 @@ Another **invalid** `byDimension` transform:
13481348
:language: json
13491349
```
13501350

1351-
This transformation is invalid because the output axis `x` appears in more than one transformation in the `transformations` list.
1351+
This transformation is invalid because the output axis `x` appears in more than one transformation in the `transformations` array.
13521352
:::
13531353

13541354
##### bijection
@@ -1395,9 +1395,9 @@ Here, "image" refers to 2 to 5 dimensional data representing image
13951395
or volumetric data with optional time or channel axes.
13961396
It is stored in a multiple resolution representation.
13971397

1398-
`multiscales` contains a list of dictionaries where each entry describes a multiscale image.
1398+
`multiscales` contains an array of objects where each entry describes a multiscale image.
13991399

1400-
Each `multiscales` dictionary MUST contain the field `coordinateSystems`,
1400+
Each `multiscales` object MUST contain the field `coordinateSystems`,
14011401
whose value is an array containing coordinate system metadata
14021402
(see [coordinate systems](#coordinate-systems-md)).
14031403
The last entry of this array is the "intrinsic" coordinate system
@@ -1416,17 +1416,17 @@ followed by the `channel` or custom axis (if present) and the axes of type `spa
14161416
If there are three spatial axes where two correspond to the image plane (`yx`)
14171417
and images are stacked along the other (anisotropic) axis (`z`),
14181418
the spatial axes SHOULD be ordered as `zyx`.
1419-
Each `multiscales` dictionary MUST contain the field `datasets`,
1420-
which is a list of dictionaries describing the arrays storing the individual resolution levels.
1421-
Each dictionary in `datasets` MUST contain the field `path`,
1419+
Each `multiscales` object MUST contain the field `datasets`,
1420+
which is an array of objects describing the arrays storing the individual resolution levels.
1421+
Each object in `datasets` MUST contain the field `path`,
14221422
whose value is a string containing the path to the Zarr array for this resolution relative to the current Zarr group.
14231423
The `path`s MUST be ordered from largest (i.e. highest resolution) to smallest.
14241424
Every Zarr array referred to by a `path` MUST have the same number of dimensions
14251425
and MUST NOT have more than 5 dimensions.
14261426
The number of dimensions and order MUST correspond to number and order of `axes`.
14271427

1428-
Each dictionary in `datasets` MUST contain the field `coordinateTransformations`,
1429-
whose value is a list of dictionaries that define a transformation
1428+
Each object in `datasets` MUST contain the field `coordinateTransformations`,
1429+
whose value is an array of objects that define a transformation
14301430
that maps Zarr array coordinates for this resolution level to the "intrinsic" coordinate system
14311431
(the last entry of the `coordinateSystems` array).
14321432
The transformation is defined according to [transformations metadata](#trafo-types-md).
@@ -1450,18 +1450,18 @@ This is strongly recommended
14501450
so that the the "intrinsic" coordinate system of the image avoids more complex transformations.
14511451

14521452
If applications require additional transformations,
1453-
each `multiscales` dictionary MAY contain the field `coordinateTransformations`,
1453+
each `multiscales` object MAY contain the field `coordinateTransformations`,
14541454
describing transformations that are applied to all resolution levels in the same manner.
14551455
The value of `input` MUST equal the name of the "intrinsic" coordinate system.
14561456
The value of `output` MUST be the name of the output coordinate System
14571457
which is different from the "intrinsic" coordinate system.
14581458

1459-
Each `multiscales` dictionary SHOULD contain the field `name`.
1459+
Each `multiscales` object SHOULD contain the field `name`.
14601460

1461-
Each `multiscales` dictionary SHOULD contain the field `type`,
1461+
Each `multiscales` object SHOULD contain the field `type`,
14621462
which gives the type of downscaling method used to generate the multiscale image pyramid.
14631463
It SHOULD contain the field `metadata`,
1464-
which contains a dictionary with additional information about the downscaling method.
1464+
which contains a object with additional information about the downscaling method.
14651465

14661466

14671467
:::{dropdown} Example
@@ -1539,7 +1539,6 @@ Each object in `channels` MAY contain the following fields:
15391539
- `end` (float) End of the rendering window.
15401540
- `inverted` (boolean) If true, the rendering of darkest to brightest pixels should be inverted.
15411541

1542-
15431542
### "labels" metadata
15441543
(labels-md)=
15451544

@@ -1628,8 +1627,8 @@ Pixels with a 1 in the Zarr array, which correspond to cellular space, will be d
16281627
For high-content screening datasets,
16291628
the plate layout can be found under the custom attributes of the plate group under the `plate` key in the group-level metadata.
16301629

1631-
The `plate` dictionary MAY contain an `acquisitions` key
1632-
whose value MUST be a list of JSON objects defining the acquisitions for a given plate to which wells can refer to.
1630+
The `plate` object MAY contain an `acquisitions` key
1631+
whose value MUST be an array of JSON objects defining the acquisitions for a given plate to which wells can refer to.
16331632
Each acquisition object MUST contain an `id` key
16341633
whose value MUST be an unique integer identifier greater than or equal to 0 within the context of the plate
16351634
to which fields of view can refer to (see [well metadata](#well-md)).
@@ -1642,52 +1641,52 @@ whose value MUST be a string specifying a description for the acquisition.
16421641
Each acquisition object MAY contain a `starttime` and/or `endtime` key
16431642
whose values MUST be integer epoch timestamps specifying the start and/or end timestamp of the acquisition.
16441643

1645-
The `plate` dictionary MUST contain a `columns` key
1646-
whose value MUST be a list of JSON objects defining the columns of the plate.
1647-
Each column object defines the properties of the column at the index of the object in the list.
1644+
The `plate` object MUST contain a `columns` key
1645+
whose value MUST be an array of JSON objects defining the columns of the plate.
1646+
Each column object defines the properties of the column at the index of the object in the array.
16481647
Each column in the physical plate MUST be defined,
16491648
even if no wells in the column are defined.
16501649
Each column object MUST contain a `name` key whose value is a string specifying the column name.
16511650
The `name` MUST contain only alphanumeric characters,
16521651
MUST be case-sensitive,
1653-
and MUST NOT be a duplicate of any other `name` in the `columns` list.
1652+
and MUST NOT be a duplicate of any other `name` in the `columns` array.
16541653
Care SHOULD be taken to avoid collisions on case-insensitive filesystems
16551654
(e.g. avoid using both `Aa` and `aA`).
16561655

1657-
The `plate` dictionary SHOULD contain a `field_count` key
1656+
The `plate` object SHOULD contain a `field_count` key
16581657
whose value MUST be a positive integer defining the maximum number of fields per view across all wells.
16591658

1660-
The `plate` dictionary SHOULD contain a `name` key
1659+
The `plate` object SHOULD contain a `name` key
16611660
whose value MUST be a string defining the name of the plate.
16621661

1663-
The `plate` dictionary MUST contain a `rows` key
1664-
whose value MUST be a list of JSON objects defining the rows of the plate.
1665-
Each row object defines the properties of the row at the index of the object in the list.
1662+
The `plate` object MUST contain a `rows` key
1663+
whose value MUST be an array of JSON objects defining the rows of the plate.
1664+
Each row object defines the properties of the row at the index of the object in the array.
16661665
Each row in the physical plate MUST be defined,
16671666
even if no wells in the row are defined.
16681667
Each defined row MUST contain a `name` key whose value MUST be a string defining the row name.
16691668
The `name` MUST contain only alphanumeric characters,
16701669
MUST be case-sensitive,
1671-
and MUST NOT be a duplicate of any other `name` in the `rows` list.
1670+
and MUST NOT be a duplicate of any other `name` in the `rows` array.
16721671
Care SHOULD be taken to avoid collisions on case-insensitive filesystems
16731672
(e.g. avoid using both `Aa` and `aA`).
16741673

1675-
The `plate` dictionary MUST contain a `version` key
1674+
The `plate` object MUST contain a `version` key
16761675
whose value MUST be a string specifying the version of the plate specification.
16771676

1678-
The `plate` dictionary MUST contain a `wells` key
1679-
whose value MUST be a list of JSON objects defining the wells of the plate.
1677+
The `plate` object MUST contain a `wells` key
1678+
whose value MUST be an array of JSON objects defining the wells of the plate.
16801679
Each well object MUST contain a `path` key
16811680
whose value MUST be a string specifying the path to the well subgroup.
1682-
The `path` MUST consist of a `name` in the `rows` list,
1681+
The `path` MUST consist of a `name` in the `rows` array,
16831682
a file separator (`/`),
1684-
and a `name` from the `columns` list,
1683+
and a `name` from the `columns` array,
16851684
in that order.
16861685
The `path` MUST NOT contain additional leading or trailing directories.
16871686
Each well object MUST contain both a `rowIndex` key
1688-
whose value MUST be an integer identifying the index into the `rows` list,
1687+
whose value MUST be an integer identifying the index into the `rows` array,
16891688
and a `columnIndex` key
1690-
whose value MUST be an integer identifying the index into the `columns` list.
1689+
whose value MUST be an integer identifying the index into the `columns` array.
16911690
`rowIndex` and `columnIndex` MUST be 0-based.
16921691
The `rowIndex`, `columnIndex`, and `path` MUST all refer to the same row/column pair.
16931692

@@ -1713,16 +1712,16 @@ containing one field of view per acquisition.
17131712
For high-content screening datasets,
17141713
the metadata about all fields of views under a given well can be found under the `well` key in the attributes of the well group.
17151714

1716-
The `well` dictionary MUST contain an `images` key
1717-
whose value MUST be a list of JSON objects specifying all fields of views for a given well.
1715+
The `well` object MUST contain an `images` key
1716+
whose value MUST be an array of JSON objects specifying all fields of views for a given well.
17181717
Each image object MUST contain a `path` key
17191718
whose value MUST be a string specifying the path to the field of view.
1720-
The `path` MUST contain only alphanumeric characters, MUST be case-sensitive, and MUST NOT be a duplicate of any other `path` in the `images` list.
1719+
The `path` MUST contain only alphanumeric characters, MUST be case-sensitive, and MUST NOT be a duplicate of any other `path` in the `images` array.
17211720
If multiple acquisitions were performed in the plate,
17221721
it MUST contain an `acquisition` key whose value MUST be an integer identifying the acquisition
17231722
which MUST match one of the acquisition JSON objects defined in the [plate metadata](#plate-md).
17241723

1725-
The `well` dictionary SHOULD contain a `version` key
1724+
The `well` object SHOULD contain a `version` key
17261725
whose value MUST be a string specifying the version of the well specification.
17271726

17281727
:::{dropdown} Example

0 commit comments

Comments
 (0)