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

Add support for OME-Zarr hosted on AWS S3 #25

Merged
merged 7 commits into from
Jun 17, 2024

Conversation

sbesson
Copy link
Member

@sbesson sbesson commented May 17, 2024

This makes a few functional changes on top of #23 allowing the pixel-buffer micro-service to use the ZarrPixelBuffer and access raw data of Zarr and non-Zarr images.

The following changes have been made:

  • the /OMERO/Pixels bean pointing to the removed com.glencoesoftware.omero.ms.image.region.PixelsService implementation and replace by an alias pointing at ZarrPixelsService by default
  • a configuration property is added allowing this pixelservice to be runtime configured - see also Allow the PixelsService to be runtime configured omero-ms-image-region#142
  • the query executed in TileRequestHandler.getPixels is updated to retrieve the additional columns required for the ZarrPixelsService checks i.e. the image externalInfo as well as its format
  • internal-ome.api.IQuery is set to the NoopQueryImpl implemented in omero-ms-core 0.9.0
  • the org.apache.httpcomponent libraries including httpclient are unexcluded. Without this change, when accessing OME-Zarr on S3, the AmazonS3Client constructor would throw an java.lang.NoClassDefFoundError: org/apache/http/conn/routing/HttpRoutePlanner

Testing-wise, a good functional workflow is to deploy an OMERO deployment including this version micro-service with QuPath and our QuPath OMERO.web extension which uses this micro-service for retrieving raw data, in particular for fluorescence data.

  • import a fluorescence image saved as OME-Zarr, hosted on AWS S3 - there are a few examples on our public bucket s3://gs-public-zarr-archive
  • start QuPath and log into OMERO
  • open the fluorescence image, the planes should be loaded and render as expected
Screenshot 2024-05-17 at 10 40 42

/cc @erindiel @melissalinkert

@sbesson sbesson requested a review from chris-allan May 18, 2024 10:08
  This pattern improves the extensibility of the micro-service as extension JARs
  can easily be added to lib/ folder and will be included at restart without the
  requirement to modify the CLASSPATH in the executable
@sbesson sbesson requested a review from kkoz June 4, 2024 08:07
@sbesson
Copy link
Member Author

sbesson commented Jun 4, 2024

Coming back to this in preparation of the upcoming OMERO Plus release, I would suggest the following progression:

  1. perform a first round of code and possibly minimal functional review
  2. integrate this work and have a SNAPSHOT build
  3. schedule a second round of functional review
  4. report any issues and fix as follow-up iterations

For 3., my impression is that our version of the QuPath extension for OMERO is probably the best starting point to start exercising this micro-service. With this PR, the extension should be able to read RGB & fluorescence images imported either in its original acquisition format or converted to OME-Zarr. /cc @melissalinkert @erindiel @heather-ashmore

@kkoz
Copy link
Member

kkoz commented Jun 5, 2024

Code changes look OK to me, but I'll need to get QuPath setup to test.

@kkoz
Copy link
Member

kkoz commented Jun 17, 2024

Tested running QuPath locally with omero plugin v0.4.2-gs against search-test.dev.omero-plus.io. Images loaded as expected.

@sbesson sbesson merged commit 6e15a99 into glencoesoftware:master Jun 17, 2024
3 checks passed
@sbesson sbesson deleted the zarr_s3_support branch June 21, 2024 09:54
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.

2 participants