-
Notifications
You must be signed in to change notification settings - Fork 47
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
OME-Zarr Support #290
Comments
Couple of initial thoughts. There is not a 1:1 mapping of OME-Zarr to loader. OME-Zarr is a spec that describes how to organize many (zarr) arrays within a hierarchy with associated metadata. The nodes of the hierarchy are all dense array data, but different groups of the hierarchy have different semantics based on the metadata that is present. For example, a HCS plate is a zarr group containing many multiscale arrays (each with We would need some type of reducer to inspect the zarr group and determine what part of OME-Zarr hierarchy it is. The issue is that metadata between formats (OME-TIFF/zarr) is so different, and ultimately doesn't even matter to the loaders. It matters to the application that manages the state for viv. I think before we can move forward, we should try to decouple metadata from the loaders. Loaders (IMO) should just be some in-memory representation of nD arrays (including multi-scale). |
Hmm ok, it sounds then like this issue is pretty deeply linked to the coming development work from #287. We'll have to do some planning once |
TL;DR -- the more we add to viv, the more we are responsible to maintain for library users. Open arrays and determining initial rendering data is very application dependent (see, vitessce -- I'd rather make it super straight forward how to create loaders and what layers use those loaders. |
I don't think I was clear - I was relating this specifically to the push to support |
Is the same not true of OME-XML/OME-TIFF modulo "list of arrays" rather than "hierarchy of arrays"? |
@joshmoore What is the "list of arrays" in the context of OME-TIFF? I thiink to Trevor's point, the flexibility/ease-of-use of zarr has exposed more complicated decisions to developers as he mentioned re: multiscale groups, but I was under the impression that the same thing was in theory possible with a list of OME-TIFF files (i.e Zarr is not necessarily more flexible than TIFF under the current OME model, but just easier to use). Perhaps I am missing the mark of the discussion here, though, in which case I can step back :) Still excited about full OME support in Viv and happy to do what I can to help! |
:) Excited as well, hopefully I'm not missing the point above. From my perspective, there's not too much new in the OME-Zarr spec beyond OME-TIFF. Each OME-TIFF can have an arbitrary number of images (equal to the "series count") and they can have metadata that forms them into more complex structures, e.g. an HCS plate. So I agree with your comments and that is what I was trying to get across, that the two are quite similar. @manzt additionally said that the issue is that the formats were so different, which may be the real breaking point. |
Gotcha @joshmoore - that's part of the reason I opened #336, to start to bring some harmony and cross-format structure to the loading process. |
Totally true. I think the primary tension/issue is that the The The This difference has lead to issues where users expect an TL;DR – My preference is to make a loader just a pixel data source. I'd like to think of a composition-driven API that separates the pixel data from associated metadata that might be in different forms (OME-XML, OME-Zarr This way we can collaborate on creating something akin to the |
This reminds me of napari where the the base contract for a plugin/loader is to always return a list of layers where each layer can also be pyramidal (Personally I'd default to
👍
At least for the OME-variants, I think it'd be fair to say we are working toward a situation where you could assume the metadata from the .zattrs (i.e OME-"JSON") would be a superset of OME-XML and we could convert the latter to the former for the handling of OME-TIFF.
❤️ Happy to get into an ome-zarr-js or whatever it would be called. |
@manzt Perhaps you could add some comments here but it seems like we lack a utility function for making a zarr loader for OME-Zarr. If that is because the spec is not stable, I understand that - this issue will remain open until it is, then, and then we can close it once it is added. Otherwise, I think it would be good to support in Avivator/Viv as well as vizarr.
The text was updated successfully, but these errors were encountered: