Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ngff tools table #139

Closed
wants to merge 30 commits into from
Closed

Ngff tools table #139

wants to merge 30 commits into from

Conversation

will-moore
Copy link
Member

@will-moore will-moore commented Sep 29, 2022

Started to look again at #71

View page at https://github.com/will-moore/ngff/blob/ngff_tools_table/ngff-tools.md

Aims of this table/documentation:

  • Allow data producers and consumers to know whether a particular feature is supported in their viewer of choice
  • Document the various viewers available that support OME-NGFF
  • Link to sample data that can be used for testing a particular feature - NB: some overlap here with https://idr.github.io/ome-ngff-samples/

Created a top-level ngff-tools.md page.
Tried tables (duplicates) in markdown format or html.
The current table is for "viewers" but I think we could possibly list other tools for producing OME-NGFF too (bioformats2raw, ome-ngff, omero-cli-zarr etc).

First questions:

  • Is this a suitable location and page format?
  • Prefer tables in markdown, but with data in a different file (e.g. yaml or csv) - but how & where to build/publish etc?
  • Also I think that the last table with the axes switched works better since it allows lots of features (rows) and we don't need so many columns (tools)
  • FYI: compare with web browser support of various JS/HTML/CSS features, with 1 table per feature: e.g. https://caniuse.com/arrow-functions
  • Other viewers to include?

cc @manzt @constantinpape @joshmoore @sbesson

@github-actions
Copy link
Contributor

github-actions bot commented Sep 29, 2022

Automated Review URLs

@joshmoore
Copy link
Member

joshmoore commented Sep 30, 2022

  • Is this a suitable location and page format?

I think we are approaching the point (see also #140) where we need to decide if everything is going into the spec page or if we're going to host one or more additional sites. If so, then we should gather thoughts (like https://ome.github.io/ngff)

  • Prefer tables in markdown or html? I think I prefer html: easier to manage with more complex tables

If we end up using markdown, then I'd suggest a data file (like in yaml)

  • Other viewers to include?
  • neuroglancer
  • webknossos
  • VTK

@sbesson
Copy link
Member

sbesson commented Sep 30, 2022

I think we are approaching the point (see also #140) where we need to decide if everything is going into the spec page or if we're going to host one or more additional sites. If so, then we should gather thoughts (like https://ome.github.io/ngff)

This also echoes some of the questions I raised in #138 (review) re hosting and maintaining different but complementary types of documentation.

@thewtex
Copy link
Contributor

thewtex commented Oct 5, 2022

Could we also add itkwidgets? The current values are:

      <td><a href="(https://itkwidgets.readthedocs.io/en/latest">itkwidgets</a></td>
      <td>y</td>
      <td><a href="https://github.com/InsightSoftwareConsortium/itkwidgets/issues/546">n</a></td>
      <td>y</td>
      <td>y</td>
      <td>y</td>
      <td>y</td>
      <td<a href="https://github.com/InsightSoftwareConsortium/itkwidgets/issues/547">n</a>></td>
      <td>n</td>
      <td>n</td>

Also add a column for v0.4 metadata?

@jburel
Copy link
Member

jburel commented Oct 6, 2022

I had an issue while testing the itkwidgets in a conda env on Mac M1 See InsightSoftwareConsortium/itkwidgets#548

@normanrz
Copy link
Contributor

normanrz commented Oct 6, 2022

For webKnossos:

      <td><a href="https://webknossos.org">webKnossos</a></td>
      <td>y</td>
      <td>n</td>
      <td>y</td>
      <td>y</td>
      <td>y</td>
      <td>y</td>
      <td>y</td>
      <td>n</td>
      <td>n</td>

We also maintain the webknossos Python package that can be used to create, downsample, compress, rechunk OME-NGFF datasets.

@will-moore
Copy link
Member Author

Thanks @normanrz - I've been playing with webknosses for the first time, importing an OME-NGFF image from https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.4/idr0062A/6001240.zarr, which is a 2-channel image with labels. But I can only see the first channel imported into webknosses. Is there a way to import multiple layers from the one source?

@normanrz
Copy link
Contributor

normanrz commented Oct 7, 2022

Hey @will-moore, so far we only support single-channel images, but support for multi-channel is coming next month. Labels should work. Perhaps you're running into a bug here. I'll investigate.

@thewtex
Copy link
Contributor

thewtex commented Oct 10, 2022

I had an issue while testing the itkwidgets in a conda env on Mac M1 See InsightSoftwareConsortium/itkwidgets#548

Thanks for the report. I followed up there. Here is what I get on my Mac M1:

OME-NGFF-Bra.-.JupyterLab.webm

itkwidgets 1.X is built around OME-NGFF. But, maybe we should clarify:

<td><a href="(https://itkwidgets.readthedocs.io/en/latest">itkwidgets 1.X</a></td>

@will-moore
Copy link
Member Author

@normanrz Thanks. Here's another I tried - I wanted to see if the coordinateTransformations translate was read by webknosses. Here's the image url or you can see it validates in ome-ngff-validator and it is viewable in vizarr.

The response in exploreRemote POST included:

Error when reading https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.4/idr0101A/13457537.zarr as OME NGFF Zarr v0.4: Failed to read OME NGFF header at https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.4/idr0101A/13457537.zarr/.zattrs <~ Failed to validate json against data schema <~ Validating Json Failed: {\"obj.multiscales[0].datasets[0].coordinateTransformations[1].scale\":[{\"msg\":[\"error.path.missing\"],\"args\":[]}]}

The obj.multiscales[0].datasets[0].coordinateTransformations[1] doesn't contain scale since it is

"translation" : {"0": 0 , "1": 0 , "2": 1.2 , "3": 52.109135 , "4": 60.88427} ,
"type": "translation"

@normanrz
Copy link
Contributor

Thanks for testing these different samples!
It is true, that we don't support translation yet. It is not straightforward to implement in our current architecture, but we'll get back to it once we implement more advanced transformations in webKnossos next year.
This particular dataset is interesting, because only one of the multiscales contains a translation. What would be the semantics of that?

@will-moore
Copy link
Member Author

Ah, yes - that was just me manually editing the .zattrs to add translation, and I only did it for one dataset. So I might expect it to show up strangely in any viewer that is reading all of the coordinateTransformations.
In ome-zarr-py (for reading in napari-ome-zarr) we only read the translate for the first dataset and the others are ignored so I didn't need/bother to add it for testing that.

ngff-tools.md Outdated
<td>n</td>
<td>?</td>
<td>y (scale)</td>
<td>y (scale)</td>
Copy link
Member

Choose a reason for hiding this comment

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

This line, which says webknossos opens ? should say something like

errors for the first image (with scale and transform)
opens for the second image (with only scale)

This invites a split of this line into the first image (scale & transform) and the second image (scale).

We also need a better expression for the n which at present means "does not support the feature which the particular image is trying to highlight, it opens the image but ignores the feature".

@jburel
Copy link
Member

jburel commented Oct 26, 2022

We should also probably consider expanding https://idr.github.io/ome-ngff-samples/ and add the viewers icons to that table too

@will-moore
Copy link
Member Author

@jburel What do you mean "add the viewers icons to that table"? There are icons (links) for vizarr and itk-viewer where we have useful links. But we don't have links for the other viewers. So there's no meaning to icons for them either?

@will-moore
Copy link
Member Author

@pwalczysko A support table like at https://caniuse.com/dialog is quite nice & contains extra info as we were discussing - mousing over each table cell gives a popup with more info, and mousing over the foot-notes highlights the relevant table cells (and vice versa).

@jburel
Copy link
Member

jburel commented Oct 26, 2022

What I mean is that if for example it is supported in Mobie, we could add the mobie icon and link to either the guide or an example script.
It will not launch the viewer necessarily. As it stands it might be interpreted as the list of the viewers capable of opening such file which is obviously not the case.

@will-moore will-moore force-pushed the ngff_tools_table branch 2 times, most recently from 04af053 to f269620 Compare October 27, 2022 14:54
@will-moore
Copy link
Member Author

We have done a bunch of testing and it's time to update the table but...

So this really needs to be somewhere it can be deployed.
Options:

  • This repo: I don't know how to deploy this with gh-pages, since that is what already handles the bikeshed build etc.
  • https://github.com/IDR/ome-ngff-samples/ - This is also kinda painful to preview any builds with jekyll, and isn't really the right place
  • https://github.com/ome/ome-ngff-validator - This has great preview builds via netlify, but is also probably not the right place
  • A new repo! E.g. ome/ome-ngff-tools (since we might also want to list creation/validation tools as well as viewers)

This decision is really a blocker at the moment, so to make progress I might just create a new repo or pick one of those above in the absence of any other decision...

@joshmoore
Copy link
Member

Thanks to everyone for all the contributions here! It was exciting to catch up on all the back and forth. Just a heads up that we decided today to migrate this work to its own repo so that we have more control over the rendering of the various cells. Hopefully that will also attract others to participate as well!

🙌🏽

@will-moore
Copy link
Member Author

@joshmoore Moved to
https://will-moore.github.io/ome-ngff-tools/ (work in progress - old table still there for now for comparison)
built from yaml at
https://github.com/will-moore/ome-ngff-tools/blob/main/docs/_data/features.yml

@joshmoore
Copy link
Member

built from yaml at
https://github.com/will-moore/ome-ngff-tools/blob/main/docs/_data/features.yml

❤️ Hugely readable.

@jburel
Copy link
Member

jburel commented Nov 1, 2022

nice

@will-moore
Copy link
Member Author

So the table at https://will-moore.github.io/ome-ngff-tools/ is getting mostly complete now, just need to look at neuroglancer...

@jburel @joshmoore next steps? Does the table

  • add neuroglancer
  • fix "units" -> "unit" and re-test
  • get feedback from tool authors to check accuracy / create issues etc.
  • move repo to ome?

@will-moore
Copy link
Member Author

closing this now... but feel free to continue the discussion here...

@will-moore will-moore closed this Nov 2, 2022
@joshmoore
Copy link
Member

move repo to ome?

👍

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.

7 participants