Icy convexify bug

Hello,

I was using Icy recently with my own protocol from the tools feature and when I ran the protocol, there’s an error message for the convexify plugin (see image). I have used this protocol previously and never gave me an error. I tried uninstalling both Icy and java and re-installing them but nothing seems to make any changes. Does someone knows what can I do?

Thank you,

Dariana

Dear Dariana,

Thank you for posting the bug report, it is already giving some hints about this issue. I read “Cannot compute convex hull for ROI Object #1 of type plugins.kernel.roi.roi3d.ROI3DArea”. I am wondering if there is something special about the 3D ROI Area you are trying to convexify (its shape for instance). I am also wondering if the plugin Convexify ROI is correctly supporting 3D ROIs.

Could you have a look at this ROI with a display block (add a block “Add rois” after the creation of the ROI to add the ROI on the sequence and a display block after the sequence to display the sequence with the ROI)? You can double click on the image in the display block to open it in a classical viewer and play with the 2D and 3D views.
blocks_to_display_ROI

Could you also upload your protocol and an example image that is causing this issue?

Many thanks in advance.
Best regards,
Marion

1 Like

Hello Marion,

Thanks for responding. I’m trying to convexify the cell nuclear membrane to obtain the nucleus. I tried what you suggested me in the picture and it didn’t gave me errors but it stills appears on my protocol. The convexify of my protocol is directly connected to “Connected components” and then to “Erode”. I also tried different variations of my protocol that I have used before and it stills shows the bug.

Many thanks for your help,

Dariana

1 Like

Hi Dariana,

Unfortunately the error message doesn’t give too much information about the cause of the error, and without the image and the protocol we cannot reproduce it.
We just uploaded a new version of the plugin (2.0.6) which should provide a more detailed error, that would help us in understanding what happen. Still to fix it we will probably need our dataset anyway (to get the input ROI causing the trouble).

Best,

– Stephane

1 Like

Hello Marion,

Sorry for the inconvenience in my last post. The answer to your questions:

1- Yes, I have tried running the protocol using the 2.0.6 version of convenxify.
2- Below is the output error:
OpenJDK Runtime Environment 1.8.0_242-b08 (64 bit)
Running on Windows 10 10.0 (amd64)
Number of processors : 12
System total memory : 16.6 GB
System available memory : 8.9 GB
Max java memory : 8.5 GB
Image cache initialized (reserved memory = 3302 MB, disk cache location = C:/Users/DTORRE7/AppData/Local/Temp)

java.lang.UnsatisfiedLinkError: C:\Users\DTORRE7\Downloads\icy_all_2.1.0.0\lib\win64\vtk\vtkRenderingCoreJava.dll: Can’t find dependent libraries

Cannot load VTK library…

Icy Version 2.1.3.0 started !

The following plugin(s) has been correctly installed:
ROI Statistics 5.8.14.0

An error occured while plugin ‘Convexify ROI’ was running :
java.lang.IllegalArgumentException: Cannot compute convex hull for ROI Object #1 of type plugins.kernel.roi.roi3d.ROI3DArea.
at plugins.adufour.roi.Convexify.createConvexROI(Convexify.java:153)
at plugins.adufour.roi.Convexify.execute(Convexify.java:65)
at plugins.adufour.ezplug.EzPlug.run(EzPlug.java:455)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at plugins.adufour.blocks.lang.WorkFlow.run(WorkFlow.java:923)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at java.lang.Thread.run(Thread.java:748)
Caused by :
java.lang.UnsatisfiedLinkError: vtk.vtkActor.VTKInit()J
at vtk.vtkActor.VTKInit(Native Method)
at vtk.vtkObjectBase.(vtkObjectBase.java:43)
at vtk.vtkObject.(vtkObject.java:94)
at vtk.vtkProp.(vtkProp.java:278)
at vtk.vtkProp3D.(vtkProp3D.java:206)
at vtk.vtkActor.(vtkActor.java:126)
at plugins.adufour.roi.mesh.ROI3DMesh$MeshPainter.(ROI3DMesh.java:308)
at plugins.adufour.roi.mesh.polygon.ROI3DPolygonalMesh$PolygonalMeshPainter.(ROI3DPolygonalMesh.java:78)
at plugins.adufour.roi.mesh.polygon.ROI3DPolygonalMesh.createPainter(ROI3DPolygonalMesh.java:131)
at icy.roi.ROI.(ROI.java:1490)
at icy.roi.ROI3D.(ROI3D.java:359)
at plugins.adufour.roi.mesh.ROI3DMesh.(ROI3DMesh.java:668)
at plugins.adufour.roi.mesh.polygon.ROI3DPolygonalMesh.(ROI3DPolygonalMesh.java:116)
at plugins.adufour.roi.Convexify.createConvexROI(Convexify.java:141)
at plugins.adufour.roi.Convexify.execute(Convexify.java:65)
at plugins.adufour.ezplug.EzPlug.run(EzPlug.java:455)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at plugins.adufour.blocks.lang.WorkFlow.run(WorkFlow.java:923)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at java.lang.Thread.run(Thread.java:748)

3- Below is the protocol:
20210308(from_20210108)_Hela-NUP62-GFP_Nuc_Cyto_Single-file.protocol (22.2 KB)

My example image is on czi format and does not let me uploaded here. If I change the format it would no longer be suitable for the protocol. Can I send it to you through another site?

Thank you very much for your help.

Best,

Dariana

1 Like

Hi Dariana,

Thanks for posting the complete error message so now we can indeed understand the source of the problem :slight_smile:
It looks like you’re trying to use Convexify plugin on 3D Region Of Interest but it requires VTK library to do the process and we can clearly see here that VTK library didn’t loaded correctly on Icy initialization.
I’m confident that come from your OpenJDK installation (probably something isn’t properly set).
Can you try to remove OpenJDK Java and use the Oracle JRE win64 instead.

I think that should fix the VTK library loading then make Convexify plugin to work correctly.

Best,

– Stephane

1 Like

Dear Dariana,

Thank you for posting all this information!

Indeed, I see in the output error the following lines:

java.lang.UnsatisfiedLinkError: C:\Users\DTORRE7\Downloads\icy_all_2.1.0.0\lib\win64\vtk\vtkRenderingCoreJava.dll: Can’t find dependent libraries

Cannot load VTK library…

and below

Caused by :
java.lang.UnsatisfiedLinkError: vtk.vtkActor.VTKInit()J
at vtk.vtkActor.VTKInit(Native Method)

As Stéphane suggested, you could replace OpenJDK by Oracle JRE.

You could also check if the JAVA_HOME environment variable is correctly set. To do so, type “Environment variables” in the search bar of Windows and click on “Edit the system environment variables (Control Panel)”. You should see the window below:
environment_variables

Click on Environment Variables and check that the lower panel contains a variable named JAVA_HOME and that the path (Value) points to the path of your openjdk (or open JRE if you changed it). Java_home_variable

Regarding the import of .czi files, we can ask @imagejan if it would be possible to add this format to the authorized formats on the forum. Even if it is maybe not necessary here anymore, it could be useful for others on other topics.

Best regards,
Marion

1 Like

Thanks for notifying. (In general, you can also tag @admins for this kind of issues.)
I added czi to the allowed extensions to be uploaded.

1 Like

Hello everyone,

I appreciate everyone’s help.

@Stephane and @MarionLouveaux: I uninstalled the previous Java version that I had and installed the Oracle JRE win64. I checked the “Edit the system environment variables (Control Panel)” and changed the path of JAVA_HOME to the JRE version and retried running the protocol on ICY. It doesn’t seem to work, the error still pops up (see below). I’m not sure if it is the same error as before or something different. I also attached an example figure if you want to play around. You can see in the picture below the channels that I want to extract from the sample, specifically, I want to convexify the Lamin channel (channel 0).

ICY Output:
The following error is reported only on first occurence :
org.pushingpixels.substance.api.UiThreadingViolationException: State tracking must be done on Event Dispatch Thread
at org.pushingpixels.substance.internal.utils.SubstanceCoreUtilities.testThreadingViolation(SubstanceCoreUtilities.java:2117)
at org.pushingpixels.substance.internal.animation.StateTransitionTracker$ModelStateInfo.clear(StateTransitionTracker.java:171)
at org.pushingpixels.substance.internal.animation.StateTransitionTracker.onModelStateChanged(StateTransitionTracker.java:337)
at org.pushingpixels.substance.internal.animation.StateTransitionTracker$4.stateChanged(StateTransitionTracker.java:262)
at javax.swing.DefaultButtonModel.fireStateChanged(Unknown Source)
at javax.swing.JToggleButton$ToggleButtonModel.setSelected(Unknown Source)
at javax.swing.AbstractButton.setSelected(Unknown Source)
at plugins.adufour.roi.ROIMeasures$MeasureSelector.loadParameters(ROIMeasures.java:1484)
at plugins.adufour.roi.ROIMeasures$MeasureSelector.valueChanged(ROIMeasures.java:1562)
at plugins.adufour.roi.ROIMeasures$MeasureSelector.valueChanged(ROIMeasures.java:1416)
at plugins.adufour.vars.lang.Var.fireVariableChanged(Var.java:349)
at plugins.adufour.vars.lang.Var.setValue(Var.java:867)
at plugins.adufour.vars.lang.Var.loadFromXML(Var.java:566)
at plugins.adufour.blocks.util.BlocksML.loadWorkFlow_V4(BlocksML.java:1508)
at plugins.adufour.blocks.util.BlocksML.loadWorkFlow_V4(BlocksML.java:1371)
at plugins.adufour.blocks.util.BlocksML.loadWorkFlow(BlocksML.java:814)
at plugins.adufour.protocols.gui.ProtocolPanel.loadWorkFlow(ProtocolPanel.java:453)
at plugins.adufour.protocols.gui.MainFrame$2.run(MainFrame.java:621)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
An error occured while plugin ‘Convexify ROI’ was running :
java.lang.IllegalArgumentException: Cannot compute convex hull for ROI Object #1 of type plugins.kernel.roi.roi3d.ROI3DArea.
at plugins.adufour.roi.Convexify.createConvexROI(Convexify.java:153)
at plugins.adufour.roi.Convexify.execute(Convexify.java:65)
at plugins.adufour.ezplug.EzPlug.run(EzPlug.java:455)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at plugins.adufour.blocks.lang.WorkFlow.run(WorkFlow.java:923)
at plugins.adufour.blocks.lang.Loop.run(Loop.java:152)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at plugins.adufour.blocks.lang.WorkFlow.run(WorkFlow.java:923)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at java.lang.Thread.run(Unknown Source)
Caused by :
java.lang.ClassCastException: plugins.adufour.roi.mesh.polygon.ROI3DPolygonalMesh cannot be cast to icy.roi.ROI2D
at plugins.adufour.roi.Convexify.createConvexROI(Convexify.java:146)
at plugins.adufour.roi.Convexify.execute(Convexify.java:65)
at plugins.adufour.ezplug.EzPlug.run(EzPlug.java:455)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at plugins.adufour.blocks.lang.WorkFlow.run(WorkFlow.java:923)
at plugins.adufour.blocks.lang.Loop.run(Loop.java:152)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at plugins.adufour.blocks.lang.WorkFlow.run(WorkFlow.java:923)
at plugins.adufour.blocks.lang.BlockDescriptor.run(BlockDescriptor.java:568)
at java.lang.Thread.run(Unknown Source)

20210108_HelaNup62-2GFPHIV-VINmCherry_(-)B-BRalt_#10_2_NO-GFP.czi (6.8 MB)

Again, thank you all for your help.

Dariana

1 Like

Hi @Dtorre,

Ok this time VTK could be loaded correctly but another bug appeared…
Hopefully the error message was quite useful and we could easily fix the bug on the plugin.
We just made an update to the Convexify plugin (2.0.7) that should fix your issue for good hopefully !
Try again with this new version and report us any problem if you still meet any.

Best,

– Stephane

1 Like

Hi all,

To @imagejan: thank you for the .czi format and who to contact next time!

To Dariana: thank you for the protocol, the image and the new error message! I tested your protocol with your image until block number 8 (AddNuc-ROI to sequence) with the update Stéphane made on the Convexify plugin (version 2.0.7). It works on my machine. I hope it will also work on yours :slight_smile:

The plugin Convexify should update automatically if your computer is connected to internet. To check the version number of a plugin, click on the Preferences icon wrench_plus_2 on the upper left corner of Icy, go to Plugin → Local plugin and type the name of the plugin.

Best regards,
Marion

Hello everyone,

Yes, is working fine now. Thank you very much for all your help.

Dariana

2 Likes