Clicy out for testing

Hi everyone,

I’m happy to announce that clicy is out for testing. Clicy is a bridge between #Icy and #clij and brings GPU-accelerated image processing to the icyverse.

It comes with #clij toolbars

It brings a JavaScript recorder for clij2 operations.

And you can use Blocks to design workflows.

If you want to learn more, please visit the website (s):
http://icy.bioimageanalysis.org/plugin/clicy-blocks/[

https://clij.github.io/clicy/]

I would be happy about feedback. If nobody reports bugs, it will just release mid June :wink:

Thanks everyone!

Cheers,
Robert

11 Likes

Hey @haesleinhuepf!

Finally getting to test this out, so slow to the game. What is the point of the “cl_device” field for many of the protocol blocks? Your example above doesn’t fill in the field.

1 Like

Hey @Heather_BrownHarding,

this field allows you to select a GPU. Per default I would leave this field empty. It is the counter-part of the CL Device Pulldown in Fiji:

image

Let me know how it goes! I’m eager for feedback that allows to improve the platform and the integration in Icy :slight_smile:

Cheers,
Robert

2 Likes

I keep throwing an error with this protocol. Am I the problem?
poole clij2.protocol (8.8 KB)

net.haesleinhuepf.clij.clearcl.exceptions.ClearCLException: problem while setting argument 'src' at index 7 

	at net.haesleinhuepf.clij.clearcl.ClearCLKernel.setArgumentsInternal(ClearCLKernel.java:426)
	at net.haesleinhuepf.clij.clearcl.ClearCLKernel.lambda$run$0(ClearCLKernel.java:481)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:97)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:64)
	at net.haesleinhuepf.clij.clearcl.ClearCLKernel.run(ClearCLKernel.java:477)
	at net.haesleinhuepf.clij.clearcl.ClearCLKernel.run(ClearCLKernel.java:459)
	at net.haesleinhuepf.clij.clearcl.util.CLKernelExecutor.lambda$enqueue$1(CLKernelExecutor.java:267)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:97)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:28)
	at net.haesleinhuepf.clij.clearcl.util.CLKernelExecutor.enqueue(CLKernelExecutor.java:266)
	at net.haesleinhuepf.clij2.CLIJ2.lambda$executeSubsequently$0(CLIJ2.java:466)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:97)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:28)
	at net.haesleinhuepf.clij2.CLIJ2.executeSubsequently(CLIJ2.java:456)
	at net.haesleinhuepf.clij2.CLIJ2.executeSubsequently(CLIJ2.java:443)
	at net.haesleinhuepf.clij2.CLIJ2.executeSubsequently(CLIJ2.java:438)
	at net.haesleinhuepf.clij2.CLIJ2.execute(CLIJ2.java:423)
	at net.haesleinhuepf.clij2.plugins.Copy.copy(Copy.java:47)
	at net.haesleinhuepf.clij2.CLIJ2Ops.copy(CLIJ2Ops.java:3126)
	at net.haesleinhuepf.clij2.plugins.CopySlice.copySlice(CopySlice.java:53)
	at net.haesleinhuepf.clij2.CLIJ2Ops.copySlice(CLIJ2Ops.java:3145)
	at net.haesleinhuepf.clij2.plugins.StatisticsOfLabelledPixels$Statistician.run(StatisticsOfLabelledPixels.java:193)
	at java.lang.Thread.run(Unknown Source)
Caused by :
net.haesleinhuepf.clij.clearcl.exceptions.ClearCLException
	at net.haesleinhuepf.clij.clearcl.backend.BackendUtils.checkExceptions(BackendUtils.java:178)
	at net.haesleinhuepf.clij.clearcl.backend.jocl.ClearCLBackendJOCL.setKernelArgument(ClearCLBackendJOCL.java:614)
	at net.haesleinhuepf.clij.clearcl.ClearCLKernel.setArgumentsInternal(ClearCLKernel.java:417)
	at net.haesleinhuepf.clij.clearcl.ClearCLKernel.lambda$run$0(ClearCLKernel.java:481)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:97)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:64)
	at net.haesleinhuepf.clij.clearcl.ClearCLKernel.run(ClearCLKernel.java:477)
	at net.haesleinhuepf.clij.clearcl.ClearCLKernel.run(ClearCLKernel.java:459)
	at net.haesleinhuepf.clij.clearcl.util.CLKernelExecutor.lambda$enqueue$1(CLKernelExecutor.java:267)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:97)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:28)
	at net.haesleinhuepf.clij.clearcl.util.CLKernelExecutor.enqueue(CLKernelExecutor.java:266)
	at net.haesleinhuepf.clij2.CLIJ2.lambda$executeSubsequently$0(CLIJ2.java:466)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:97)
	at net.haesleinhuepf.clij.clearcl.util.ElapsedTime.measure(ElapsedTime.java:28)
	at net.haesleinhuepf.clij2.CLIJ2.executeSubsequently(CLIJ2.java:456)
	at net.haesleinhuepf.clij2.CLIJ2.executeSubsequently(CLIJ2.java:443)
	at net.haesleinhuepf.clij2.CLIJ2.executeSubsequently(CLIJ2.java:438)
	at net.haesleinhuepf.clij2.CLIJ2.execute(CLIJ2.java:423)
	at net.haesleinhuepf.clij2.plugins.Copy.copy(Copy.java:47)
	at net.haesleinhuepf.clij2.CLIJ2Ops.copy(CLIJ2Ops.java:3126)
	at net.haesleinhuepf.clij2.plugins.CopySlice.copySlice(CopySlice.java:53)
	at net.haesleinhuepf.clij2.CLIJ2Ops.copySlice(CLIJ2Ops.java:3145)
	at net.haesleinhuepf.clij2.plugins.StatisticsOfLabelledPixels$Statistician.run(StatisticsOfLabelledPixels.java:193)
	at java.lang.Thread.run(Unknown Source)
Caused by :
java.lang.NullPointerException

2 Likes

Hey @Heather_BrownHarding,

that’s a tricky one. Please make sure that no image is released twice. In your workflow block 4 releases the input image and afterwards, block 11 crashes while trying to access it. I’d assume removing block 4 resolves that issue.

Addendum: Send the input image from block 3 to block 11. Remove block 4. Then, the order of execution should be fixed.

I know these release-blocks are tricky. I haven’t found a better solution yet.

Let me know if this helped!

Cheers,
Robert

2 Likes

This seems to have fixed the error message.

I’m also noticing that the computer spends a lot of time on fill holes. Should this be normal for a single frame? Once I have this worked out it will go to the processing computer for 24hour times series files.

May sound funny but: It depends on the size of the holes :sweat_smile:

Wanna share an example image? :upside_down_face:

1 Like

hahahahaha, yes the holes are big. I need to process them better because the data is UGLY

draq5 C1.tif (ch 2) (frame 28).tif (2.4 MB)