ome / ZarrReader

Other
5 stars 8 forks source link

Update handling and parsing of acquisition metadata #75

Closed dgault closed 3 months ago

dgault commented 8 months ago

This was originally driven by an exception seen in https://github.com/IDR/idr-metadata/issues/683#issuecomment-1884665516

The stack trace is as below and is caused by attempting to cast acquisition start time to String when it should be Integer as per the spec (https://github.com/ome/ngff/blob/main/0.4/schemas/plate.schema#L35)

Caused by: java.lang.ClassCastException: class java.lang.Long cannot be cast to class java.lang.String (java.lang.Long and java.lang.String are in module java.base of loader 'bootstrap')
        at loci.formats.in.ZarrReader.parsePlate(ZarrReader.java:755)
        at loci.formats.in.ZarrReader.initFile(ZarrReader.java:353)
        at loci.formats.FormatReader.setId(FormatReader.java:1443)
        at loci.formats.ImageReader.setId(ImageReader.java:849)
        at ome.io.nio.PixelsService$3.setId(PixelsService.java:869)
        at loci.formats.ReaderWrapper.setId(ReaderWrapper.java:650)
        at loci.formats.ChannelFiller.setId(ChannelFiller.java:234)
        at loci.formats.ReaderWrapper.setId(ReaderWrapper.java:650)
        at loci.formats.ChannelSeparator.setId(ChannelSeparator.java:293)
        at loci.formats.ReaderWrapper.setId(ReaderWrapper.java:650)
        at loci.formats.Memoizer.setId(Memoizer.java:690)
        at ome.io.bioformats.BfPixelsWrapper.<init>(BfPixelsWrapper.java:52)
        at ome.io.bioformats.BfPixelBuffer.reader(BfPixelBuffer.java:73)
        ... 82 common frames omitted

When reviewing the spec for acquisition I have also added parsing for endTime and description as well as setting all of the acquisition values on the metadataStore.

dgault commented 3 months ago

Merging this for release as it has been tested by IDR for a number of months now