From 9713875e68fa3b95de7990bd010e29ecc82fac02 Mon Sep 17 00:00:00 2001 From: Sebastien Besson Date: Sun, 8 Nov 2020 21:19:26 +0000 Subject: [PATCH] Capture new layout of HCS specification --- spec.md | 115 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 70 insertions(+), 45 deletions(-) diff --git a/spec.md b/spec.md index bd775e9..cdf3e00 100644 --- a/spec.md +++ b/spec.md @@ -67,12 +67,16 @@ multiple levels of resolutions and optionally associated labels. The following layout should describe the hierarchy for a high-content screening dataset. There are exactly four levels of hierarchies above the images: -- the top-level group defines the plate, it MUST implement the plate +- the top-level group defines a single plate and MUST implement the plate specification defined below -- the second group defines all acquisitions performed on a single plate. If +- the second group defines all acquisitions performed on the plate. If only one acquisition was performed, a single group must be used. -- the third group defines all the well rows available for an acquisition -- the fourth group defines all the well columns available for a given well row +- the third group defines all the rows available for an acquisition. The group + name must match the name of one of the row objects defined in the plate + metadata. +- the fourth group defines all the wells available for a given row. The group + name must match the name of one of the columd objects defined in the plate + metadata. The well group MUST implement the well specification defined below - the fifth group defined all the individual fields of views for a given well. The fields of views are images, SHOULD implement the "multiscales" specification, MAY implement the "omero" specification and MAY contain @@ -98,9 +102,9 @@ dataset. There are exactly four levels of hierarchies above the images: │ │ │ │ │ ├── 1 # First column of row A │ │ │ ├── .zgroup - │ │ │ ├── .zattrs + │ │ │ ├── .zattrs # Implements "well" specification │ │ │ │ - │ │ │ ├── Field_1 # First field of view of well A1 + │ │ │ ├── 0 # First field of view of well A1 │ │ │ │ │ │ │ │ │ ├── .zgroup │ │ │ │ ├── .zattrs # Implements "multiscales", "omero" @@ -109,7 +113,7 @@ dataset. There are exactly four levels of hierarchies above the images: │ │ │ │ ├── n │ │ │ │ └── labels │ │ │ ├── ... # Fields of view - │ │ │ └── Field_m + │ │ │ └── m │ │ ├── ... # Columns │ │ └── 12 │ ├── ... # Rows @@ -250,72 +254,93 @@ For high-content screening datasets, the plate layout can be found under the cus
name
A string defining the name of the plate.
-
plateAcquisitions
+
acquisitions
A list of JSON objects defining the acquisitions for a given plate. Each acquisition object MUST contain a `path` key identifying the path - to the acquisition group.
+ to the acquisition subgroup.
rows
-
An integer defining the number of rows i.e. the first dimension of - a two-dimensional array of wells.
-
row_names
-
A list of strings defining the names of the rows
-
rows
-
An integer defining the number of columns i.e. the first dimension of - a two-dimensional array of wells.
-
column_names
-
A list of strings defining the names of the columns
-
images
-
A list of JSON objects defining the images (or well samples) containing in the plate. - Each image object MUST contain a `path` key identifying the path to the - individual image.
+
A list of JSON defining the rows of the plate. Each row object defines + the properties of the row at the index of the object in the list. If + not empty, it MUST contain a `name` key specifying the row name.
+
columns
+
A list of JSON defining the columns of the plate. Each column object + defines the properties of the column at the index of the object in the + list. If not empty, it MUST contain a `name` key specifying the column + name.
+
field_count
+
An integer defining the maximum number of fields per view across all + wells.
+
wells
+
A list of JSON objects defining the wells of the plate. Each well object + MUST contain a `path` key identifying the path to the well subgroup.
-For example the following JSON object encodes a plate with one acquisition and -6 wells containing up to two fields of view each. +For example the following JSON object defines a plate with one acquisition and +6 wells (2 rows and 3 columns), containing up to three fields of view each. ```json -"plate": - { +"plate": { + "acquisitions": [{"path": "0"}], + "columns": [{"name": "1" }, {"name": "2" }, {"name": "3" }], + "field_count": 3, "name": "test", - "rows": 2, - "columns": 3, - "row_names": ["A", "B"], - "column_names": ["1", "2", "3"], - "plateAcquisitions": [ - {"path": "2020-10-10"} - ], - "images": [ + "rows": [{"name": "A" }, {"name": "B" }], + "wells": [ { - "path": "2020-10-10/A/1/Field_1" + "path": "2020-10-10/A/1" }, { - "path": "2020-10-10/A/1/Field_2" + "path": "2020-10-10/A/2" }, { - "path": "2020-10-10/A/2/Field_1" + "path": "2020-10-10/A/3" }, { - "path": "2020-10-10/A/2/Field_2" + "path": "2020-10-10/B/1" }, { - "path": "2020-10-10/A/3/Field_1" + "path": "2020-10-10/B/2" }, { - "path": "2020-10-10/B/1/Field_1" + "path": "2020-10-10/B/3" + } + ] + } +``` + +### "well" metadata + +For high-content screening datasets, 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. + +
+
images
+
A list of JSON objects defining the fields of views for a given well. + Each object MUST contain a `path` key identifying the path to the + field of view.
+
+ +For example the following JSON object defines a well with three fields of +views: + +```json +"well": { + "images": [ + { + "path": "0" }, { - "path": "2020-10-10/B/2/Field_1" + "path": "1" }, { - "path": "2020-10-10/B/3/Field_1" - } + "path": "2" + }, ] } ``` - - | Revision | Date | Description | | ---------- | ------------ | ------------------------------------------ | | 0.1.3-dev5 | TBD. | Add the HCS specification |