Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
397cf85
omero fields optional
will-moore Feb 5, 2026
a5f44f9
Apply suggestion from @jo-mueller
will-moore Feb 5, 2026
390dfb5
Apply suggestion from @jo-mueller
will-moore Feb 5, 2026
e0c81bc
dictionaries renamed to objects
will-moore Feb 5, 2026
da24b78
Merge branch 'main' into omero_metadata_optional
will-moore Feb 5, 2026
4b0582e
Merge branch 'main' into omero_metadata_optional
jo-mueller Feb 10, 2026
e9141d3
Update index.md
jo-mueller Feb 12, 2026
0886492
align schema and spec text
jo-mueller Feb 12, 2026
87b04ae
Merge pull request #1 from jo-mueller/omero_metadata_optional
will-moore Feb 12, 2026
4387a7a
Merge branch 'main' into omero_metadata_optional
jo-mueller Feb 13, 2026
2f449c3
Merge remote-tracking branch 'upstream/main' into omero_metadata_schemas
jo-mueller Feb 13, 2026
03568f4
Merge branch 'omero_metadata_optional' of https://github.com/will-moo…
jo-mueller Feb 13, 2026
1ecf820
chore: json example code style
jo-mueller Feb 13, 2026
16eda06
fix: added missing fields to spec text
jo-mueller Feb 13, 2026
b6d5807
chore: semantic line break and text style
jo-mueller Feb 13, 2026
cd4509b
fix: adding missing `coefficient` to schema
jo-mueller Feb 13, 2026
362a988
test: added test cases
jo-mueller Feb 13, 2026
facbf73
Added note to changelog
jo-mueller Feb 13, 2026
c0c1121
Merge pull request #2 from jo-mueller/omero_metadata_optional
will-moore Mar 3, 2026
20fc097
Merge remote-tracking branch 'origin/main' into omero_metadata_optional
will-moore Mar 3, 2026
96dad79
Merge branch 'main' into omero_metadata_optional
lubianat Mar 4, 2026
3fbe3f0
Merge branch 'main' into omero_metadata_optional
jo-mueller Mar 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 26 additions & 15 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -1332,12 +1332,13 @@ if not datasets:
### "omero" metadata (transitional)
(omero-md)=

[=Transitional=] information specific to the channels of an image and how to render it can be found under the `omero` key in the group-level metadata:
Information specific to the channels of an image and how to render it
can be found under the `omero` key in the group-level metadata (i.e., under `"ome" > "omero"`):

```json
"id": 1, # ID in OMERO
"name": "example.tif", # Name as shown in the UI
"channels": [ # Array matching the c dimension size
"id": 1, // ID in OMERO
"name": "example.tif", // Name as shown in the UI
"channels": [ // Array matching the c dimension size
{
"active": true,
"coefficient": 1,
Expand All @@ -1354,9 +1355,9 @@ if not datasets:
}
],
"rdefs": {
"defaultT": 0, # First timepoint to show the user
"defaultZ": 118, # First Z section to show the user
"model": "color" # "color" or "greyscale"
"defaultT": 0, // First timepoint to show the user
"defaultZ": 118, // First Z section to show the user
"model": "color" // "color" or "greyscale"
}
```

Expand All @@ -1365,14 +1366,24 @@ for more information.

The `omero` metadata is optional, but if present it MUST contain the field `channels`,
which is an array of objects describing the channels of the image.
Each object in `channels` MUST contain the field `color`,
which is a string of 6 hexadecimal digits specifying the color of the channel in RGB format.
Each object in `channels` MUST contain the field `window`,
which is a object describing the windowing of the channel.
The field `window` MUST contain the fields `min` and `max`,
which are the minimum and maximum values of the window, respectively.
It MUST also contain the fields `start` and `end`,
which are the start and end values of the window, respectively.
The `channels` array length SHOULD correspond to the size of the respective channels axis, if present.
Each object in `channels` is optional and MAY contain the following fields:

- `color` (string) String of 6 hexadecimal digits specifying the color of the channel in RGB format.
- `label` (string) Channel name.
- `active` (boolean) Indicates whether the channel should be displayed.
- `coefficient`: (float) Value to multiply the pixel values of the channel by when rendering.
- `family`: (string) Used transfer function family for rendering the channel, e.g. "linear", "log", "gamma".
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is not correct

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we have in the omero rnd: linear, logarithmic, exponential and polynomial.
I believe what you refer as "gamma" will be polynomial.
I would avoid the divergence that we already have at the model level (see comment below)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this originates from a PR of mine to this one. I didn't find these terms (i.e., "family" precisely defined anywhere), so I kept it vague. Would be nice to have this clearly mapped out somewhere, i.e., here :)

- `window` (dictionary) Values describing the windowing of the channel.
If provided, `start` and `end` values MUST be specified.
All values can be floating-point numbers, but will likely be integers for integer pixel types.
- `min` (float) Default setting for lower bound for values of `start` field.
MAY be used by viewers as the lower range of channel sliders.
- `max` (float) Default setting for upper bound for values of `end` field.
MAY be used by viewers as the upper range of channel sliders.
- `start` (float) Start of the rendering window.
- `end` (float) End of the rendering window.
- `inverted` (boolean) If true, the rendering of darkest to brightest pixels should be inverted.

### "labels" metadata
(labels-md)=
Expand Down
10 changes: 7 additions & 3 deletions schemas/image.schema
Original file line number Diff line number Diff line change
Expand Up @@ -212,14 +212,15 @@
},
"required": [
"start",
"min",
"end",
"max"
"end"
]
},
"label": {
"type": "string"
},
"coefficient": {
"type": "number"
},
"family": {
"type": "string"
},
Expand All @@ -228,6 +229,9 @@
},
"active": {
"type": "boolean"
},
"inverted": {
"type": "boolean"
}
}
}
Expand Down
56 changes: 56 additions & 0 deletions tests/attributes/spec/invalid/omero/missing_channels.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"ome": {
"version": "0.6.dev3",
"multiscales": [
{
"coordinateSystems": [
{
"name": "physical",
"axes": [
{
"name": "z",
"type": "space",
"unit": "micrometer"
},
{
"name": "y",
"type": "space",
"unit": "micrometer"
},
{
"name": "x",
"type": "space",
"unit": "micrometer"
}
]
}
],
"datasets": [
{
"path": "s0",
"coordinateTransformations": [
{
"scale": [
1,
1,
1
],
"input": "s0",
"output": "physical",
"type": "scale"
}
]
}
]
}
],
"omero": {
}
},
"_conformance": {
"schema": {
"id": "schemas/image.schema"
},
"valid": false
}
}
94 changes: 94 additions & 0 deletions tests/attributes/spec/invalid/omero/missing_start_end.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
{
"ome": {
"version": "0.6.dev3",
"multiscales": [
{
"coordinateSystems": [
{
"name": "physical",
"axes": [
{
"name": "z",
"type": "space",
"unit": "micrometer"
},
{
"name": "y",
"type": "space",
"unit": "micrometer"
},
{
"name": "x",
"type": "space",
"unit": "micrometer"
}
]
}
],
"datasets": [
{
"path": "s0",
"coordinateTransformations": [
{
"scale": [
1,
1,
1
],
"input": "s0",
"output": "physical",
"type": "scale"
}
]
}
]
}
],
"omero": {
"channels": [
{
"label": "Channel:0",
"color": "#ff0000",
"active": true,
"family": "linear",
"coefficient": 1.0,
"inverted": false,
"window": {
"min": 0,
"max": 255
}
},
{
"label": "Channel:1",
"color": "#00ff00",
"active": true,
"family": "log",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

logarithmic is the term I believe we have for the rendering defi

"coefficient": 0.5,
"inverted": true,
"window": {
"min": 0,
"max": 255
}
},
{
"label": "Channel:2",
"color": "#0000ff",
"active": true,
"family": "gamma",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that does not exist as a mapping family

"coefficient": 2.0,
"inverted": false,
"window": {
"min": 0,
"max": 255
}
}
]
}
},
"_conformance": {
"schema": {
"id": "schemas/image.schema"
},
"valid": false
}
}
99 changes: 99 additions & 0 deletions tests/attributes/spec/valid/omero/full_omero_metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
{
"ome": {
"version": "0.6.dev3",
"multiscales": [
{
"coordinateSystems": [
{
"name": "physical",
"axes": [
{
"name": "z",
"type": "space",
"unit": "micrometer"
},
{
"name": "y",
"type": "space",
"unit": "micrometer"
},
{
"name": "x",
"type": "space",
"unit": "micrometer"
}
]
}
],
"datasets": [
{
"path": "s0",
"coordinateTransformations": [
{
"scale": [
1,
1,
1
],
"input": "s0",
"output": "physical",
"type": "scale"
}
]
}
]
}
],
"omero": {
"channels": [
{
"label": "Channel:0",
"color": "#ff0000",
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the color values shouldn't include the #.
Definition below is:
(string) String of 6 hexadecimal digits specifying the color of the channel in RGB format.

"active": true,
"family": "linear",
"coefficient": 1.0,
"inverted": false,
"window": {
"min": 0,
"start": 100,
"end": 200,
"max": 255
}
},
{
"label": "Channel:1",
"color": "#00ff00",
"active": true,
"family": "log",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

"coefficient": 0.5,
"inverted": true,
"window": {
"min": 0,
"start": 50,
"end": 150,
"max": 255
}
},
{
"label": "Channel:2",
"color": "#0000ff",
"active": true,
"family": "gamma",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

"coefficient": 2.0,
"inverted": false,
"window": {
"min": 0,
"start": 25,
"end": 125,
"max": 255
}
}
]
}
},
"_conformance": {
"schema": {
"id": "schemas/image.schema"
}
}
}
1 change: 1 addition & 0 deletions version_history.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- For detailed set of changes see [complete overview](https://ngff.openmicroscopy.org/rfc/5/responses/2/index.html)
- Updated version keys from `0.6.dev2` to `0.6.dev3` everywhere
- style: Homogeneous use of backticks in spec document
- spec: Released requirements for `omero` metadata in the spec document and in schemas.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should be more explicit and use the term specification


### Removed

Expand Down
Loading