I am trying to open tiff images that were generated by a microscope operated by the Micromanager software. However, the “Image Reader” node from KNIME Image Processing is unable to read the images.
It gives me the following error:
2018-07-17 18:11:40,930 : WARN : KNIME-Worker-10 : ImgReader2NodeModel : Image Reader : 0:1 : Encountered exception while reading image: img_000000000_Trans_003.tif! view log for more info.
2018-07-17 18:11:40,931 : DEBUG : KNIME-Worker-10 : ImgReader2NodeModel : Image Reader : 0:1 : Encountered exception while reading image:
java.lang.ArrayIndexOutOfBoundsException: 1
at io.scif.formats.MicromanagerFormat$Position.getFile(MicromanagerFormat.java:883)
at io.scif.formats.MicromanagerFormat$Reader.openPlane(MicromanagerFormat.java:761)
at io.scif.formats.MicromanagerFormat$Reader.openPlane(MicromanagerFormat.java:725)
at io.scif.AbstractReader.openPlane(AbstractReader.java:166)
at io.scif.filters.ChannelFiller.openPlane(ChannelFiller.java:163)
at io.scif.filters.ChannelFiller.openPlane(ChannelFiller.java:146)
at io.scif.filters.PlaneSeparator.openPlane(PlaneSeparator.java:303)
at io.scif.filters.PlaneSeparator.openPlane(PlaneSeparator.java:209)
at io.scif.filters.AbstractReaderFilter.openPlane(AbstractReaderFilter.java:225)
at io.scif.filters.AbstractReaderFilter.openPlane(AbstractReaderFilter.java:193)
at io.scif.img.ImgOpener.read(ImgOpener.java:691)
at io.scif.img.ImgOpener.read(ImgOpener.java:675)
at io.scif.img.ImgOpener.read(ImgOpener.java:656)
at io.scif.img.ImgOpener.readPlanes(ImgOpener.java:643)
at io.scif.img.ImgOpener.openImgs(ImgOpener.java:358)
at io.scif.img.ImgOpener.openImgs(ImgOpener.java:769)
at io.scif.img.ImgOpener.openImg(ImgOpener.java:884)
at org.knime.knip.io.ScifioImgSource.getImg(ScifioImgSource.java:299)
at org.knime.knip.io.nodes.imgreader2.AbstractReadImgFunction.readImageAndMetadata(AbstractReadImgFunction.java:138)
at org.knime.knip.io.nodes.imgreader2.readfromdialog.ReadImg2Function.lambda$0(ReadImg2Function.java:69)
at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:110)
at java.util.stream.IntPipeline$Head.forEachOrdered(IntPipeline.java:567)
at org.knime.knip.io.nodes.imgreader2.readfromdialog.ReadImg2Function.apply(ReadImg2Function.java:67)
at org.knime.knip.io.nodes.imgreader2.readfromdialog.ImgReader2NodeModel.execute(ImgReader2NodeModel.java:166)
at org.knime.core.node.NodeModel.execute(NodeModel.java:733)
Software versions:
MacOS (10.11.6)
KNIME Analytics Platform (version 3.6.0)
KNIME Image Processing (1.7.0.201807120614)
Fiji/ImageJ (version 1.48v)
This maybe a machine dependent error since my colleague can read the image without any issues. Thanks for your help.
Are you able to open the images with a recent version of Fiji (please download a fresh copy from http://fiji.sc)? Please don’t drag and drop the image like you’d usually do but use the File > Import > Image command and leave the default settings. This will trigger a very similar import process to the one in KNIME Image Processing and we can double-check if it’s the underlying library (SCIFIO) or not.
Are you saying that your colleague can open the images with the same versions of KNIME Analytics Platform and KNIME Image Processing?
Thank you for your recommendations. I can’t open the images with Import function of Fiji. When I try to open the images I get the following error:
[INFO] Reading metadata file
[INFO] Populating metadata
[INFO] Finding image file names
[INFO] Building list of TIFFs
[ERROR] Module threw exception
java.lang.ArrayIndexOutOfBoundsException: 0
at io.scif.formats.MicromanagerFormat$Position.getFile(MicromanagerFormat.java:883)
at io.scif.formats.MicromanagerFormat$Reader.openPlane(MicromanagerFormat.java:761)
at io.scif.formats.MicromanagerFormat$Reader.openPlane(MicromanagerFormat.java:725)
at io.scif.AbstractReader.openPlane(AbstractReader.java:166)
at io.scif.filters.ChannelFiller.openPlane(ChannelFiller.java:163)
at io.scif.filters.ChannelFiller.openPlane(ChannelFiller.java:146)
at io.scif.filters.PlaneSeparator.openPlane(PlaneSeparator.java:303)
at io.scif.filters.PlaneSeparator.openPlane(PlaneSeparator.java:209)
at io.scif.filters.AbstractReaderFilter.openPlane(AbstractReaderFilter.java:225)
at io.scif.filters.AbstractReaderFilter.openPlane(AbstractReaderFilter.java:193)
at io.scif.img.ImgOpener.read(ImgOpener.java:691)
at io.scif.img.ImgOpener.read(ImgOpener.java:656)
at io.scif.img.ImgOpener.readPlanes(ImgOpener.java:643)
at io.scif.img.ImgOpener.openImgs(ImgOpener.java:358)
at io.scif.img.ImgOpener.openImgs(ImgOpener.java:245)
at io.scif.img.ImgOpener.openImgs(ImgOpener.java:146)
at io.scif.services.DefaultDatasetIOService.open(DefaultDatasetIOService.java:125)
at io.scif.commands.OpenDataset.run(OpenDataset.java:157)
at org.scijava.command.CommandModule.run(CommandModule.java:199)
at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:127)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:66)
at org.scijava.thread.DefaultThreadService$3.call(DefaultThreadService.java:238)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
And yes, my colleague can open images with the same versions of KNIME Analytics Platform and KNIME Image Processing.
Hi @maltseva,
Are you reading the image files from a remote file system or folder with a somehow uncommon path?
The MicromanagerFormat sensitive to file paths so this could be cause. Can you try copying the pictures to your desktop and test if reading from there works?
Maybe the images got corrupted somehow? Can you try to calculate a hash of the image data with something like sha256sum on Linux or a tool like http://code.kliu.org/hashcheck/ on windows to make sure these are really the same images.
If these are the same try with a clean install of KNIME + KNIME Image Processing, maybe something weird happened during the update.
Thanks for your responses.
We came up with the solution to remove metadata.txt file from the folder. It seems that Import command is getting confused with MicroManager metadata.txt file.
I’d say this is a workaround but not a solution since you are losing a lot of information/metadata when deleting Micro-Manager’s metadata.txt.
If you can spare the time, it would be great to find a proper solution for your issue: how did you save the images from Micro-Manager, i.e. “Save as separate image files” or “Save as image stack file”? Also, what’s the file extensions of your images tif or ome.tif (or something entirely different) and which Micro-Manager have you used for image acquisition?
I save the images as “Save as separate image files” and images have tif extension. We use Micro-Manager 1.4.15 and Image J 1.48v for image acquisition.
That’s a fairly old version. Would you be able to provide some sample data? If you don’t mind and the files are not too large, you can create a ZIP file and upload them here to the forum. Otherwise, I can provide login details for an SFTP server, where you can upload the files, via email.
I was able to find the issue and implement a fix for the underlying library (which is called SCIFIO): https://github.com/scifio/scifio/pull/378. Once this has been integrated, we can release a new version of KNIME Image Processing (that includes the fix) which should enable you to open the files that you have provided.