IMPORTANT!
Before we begin...
Before submitting your bug report, please check the following:
Bug report
Describe the bug
it looks like the pixel classifier can't access all the pixels of the image, therefore during "training" it doesn't display the overlay class on the entire image , but still one can save a pixel classifier.
BUT when loading the pixel classifier, it will return this error
java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.io.IOException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Could not decode image from response
java.io.IOException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.io.IOException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Could not decode image from response
at qupath.lib.analysis.images.ContourTracing.traceGeometriesImpl(ContourTracing.java:1074)
at qupath.lib.analysis.images.ContourTracing.traceGeometries(ContourTracing.java:1022)
at qupath.opencv.ml.pixel.PixelClassifierTools.createObjectsFromPixelClassifier(PixelClassifierTools.java:426)
at qupath.opencv.ml.pixel.PixelClassifierTools.createObjectsFromPredictions(PixelClassifierTools.java:227)
at qupath.opencv.ml.pixel.PixelClassifierTools.createDetectionsFromPixelClassifier(PixelClassifierTools.java:140)
at qupath.opencv.ml.pixel.PixelClassifierTools.createDetectionsFromPixelClassifier(PixelClassifierTools.java:162)
at qupath.process.gui.commands.ml.PixelClassifierUI.promptToCreateObjects(PixelClassifierUI.java:398)
at qupath.process.gui.commands.ml.PixelClassifierUI.lambda$createPixelClassifierButtons$3(PixelClassifierUI.java:155)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:199)
at javafx.scene.Node.fireEvent(Node.java:8963)
at javafx.scene.control.Button.fire(Button.java:203)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:207)
at com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:199)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3987)
at javafx.scene.Scene.processMouseEvent(Scene.java:1893)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2711)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:430)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
at com.sun.glass.ui.View.handleMouseEvent(View.java:560)
at com.sun.glass.ui.View.notifyMouse(View.java:946)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.io.IOException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Could not decode image from response
at java.base/java.util.concurrent.FutureTask.report(Unknown Source)
at java.base/java.util.concurrent.FutureTask.get(Unknown Source)
at qupath.lib.analysis.images.ContourTracing.invokeAll(ContourTracing.java:1033)
at qupath.lib.analysis.images.ContourTracing.traceGeometriesImpl(ContourTracing.java:1049)
... 60 more
Caused by: java.lang.RuntimeException: java.io.IOException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Could not decode image from response
at qupath.lib.analysis.images.ContourTracing.traceGeometries(ContourTracing.java:1121)
at qupath.lib.analysis.images.ContourTracing.lambda$traceGeometriesImpl$11(ContourTracing.java:1049)
at qupath.lib.analysis.images.ContourTracing.lambda$invokeAll$10(ContourTracing.java:1029)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
... 1 more
Caused by: java.io.IOException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Could not decode image from response
at qupath.ext.omero.core.pixelapis.web.WebReader.readTile(WebReader.java:67)
at qupath.ext.omero.core.imageserver.OmeroImageServer.readTile(OmeroImageServer.java:95)
at qupath.lib.images.servers.AbstractTileableImageServer.lambda$prerequestTiles$2(AbstractTileableImageServer.java:519)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at qupath.lib.images.servers.AbstractTileableImageServer.prerequestTiles(AbstractTileableImageServer.java:521)
at qupath.lib.images.servers.AbstractTileableImageServer.readRegion(AbstractTileableImageServer.java:298)
at qupath.lib.images.servers.AbstractTileableImageServer.readRegion(AbstractTileableImageServer.java:60)
at qupath.lib.images.servers.ServerTools.getPaddedRequest(ServerTools.java:256)
at qupath.opencv.ops.ImageOps$ChannelImageDataOp.apply(ImageOps.java:407)
at qupath.opencv.ml.pixel.OpenCVPixelClassifier.applyClassification(OpenCVPixelClassifier.java:104)
at qupath.lib.classifiers.pixel.PixelClassificationImageServer.readTile(PixelClassificationImageServer.java:308)
at qupath.lib.images.servers.AbstractTileableImageServer.lambda$getTile$0(AbstractTileableImageServer.java:213)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at qupath.lib.images.servers.AbstractTileableImageServer.getTile(AbstractTileableImageServer.java:217)
at qupath.lib.images.servers.AbstractTileableImageServer.readRegion(AbstractTileableImageServer.java:290)
at qupath.lib.images.servers.AbstractTileableImageServer.readRegion(AbstractTileableImageServer.java:60)
at qupath.lib.gui.viewer.overlays.PixelClassificationOverlay.lambda$requestTile$5(PixelClassificationOverlay.java:575)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
... 4 more
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Could not decode image from response
at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
at qupath.ext.omero.core.pixelapis.web.WebReader.readTile(WebReader.java:61)
... 21 more
Caused by: java.lang.IllegalArgumentException: Could not decode image from response
at qupath.ext.omero.core.RequestSender.lambda$getImage$5(RequestSender.java:218)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
To Reproduce
Steps to reproduce the behavior:
- Use this qupath project qp_bone.zip (data are on a public OMERO)
- open the second image ( analysis_whole) run load pixel classifier "bone_classifier"
- Click "Create objects" , on "Full image" => get the error
- Alternatively, with annotations, it works with annotation "A" but fails with same error for "B" and "C"
Expected behavior
Pixel classifier dislay results
Desktop (please complete the following information):
- OS: Win11
- QuPath Version: 0.6.0
- OMERO extension: 0.1.2
Additional context
-
Connection to omero-public (using the WEB API from the omero extension) + image import + pixel classifier => error reproduced
-
Download image locally + image import + pixel classifier ==> no error
-
Connection to omero NON-public (using the ICE API from the omero extension) + image import + pixel classifier => no error
-
Connection to omero NON-public (using the WEB API from the omero extension) + image import + pixel classifier => error reproduced
So, it seems that the error comes from the omero extension .
Thank you in advance for your help,
Cheers
ping : @Rdornier ,@NicoKiaru
IMPORTANT!
Before we begin...
Before submitting your bug report, please check the following:
Bug report
Describe the bug
it looks like the pixel classifier can't access all the pixels of the image, therefore during "training" it doesn't display the overlay class on the entire image , but still one can save a pixel classifier.
BUT when loading the pixel classifier, it will return this error
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Pixel classifier dislay results
Desktop (please complete the following information):
Additional context
Connection to omero-public (using the WEB API from the omero extension) + image import + pixel classifier => error reproduced
Download image locally + image import + pixel classifier ==> no error
Connection to omero NON-public (using the ICE API from the omero extension) + image import + pixel classifier => no error
Connection to omero NON-public (using the WEB API from the omero extension) + image import + pixel classifier => error reproduced
So, it seems that the error comes from the omero extension .
Thank you in advance for your help,
Cheers
ping : @Rdornier ,@NicoKiaru