Skip to content

Update BioTek reader to allow brightfield-only plates#303

Merged
sbesson merged 4 commits intoglencoesoftware:masterfrom
melissalinkert:biotek-brightfield-only
Apr 3, 2026
Merged

Update BioTek reader to allow brightfield-only plates#303
sbesson merged 4 commits intoglencoesoftware:masterfrom
melissalinkert:biotek-brightfield-only

Conversation

@melissalinkert
Copy link
Copy Markdown
Member

Includes a test that should fail without the reader change.

Not super well-tested across a variety of real data yet, but shouldn't fail existing tests.

@melissalinkert melissalinkert added this to the 0.12.0 milestone Mar 11, 2026
Copy link
Copy Markdown
Member

@muhanadz muhanadz left a comment

Choose a reason for hiding this comment

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

Using the original data without the PR given me a NullPointerException:

./bioformats2raw-0.11.0/bin/bioformats2raw Plate\ 1/Stitched_3\ -\ Copy/B3_1_Stitched\[A_Blue\]_3_001_1.tif ./pre_pr.zarr
java.lang.NullPointerException
	at com.glencoesoftware.bioformats2raw.BioTekReader$BioTekWell.getFile(BioTekReader.java:1021)
	at com.glencoesoftware.bioformats2raw.BioTekReader.initFile(BioTekReader.java:476)
	at loci.formats.FormatReader.setId(FormatReader.java:1480)
	at loci.formats.ImageReader.setId(ImageReader.java:864)
	at com.glencoesoftware.bioformats2raw.Converter.getBaseReaderClass(Converter.java:3094)
	at com.glencoesoftware.bioformats2raw.Converter.convert(Converter.java:1383)
	at com.glencoesoftware.bioformats2raw.Converter.call(Converter.java:1359)
	at com.glencoesoftware.bioformats2raw.Converter.call(Converter.java:106)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
	at picocli.CommandLine.execute(CommandLine.java:2170)
	at com.glencoesoftware.bioformats2raw.Converter.main(Converter.java:3315)

Running the same command with the build from this PR converts the file as expected:

./bioformats2raw-0.12.0-SNAPSHOT/bin/bioformats2raw Plate\ 1/Stitched_3\ -\ Copy/B3_1_Stitched\[A_Blue\]_3_001_1.tif ./post_pr.zarr

I was then able to import post_pr.zarr to OMERO Plus and display the plate without any issues.

Copy link
Copy Markdown
Member

@erindiel erindiel left a comment

Choose a reason for hiding this comment

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

From @muhanadz 's test above, I agree that the data loads successfully, but it looks like the run name is still Fluorescence. Is it possible to fix that?

Screenshot 2026-03-27 at 1 57 42 PM

@melissalinkert
Copy link
Copy Markdown
Member Author

I think 833cbaf will fix the plate acquisition name, but I now see a weird error when trying to test locally:

2026-03-27 16:45:59,329 [main] WARN  loci.formats.Memoizer - failed to save memo file: <REDACTED>.bfmemo
com.esotericsoftware.kryo.KryoException: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @161b062a
Serialization trace:
file (loci.common.Location)
parent (com.glencoesoftware.bioformats2raw.BioTekReader)
	at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:101)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108)
	at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642)
	at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:70)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108)
	at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:627)
	at loci.formats.Memoizer$KryoDeser.saveReader(Memoizer.java:212)
	at loci.formats.Memoizer.saveMemo(Memoizer.java:1004)
	at loci.formats.Memoizer.setId(Memoizer.java:733)
	at loci.formats.ReaderWrapper.setId(ReaderWrapper.java:692)
	at loci.formats.ChannelSeparator.setId(ChannelSeparator.java:317)
	at com.glencoesoftware.bioformats2raw.Converter.convert(Converter.java:1559)
	at com.glencoesoftware.bioformats2raw.Converter.call(Converter.java:1499)
	at com.glencoesoftware.bioformats2raw.Converter.call(Converter.java:123)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
	at picocli.CommandLine.execute(CommandLine.java:2170)
	at com.glencoesoftware.bioformats2raw.Converter.main(Converter.java:3652)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @161b062a
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
	at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
	at com.esotericsoftware.kryo.serializers.CachedFields.addField(CachedFields.java:123)
	at com.esotericsoftware.kryo.serializers.CachedFields.rebuild(CachedFields.java:99)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.<init>(FieldSerializer.java:82)
	at com.esotericsoftware.kryo.SerializerFactory$FieldSerializerFactory.newSerializer(SerializerFactory.java:124)
	at com.esotericsoftware.kryo.SerializerFactory$FieldSerializerFactory.newSerializer(SerializerFactory.java:108)
	at com.esotericsoftware.kryo.Kryo.newDefaultSerializer(Kryo.java:469)
	at com.esotericsoftware.kryo.Kryo.getDefaultSerializer(Kryo.java:454)
	at com.esotericsoftware.kryo.util.DefaultClassResolver.registerImplicit(DefaultClassResolver.java:89)
	at com.esotericsoftware.kryo.Kryo.getRegistration(Kryo.java:581)
	at com.esotericsoftware.kryo.util.DefaultClassResolver.writeClass(DefaultClassResolver.java:112)
	at com.esotericsoftware.kryo.Kryo.writeClass(Kryo.java:613)
	at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:67)
	... 22 common frames omitted

That's with Java 17, which I was sure I had been using when originally working on this PR. Can investigate further next week.

@melissalinkert
Copy link
Copy Markdown
Member Author

Upon further investigation, the error in #303 (comment) was present before, but does not block conversion. It only looked like a blocking issue at the end of Friday as I was testing with --no-tiles. I can now confirm that 833cbaf does fix the PlateAcquisition name to be Bright-field.

EsotericSoftware/kryo#885 and EsotericSoftware/kryo#859 suggest this is expected behavior, so separately from this PR will need to investigate the workarounds described in those issues.

@melissalinkert melissalinkert requested a review from erindiel March 30, 2026 15:09
@sbesson
Copy link
Copy Markdown
Member

sbesson commented Mar 31, 2026

@melissalinkert does BioRekReader need a similar change as in ome/bioformats#3815 i.e. the private Location internal fields should be replaced by primitive Java types?

@melissalinkert
Copy link
Copy Markdown
Member Author

Good point - ea839e5 fixes the error above when testing locally.

Copy link
Copy Markdown
Member

@sbesson sbesson left a comment

Choose a reason for hiding this comment

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

Running bioformats2raw from version 0.12.0rc2 or from a build against this PR against some of the BioTek fluorescence plate and running a recursive diff between the generated Zarr datasets, I see some minor differences in terms of the metadata e.g.

<     <PlateAcquisition ID="PlateAcquisition:0:0" MaximumFieldCount="3" Name="Fluorescence" StartTime="2023-07-10T10:46:28">
---
>     <PlateAcquisition ID="PlateAcquisition:0:0" MaximumFieldCount="3" Name="Fluorescence" StartTime="2023-07-10T10:47:41">
26c26
<     <AcquisitionDate>2023-07-10T10:46:28</AcquisitionDate>
---
>     <AcquisitionDate>2023-07-10T10:47:41</AcquisitionDate>
29c29
<     <ImagingEnvironment Temperature="25.9" TemperatureUnit="°C"/>
---
>     <ImagingEnvironment Temperature="26.0" TemperatureUnit="°C"/>
65c65
<     <AcquisitionDate>2023-07-10T10:46:28</AcquisitionDate>
---
>     <AcquisitionDate>2023-07-10T10:47:41</AcquisitionDate>
68c68
<     <ImagingEnvironment Temperature="25.9" TemperatureUnit="°C"/>
---
>     <ImagingEnvironment Temperature="26.0" TemperatureUnit="°C"/>
104c104
<     <AcquisitionDate>2023-07-10T10:46:28</AcquisitionDate>
---
>     <AcquisitionDate>2023-07-10T10:47:41</AcquisitionDate>
107c107
<     <ImagingEnvironment Temperature="25.9" TemperatureUnit="°C"/>
---
>     <ImagingEnvironment Temperature="26.0" TemperatureUnit="°C"/>

Is that related to a difference in file ordering?

@melissalinkert
Copy link
Copy Markdown
Member Author

The behavior in #303 (review) is fixed by 13749b2 when testing locally.

@sbesson sbesson self-requested a review March 31, 2026 19:37
@erindiel erindiel requested a review from muhanadz March 31, 2026 20:26
@erindiel
Copy link
Copy Markdown
Member

@muhanadz could you please re-run the conversion and confirm that the PlateAcquisition name is fixed?

Copy link
Copy Markdown
Member

@sbesson sbesson left a comment

Choose a reason for hiding this comment

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

Retested the latest changes using a set of private customer BioTek plates including with 0.12.0-rc2 and with a build of this PR.

The diff between the Zarr datasets generated by different versions of the utility is now reduced to all .zattrs files as the version of Bio-Formats is 8.5.0 since #308. In particular the OME-XML metadata stored as OME/METADATA.ome.xml is identical with and without this PR for all converted fluorescence-only plates.

For the brightfield-only plate, conversion was failing with 0.12.0-rc2 and is successful with this PR. The generated metadata shows a brightfield plate with the RGB channels separated

<?xml version="1.0" encoding="UTF-8"?>
<OME xmlns="http://www.openmicroscopy.org/Schemas/OME/2016-06" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openmicroscopy.org/Schemas/OME/2016-06 http://www.openmicroscopy.org/Schemas/OME/2016-06/ome.xsd">
  <Plate Columns="3" ID="Plate:0" Name="Plate 1" Rows="2">
    <Well Column="2" ID="Well:0:0" Row="1">
      <WellSample ID="WellSample:0:0:0" Index="0">
        <ImageRef ID="Image:0"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:1" Index="1">
        <ImageRef ID="Image:1"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:2" Index="2">
        <ImageRef ID="Image:2"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:3" Index="3">
        <ImageRef ID="Image:3"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:4" Index="4">
        <ImageRef ID="Image:4"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:5" Index="5">
        <ImageRef ID="Image:5"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:6" Index="6">
        <ImageRef ID="Image:6"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:7" Index="7">
        <ImageRef ID="Image:7"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:8" Index="8">
        <ImageRef ID="Image:8"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:9" Index="9">
        <ImageRef ID="Image:9"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:10" Index="10">
        <ImageRef ID="Image:10"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:11" Index="11">
        <ImageRef ID="Image:11"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:12" Index="12">
        <ImageRef ID="Image:12"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:13" Index="13">
        <ImageRef ID="Image:13"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:14" Index="14">
        <ImageRef ID="Image:14"/>
      </WellSample>
      <WellSample ID="WellSample:0:0:15" Index="15">
        <ImageRef ID="Image:15"/>
      </WellSample>
    </Well>
    <PlateAcquisition ID="PlateAcquisition:0:0" MaximumFieldCount="16" Name="Bright-field" StartTime="2026-02-03T12:03:14">
      <WellSampleRef ID="WellSample:0:0:0"/>
      <WellSampleRef ID="WellSample:0:0:1"/>
      <WellSampleRef ID="WellSample:0:0:2"/>
      <WellSampleRef ID="WellSample:0:0:3"/>
      <WellSampleRef ID="WellSample:0:0:4"/>
      <WellSampleRef ID="WellSample:0:0:5"/>
      <WellSampleRef ID="WellSample:0:0:6"/>
      <WellSampleRef ID="WellSample:0:0:7"/>
      <WellSampleRef ID="WellSample:0:0:8"/>
      <WellSampleRef ID="WellSample:0:0:9"/>
      <WellSampleRef ID="WellSample:0:0:10"/>
      <WellSampleRef ID="WellSample:0:0:11"/>
      <WellSampleRef ID="WellSample:0:0:12"/>
      <WellSampleRef ID="WellSample:0:0:13"/>
      <WellSampleRef ID="WellSample:0:0:14"/>
      <WellSampleRef ID="WellSample:0:0:15"/>
    </PlateAcquisition>
  </Plate>
  <Instrument ID="Instrument:0">
    <Detector Gain="2.2" ID="Detector:0:0"/>
    <Objective ID="Objective:0:0" LensNA="0.45" Manufacturer="Olympus" Model="1220517" NominalMagnification="20.0"/>
  </Instrument>
  <Image ID="Image:0" Name="B03 #1">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:0" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:0:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:0:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:0:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:1" Name="B03 #2">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:1" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:1:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:1:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:1:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:2" Name="B03 #3">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:2" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:2:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:2:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:2:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:3" Name="B03 #4">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:3" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:3:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:3:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:3:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:4" Name="B03 #5">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:4" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:4:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:4:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:4:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:5" Name="B03 #6">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:5" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:5:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:5:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:5:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:6" Name="B03 #7">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:6" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:6:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:6:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:6:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:7" Name="B03 #8">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:7" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:7:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:7:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:7:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:8" Name="B03 #9">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:8" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:8:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:8:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:8:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:9" Name="B03 #10">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:9" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:9:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:9:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:9:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:10" Name="B03 #11">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:10" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:10:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:10:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:10:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:11" Name="B03 #12">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:11" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:11:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:11:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:11:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:12" Name="B03 #13">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:12" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:12:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:12:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:12:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:13" Name="B03 #14">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:13" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:13:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:13:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:13:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:14" Name="B03 #15">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:14" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:14:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:14:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:14:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <Image ID="Image:15" Name="B03 #16">
    <AcquisitionDate>2026-02-03T12:03:14</AcquisitionDate>
    <InstrumentRef ID="Instrument:0"/>
    <ObjectiveSettings ID="Objective:0:0"/>
    <ImagingEnvironment Temperature="36.5" TemperatureUnit="°C"/>
    <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:15" Interleaved="false" PhysicalSizeX="0.3488955823293173" PhysicalSizeXUnit="µm" PhysicalSizeY="0.3488955823293173" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1992" SizeY="1992" SizeZ="1" Type="uint16">
      <Channel ID="Channel:15:0" Name="Red" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:15:1" Name="Green" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <Channel ID="Channel:15:2" Name="Blue" SamplesPerPixel="1">
        <DetectorSettings ID="Detector:0:0"/>
        <LightPath/>
      </Channel>
      <MetadataOnly/>
      <Plane TheC="0" TheT="0" TheZ="0"/>
      <Plane TheC="1" TheT="0" TheZ="0"/>
      <Plane TheC="2" TheT="0" TheZ="0"/>
    </Pixels>
  </Image>
  <StructuredAnnotations>
    <XMLAnnotation ID="Annotation:0" Namespace="openmicroscopy.org/OriginalMetadata">
      <Value>
        <OriginalMetadata>
          <Key>Y fields</Key>
          <Value>4</Value>
        </OriginalMetadata>
      </Value>
    </XMLAnnotation>
    <XMLAnnotation ID="Annotation:1" Namespace="openmicroscopy.org/OriginalMetadata">
      <Value>
        <OriginalMetadata>
          <Key>X fields</Key>
          <Value>4</Value>
        </OriginalMetadata>
      </Value>
    </XMLAnnotation>
    <XMLAnnotation ID="Annotation:2" Namespace="openmicroscopy.org/OriginalMetadata">
      <Value>
        <OriginalMetadata>
          <Key>Reverse plate orientation</Key>
          <Value>FALSE</Value>
        </OriginalMetadata>
      </Value>
    </XMLAnnotation>
  </StructuredAnnotations>
</OME>

Finally the four examples of mixed fluorescence/brightfield plates have slight differences in terms of the metadata which boils down to difference start/acquisition times, different detector gain and temperatures and additional Pixels metadata like PhysicalSizeZ/PhysicalSizeZUnit e.g.

72c72
<     <PlateAcquisition ID="PlateAcquisition:0:0" MaximumFieldCount="4" Name="Fluorescence" StartTime="2020-04-10T18:09:47">
---
>     <PlateAcquisition ID="PlateAcquisition:0:0" MaximumFieldCount="4" Name="Fluorescence" StartTime="2020-04-10T18:06:12">
98c98
<     <Detector Gain="22.325" ID="Detector:0:0"/>
---
>     <Detector Gain="15.6" ID="Detector:0:0"/>
102c102
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
105,106c105,106
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:0" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:0" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
243c243
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
246,247c246,247
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:1" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:1" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
384c384
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
387,388c387,388
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:2" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:2" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
525c525
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
528,529c528,529
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:3" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:3" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
666c666
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
669,670c669,670
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:4" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:4" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
807c807
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
810,811c810,811
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:5" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:5" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
948c948
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
951,952c951,952
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:6" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:6" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
1089c1089
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
1092,1093c1092,1093
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:7" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:7" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
1230c1230
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
1233,1234c1233,1234
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:8" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:8" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
1371c1371
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
1374,1375c1374,1375
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:9" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:9" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
1512c1512
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
1515,1516c1515,1516
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:10" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:10" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
1653c1653
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
1656,1657c1656,1657
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:11" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:11" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
1794c1794
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
1797,1798c1797,1798
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:12" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:12" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
1935c1935
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
1938,1939c1938,1939
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:13" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:13" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
2076c2076
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
2079,2080c2079,2080
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:14" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:14" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
2217c2217
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
2220,2221c2220,2221
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:15" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:15" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="6" SizeT="3" SizeX="1224" SizeY="904" SizeZ="6" Type="uint16">
2358c2358
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
2361,2362c2361,2362
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:16" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1224" SizeY="904" SizeZ="1" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:16" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1224" SizeY="904" SizeZ="1" Type="uint16">
2382c2382
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
2385,2386c2385,2386
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:17" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1224" SizeY="904" SizeZ="1" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:17" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1224" SizeY="904" SizeZ="1" Type="uint16">
2406c2406
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
2409,2410c2409,2410
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:18" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1224" SizeY="904" SizeZ="1" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:18" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1224" SizeY="904" SizeZ="1" Type="uint16">
2430c2430
<     <AcquisitionDate>2020-04-10T18:09:47</AcquisitionDate>
---
>     <AcquisitionDate>2020-04-10T18:06:12</AcquisitionDate>
2433,2434c2433,2434
<     <ImagingEnvironment Temperature="37.1" TemperatureUnit="°C"/>
<     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:19" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1224" SizeY="904" SizeZ="1" Type="uint16">
---
>     <ImagingEnvironment Temperature="37.0" TemperatureUnit="°C"/>
>     <Pixels BigEndian="true" DimensionOrder="XYZCT" ID="Pixels:19" Interleaved="false" PhysicalSizeX="1.6119281045751634" PhysicalSizeXUnit="µm" PhysicalSizeY="1.6117256637168142" PhysicalSizeYUnit="µm" PhysicalSizeZ="53.8" PhysicalSizeZUnit="µm" SignificantBits="16" SizeC="3" SizeT="1" SizeX="1224" SizeY="904" SizeZ="1" Type="uint16">

This change is likely to be related to with the plane index sorting in 13749b2. The population of the physical size in Z in particular looks relevant as one of the channels is imaged across multiple Z sections but I could certainly use a second opinion to make sure this is the expectation.

Copy link
Copy Markdown
Member

@muhanadz muhanadz left a comment

Choose a reason for hiding this comment

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

Running the same command with the latest build of this PR:

./bioformats2raw-0.12.0-SNAPSHOT/bin/bioformats2raw Plate\ 1/Stitched_3\ -\ Copy/B3_1_Stitched\[A_Blue\]_3_001_1.tif ./post_pr_2.zarr

Convert correctly and could then be imported with omero-importer-ngff:

Image

Run name is now corrected. LGTM

Copy link
Copy Markdown
Member

@erindiel erindiel left a comment

Choose a reason for hiding this comment

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

Thanks for the latest name change and re-test!

@sbesson sbesson merged commit 5382161 into glencoesoftware:master Apr 3, 2026
4 checks passed
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.

4 participants