Release of Bio-Formats 5.3.2

Dear All,

Bio-Formats 5.3.2 is now available for Fiji from the Java 8 update site. If you have previously been using the Bio-Formats 5 update site, you will need to disable that as well as enabling the Java 8 site. This release includes:

  • fixed race condition when opening multiple series from a dataset, as introduced by thumbnail loading changes in 5.3.0
  • updated thumbnail generation to be faster for datasets containing an image pyramid
  • Metamorph: updated to read the refractive index and set RefractiveIndex on ObjectiveSettings in the generated OME-XML (thanks to Marc Bruce)
  • Metamorph TIFF: fixed Z and channel dimension counts when each channel has a unique Z position
  • Metamorph TIFF: updated to read the emission wavelength and set EmissionWavelength on LightSourceSettings in the generated OME-XML
  • fixed incorrect image data when reading of tiles from single channel QuickTime files
  • fixed handling of loci.formats.in.MetadataOptions objects by the loci.formats.FileStitcher reader
  • various documentation improvements

Full details are available at
https://www.openmicroscopy.org/site/support/bio-formats5.3/about/whats-new.html

and the software is also available to download from
http://downloads.openmicroscopy.org/bio-formats/5.3.2/

Any problems or comments, please use the OME Forums or mailing lists:

Regards,

The OME Team

1 Like

@s.besson this breaks current TrakEM2 (Java8 update site) on import from text file with this error:

==================
ERROR:
java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: loci.common.RandomAccessInputStream.readUnsignedInt()J
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at ini.trakem2.utils.Utils.wait(Utils.java:1535)
	at ini.trakem2.persistence.Loader$3.exec(Loader.java:2423)
	at ini.trakem2.utils.Worker$Task.run(Worker.java:137)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: loci.common.RandomAccessInputStream.readUnsignedInt()J
	at loci.formats.tiff.TiffParser.getNextOffset(TiffParser.java:1241)
	at loci.formats.tiff.TiffParser.getFirstOffset(TiffParser.java:369)
	at loci.formats.tiff.TiffParser.getFirstIFD(TiffParser.java:323)
	at loci.formats.in.SEQReader.isThisType(SEQReader.java:73)
	at loci.formats.FormatReader.isThisType(FormatReader.java:617)
	at loci.formats.ImageReader.getReader(ImageReader.java:185)
	at loci.formats.ImageReader.setId(ImageReader.java:836)
	at loci.formats.ReaderWrapper.setId(ReaderWrapper.java:651)
	at loci.formats.ChannelSeparator.setId(ChannelSeparator.java:291)
	at ini.trakem2.io.ImageFileHeader.<init>(ImageFileHeader.java:26)
	at ini.trakem2.persistence.Loader$3$2.call(Loader.java:2308)
	at ini.trakem2.persistence.Loader$3$2.call(Loader.java:2304)
	at ini.trakem2.persistence.Loader$3$3.run(Loader.java:2375)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	... 1 more
==> Caused by:
java.lang.NoSuchMethodError: loci.common.RandomAccessInputStream.readUnsignedInt()J
	at loci.formats.tiff.TiffParser.getNextOffset(TiffParser.java:1241)
	at loci.formats.tiff.TiffParser.getFirstOffset(TiffParser.java:369)
	at loci.formats.tiff.TiffParser.getFirstIFD(TiffParser.java:323)
	at loci.formats.in.SEQReader.isThisType(SEQReader.java:73)
	at loci.formats.FormatReader.isThisType(FormatReader.java:617)
	at loci.formats.ImageReader.getReader(ImageReader.java:185)
	at loci.formats.ImageReader.setId(ImageReader.java:836)
	at loci.formats.ReaderWrapper.setId(ReaderWrapper.java:651)
	at loci.formats.ChannelSeparator.setId(ChannelSeparator.java:291)
	at ini.trakem2.io.ImageFileHeader.<init>(ImageFileHeader.java:26)
	at ini.trakem2.persistence.Loader$3$2.call(Loader.java:2308)
	at ini.trakem2.persistence.Loader$3$2.call(Loader.java:2304)
	at ini.trakem2.persistence.Loader$3$3.run(Loader.java:2375)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
==================

I did not yet find time to have a deeper look into this. But it seems sufficiently deep in loci.formats.tiff.TiffParser that I have doubts that this is triggered by TrakEM2. Ideas?

Thanks,
Stephan

1 Like

Hi Stephan,

this method was introduced in Bio-Formats 5.2.0 via this Pull Request.

Could you check which JAR is used for loci.common.RandomAccessInputStream in your distribution using the Find Jar for Class utility? My suspicion is that the old formats-common-5.1.10.jar shipped in the main Fiji update site is used, while the new class is in the ome-common-5.3.1.jar distributed in the Java8 update site. If this is the case, deleting the formats-common JAR should be a suitable workaround although we would need to fix this in a robust manner.
SĂ©bastien

Thanks for the work on improving bio-formats!

When improving the reading of Metamorph files, did you have a chance to also at the bug that lets Bio-Formats pick up unrelated files in the same directory, and check whether any of your sample Metamorph datasets actually requires this strange behavior?

Hi Jan,

The MetaMorph updates in Bio-Formats 5.3.2 are separate from the issue with file names raised in https://github.com/openmicroscopy/bioformats/issues/2613.

I have however been able to spend some time looking further into the naming issue and I will update the GitHub issue with further details.

David Gault

1 Like