Page 1 of 1

changing a plane of impored image

PostPosted: Thu Jan 14, 2016 10:34 am
by yossioulu
Hi,
Is it possible to add a new plane to an existing image that was imported into a screen?
or
Is it possible to change the pixels content of a plane image that was imported into a screen?


I have a screen-plate-wells with images. Each image has 4 channels. I wrote some analysis that reads the 4 channels of each image and creates a new plane that I would like to add to that image.
I cannot find how to do it. The code I wrote in Java is:
Code: Select all
ImageData image = browse.getImage(ctx, imageId);
byteBuf = generate_new_plane_as_buffer(image);
store = gateway.createPixelsStore(ctx);
pixelsId = image.getDefaultPixels().getId();
store.setPixelsId(pixelsId, true);
store.setPlane(byteBuf, 0, 4, 0);
store.save();


I get exception:
serverExceptionClass = "ome.conditions.InternalException"
message = " Wrapped Exception: (java.lang.UnsupportedOperationException):
Cannot write to repository"
I also tried: store.setPlane(byteBuf, 0, 0, 0); // thinking I might be able to overwrite the content of an existing plane.. same error.

Any help/ ideas?
Thanks

Re: changing a plane of impored image

PostPosted: Fri Jan 15, 2016 10:16 am
by Dominik
Hi,

that's not possible, it's not allowed to modify the original image data. But you could create a new image with the new plane. Depending on the purpose, either a single plane image or if you need to view the new plane together with the other planes, you would have to duplicate these planes from the original image. To keep track of the relations, you can also add a comment or description to the images containing this expression
Code: Select all
image id: 123
, this will create a clickable link referring to the image. That would be a way to "link" the images together.

Regards,
Dominik

Re: changing a plane of impored image

PostPosted: Sat Jan 16, 2016 10:19 am
by yossioulu
Thanks for the reply.
The idea of adding a clickble lin is nice, but I tried adding the expression:
image id: 444
to the Comment of an image and also to the Description of an image (using the UI) and it did not create clickable object.
Is there a specific way of doing that?

I found that the text should be the full link to that image. Then it works fine.
e.g. http://localhost/webclient/?show=well-444

Re: changing a plane of impored image

PostPosted: Mon Jan 18, 2016 8:31 am
by yossioulu
for the sake of others, I found a way to add my calculated image as another channel to an existing image in a well-screen.
What I do it the following, before importing the plate images to Omero, I edit the plate description file extension HTD and in it I changed the lines:
"NWavelengths", 4
"WaveName1", "wav1"
"WaveName2", "wav2"
"WaveName3", "wav3"
"WaveName4", "wav4"
"WaveCollect1", 1
"WaveCollect2", 1
"WaveCollect3", 1
"WaveCollect4", 1

to be:
"NWavelengths", 5
"WaveName1", "wav1"
"WaveName2", "wav2"
"WaveName3", "wav3"
"WaveName4", "wav4"
"WaveName5", "myNewWav"
"WaveCollect1", 1
"WaveCollect2", 1
"WaveCollect3", 1
"WaveCollect4", 1
"WaveCollect5", 1


Now I ran the import of that screen.
Although the image for the last channel is missing at that point the omero creates an empty slot for that 5th channel.
Now, in my script I'm calculating this new image and I save it with a proper name in the proper location under the ManagedRepository of Omero.
e.g. ./root_0/2016-01/11/09-05-32.275/MyPlateName_C05_s1_w5.tif

Once I do that I can see the image in the omero insight UI.

Re: changing a plane of impored image

PostPosted: Mon Jan 18, 2016 8:45 am
by Dominik
That's an interesting way, thanks for sharing this. And yes, you're right, the "image id: " expression doesn't work for OMERO.web, it's Insight only (and it opens the referenced image in the image viewer, but does not navigate to it), I wasn't aware of this.

Regards,
Dominik

Re: changing a plane of impored image

PostPosted: Mon Jan 18, 2016 10:59 am
by jmoore
NB: adding a channel after the fact should also work if that would simplify the workflow. ~Josh.

Re: changing a plane of impored image

PostPosted: Wed Jan 20, 2016 6:30 pm
by yossioulu
How do I add a channel to an existing image? (my image is in a plate within a screen)

Yes, my initial target is just to add a channel to the image. If this is possible without the above mentioned workaround, which now I'm starting to realize has issues and not sure that it actually working.
So if someone knows how to add a channel to an existing image in a screen, that will help a lot.

Thanks
Joe

Re: changing a plane of impored image

PostPosted: Thu Jan 21, 2016 3:18 pm
by jmoore
Hi Joe,

in the process of writing up an example, I've realized you're still going to have to modify the file metadata after the fact. I'll finish up the integration test since other file formats might automatically pick up the changes, but if you have something working, you're probably in as good a state as you can be in.

Cheers,
~Josh.

Re: changing a plane of impored image

PostPosted: Thu Jan 21, 2016 4:27 pm
by yossioulu
Thanks for the reply. Unfortunately it looks like it was too early to celebrate. The omero does not show the image I created: ./root_0/2016-01/11/09-05-32.275/MyPlateName_C05_s1_w5.tif
What I did is not enough.
So I'm back in square one.
So if you think you might have something that can help please let me know.

Otherwise my next try is going to be create a new image which is a duplication of the image (e.g. C05) with all its fields images, channels and attachments and while in the duplication, create a new channel. then I can maybe delete the original image, save the new image and link it into the proper well.
I'm not that happy to do that, It seems to me lots of work and much of is is redundant.
There must be some way to add a channel to an existing image in a plate...

Thanks
Yossi

Re: changing a plane of impored image

PostPosted: Thu Jan 21, 2016 6:55 pm
by jmoore
Understood. I'll keep working on my example then.

Cheers,
~Josh.