Skip to content

Port RFC5 updated proposal to ngff-spec#67

Merged
joshmoore merged 54 commits intoome:mainfrom
jo-mueller:update-RFC5
Feb 20, 2026
Merged

Port RFC5 updated proposal to ngff-spec#67
joshmoore merged 54 commits intoome:mainfrom
jo-mueller:update-RFC5

Conversation

@jo-mueller
Copy link
Copy Markdown
Contributor

@jo-mueller jo-mueller commented Jan 15, 2026

This is the PR following up to ome/ngff#389.

This PR

  • inserts the proposed text into the full spec document
  • makes sure that the correct formatting and cross-referencing is used
  • adds some more examples to the transformations
  • update and add new schemas
  • adds a summary of changes to the changelog
  • add scene example metadata

PRs to merge first:

@github-actions
Copy link
Copy Markdown

Automated Review URLs

@jo-mueller
Copy link
Copy Markdown
Contributor Author

@dstansby updated the schemas! Could I ask you to have a swift look if something strikes you as off?

@dstansby
Copy link
Copy Markdown
Contributor

I had a look, and I'm struggling to read the schemas by eye, and the rendering doesn't look so nice either (https://ngff-spec--67.org.readthedocs.build/en/67/schemas/scene/, https://ngff-spec--67.org.readthedocs.build/en/67/schemas/coordinate-transformations/, https://ngff-spec--67.org.readthedocs.build/en/67/schemas/coordinate-systems/)

Perhaps a better test than manual review is checking that the examples all validate correctly using the schemas?

@jo-mueller
Copy link
Copy Markdown
Contributor Author

jo-mueller commented Jan 19, 2026

and I'm struggling to read the schemas by eye

I feel you 🙄

and the rendering doesn't look so nice either

Tbf, it doesn't look very different from the rendering on the current main. I think it's getting especially nasty for the OneOf of AllOf clauses in the schema, but I'm afraid the rendering is what it is. We were thinking about experimenting with LinkML for the schemas (maybe these render nicer?) but that's a different discussion.

But you're right about the validator - I guess the easiest thing is then to create fork of the validator, point it to this branch for the schemas and check the examples 👍 OR simply copy some of the examples to the testing CI in here.

Copy link
Copy Markdown
Contributor

@dstansby dstansby left a comment

Choose a reason for hiding this comment

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

I had more of a look at the RTD build, and some initial comments:

There's "Coordinate systems" and "Coordinate systems and transforms" pages, which seems confusing (duplication of coordinate systems):
Screenshot 2026-01-19 at 10 11 36

I don't understand why coordinate systems and transformations are in the same schema, wouldn't it be much cleaner to have them in separate schemas?

On a similar theme, it would be much nicer to have all the different transforms as their own schema that are then referenced by other schemas. It would incraese the number of schema files, but make it much easier to find a given transformation for example.

@jo-mueller
Copy link
Copy Markdown
Contributor Author

There's "Coordinate systems" and "Coordinate systems and transforms" pages, which seems confusing (duplication of coordinate systems):

I think that's a legacy thing. They maybe used to be but the schemas are separated as you suggest. It was just that the title of the coordinate transformations schema file was still "coordinate systems and transformations" - I changed it, should be fixed now.

On a similar theme, it would be much nicer to have all the different transforms as their own schema that are then referenced by other schemas. It would incraese the number of schema files, but make it much easier to find a given transformation for example.

Agree! Makes total sense and can do.

@jo-mueller
Copy link
Copy Markdown
Contributor Author

@dstansby found it! The failing example (byDImension.json) used an array coordinate system, which hsa two axes of "type": "array". The coordinate system schema requires at least two spatial axes though. I need to check whether that's actually enforced by the spec.

Otherwise, axes MUST have two or three spatial axes, which is forbidden for multiscales coordinate systems
@dstansby
Copy link
Copy Markdown
Contributor

At https://ngff.openmicroscopy.org/rfc/5/responses/2/index.html#change-bydimension-convention it says:

Outcome: It was agreed to change the byDimension convention to align with other transformations. The updated metadata layout is as follows:

{
  "type": "byDimension",
  "input": "high_dimensional_coordinatesystem_A",
  "output": "high_dimensional_coordinatesystem_B", 
  "transformations": [
    {
      "input_axes": [0, 1],
      "output_axes": [0, 1],
      "transformation": {
        "type": "scale",
        "scale": [0.5, 0.5]
      }
      
    },
    {
      "input_axes": [2],
      "output_axes": [2],
      "transformation": {
        "type": "translation",
        "translation": [10.0]
      }
    }
  ]
}

On the latest RTD build of this PR, the spec doesn't seem to have been updated to reflect this: https://ngff-spec--67.org.readthedocs.build/en/67/#bydimension, and at least the first example does not align with the above example JSON from the review:

{
  "coordinateSystems": [
    { "name": "in", "axes": [ {"name": "j"}, {"name": "i"} ] },
    { "name": "out", "axes": [ {"name": "y"}, {"name": "x"} ] }
  ],
  "coordinateTransformations": [
    {
      "type": "byDimension",
      "input": "in",
      "output": "out",
      "transformations": [
        {
          "type": "translation",
          "translation": [-1.0],
          "input_axes": [1],
          "output_axes": [1]
        },
        {
          "type": "scale",
          "scale": [2.0],
          "input_axes": [0],
          "output_axes": [0]
        }
      ]
    }
  ]
}

@jo-mueller is this something that still needs fixing here?

@jo-mueller
Copy link
Copy Markdown
Contributor Author

@dstansby thanks a lot for the extra look, this was indeed incorrect...talk about not seeing the forest for trees anymore 🙄 I also adjusted the schemas and examples for the CI accordingly.

@imagesc-bot
Copy link
Copy Markdown

This pull request has been mentioned on Image.sc Forum. There might be relevant details there:

https://forum.image.sc/t/how-to-build-hcs-zarrs-with-multiple-image-types-per-fov/119329/9

Comment thread index.md Outdated
jo-mueller and others added 3 commits February 20, 2026 09:07
@joshmoore
Copy link
Copy Markdown
Member

Got an additional 👍 from @clbarnes. Merging to let @jo-mueller announce as appropriate.

@joshmoore joshmoore merged commit ea5a6d8 into ome:main Feb 20, 2026
4 checks passed
@github-project-automation github-project-automation Bot moved this from In progress to Done in RSE-Unit Feb 20, 2026
@jo-mueller jo-mueller deleted the update-RFC5 branch February 25, 2026 07:56
@imagesc-bot
Copy link
Copy Markdown

This pull request has been mentioned on Image.sc Forum. There might be relevant details there:

https://forum.image.sc/t/ngff-weekly-dev-update-thread/110810/69

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants