[ome-devel] OME-TIFF merge
Melissa Linkert
melissa at glencoesoftware.com
Mon Sep 24 19:08:49 BST 2012
Hi Heinrich,
> sorry, I found the right way to do it via setFileInfo, reading through our conversation of a long time ago.. I hope you read this before spending time on answering my last mail
No worries. For the benefit of anyone else who might have had the same
question:
>> Now I am wondering how to get the new metadata back into the (originalFileInfo of the) Imp. I tried via
>>
>> - setFileInfo
>>
>> And initializing a DataBrowser and using
>> - setXML
If 'imp' is an ImagePlus and 'metadata' is an IMetadata:
// --
String omexml = MetadataTools.getOMEXML(metadata);
FileInfo fi = imp.getFileInfo();
fi.description = omexml;
imp.setFileInfo(fi);
// --
Regards,
-Melissa
On Mon, Sep 24, 2012 at 05:54:37PM +0000, Grabmayr, Heinrich wrote:
> Hi Melissa,
>
> sorry, I found the right way to do it via setFileInfo, reading through our conversation of a long time ago.. I hope you read this before spending time on answering my last mail
>
> best, Heinrich
>
> -----Ursprüngliche Nachricht-----
> Von: Grabmayr, Heinrich
> Gesendet: Samstag, 22. September 2012 00:06
> An: 'melissa at glencoesoftware.com'
> Cc: ome-devel at lists.openmicroscopy.org.uk
> Betreff: AW: [ome-devel] OME-TIFF merge
>
> Hi Melissa,
>
> Thank you very much, your link helped me a lot.
> Now I am wondering how to get the new metadata back into the (originalFileInfo of the) Imp. I tried via
>
> - setFileInfo
>
> And initializing a DataBrowser and using
> - setXML
>
> But neither of the two seem to work. In the accessible files, I found ways to do it via a reader or writer, but that seems to imply reading from/ writing to file..
>
> Thanks, best
> Heinrich
>
> -----Ursprüngliche Nachricht-----
> Von: Melissa Linkert [mailto:melissa.linkert at gmail.com] Im Auftrag von Melissa Linkert
> Gesendet: Sonntag, 16. September 2012 19:25
> An: Grabmayr, Heinrich
> Cc: ome-devel at lists.openmicroscopy.org.uk
> Betreff: Re: [ome-devel] OME-TIFF merge
>
> Hi Heinrich,
>
> > Now I also want to copy metadata to the newly created merge. I am able
> > to get the metadata via
> >
> > //--
> >
> > // get the metadata from the Imp
> > String OmeXml = "";
> > OmeXml = Imp.getOriginalFileInfo().description;
> > // create bio-formats metadata object out of the omexml IMetadata Meta
> > = MetadataTools.createOMEXMLMetadata(OmeXml);
> >
> > --//
> >
> > However, I only know how to get and set single metadata entries, like
> >
> > //
> > DyeList[i] = Meta.getChannelFluor(0,i); //
> >
> > Is it possible to get all metadata concerning one channel, concerning the instrument, or the pixels entries with one command only?
>
> Not using the IMetadata API. If you are only working with IMetadata objects that are created from an OME-XML string, then 'Meta' will be an instance of loci.formats.ome.OMEXMLMetadata. This means that all of the metadata storage and retrieval takes place in the ome.xml.model.* classes, so you could work with those classes directly to do the copying.
>
> An example is here:
>
> https://github.com/openmicroscopy/bioformats/blob/develop/components/bio-formats/src/loci/formats/in/CellWorxReader.java#L372
>
> (through line 385). That takes an existing IMetadata created from an OME-XML string and copies the first Instrument and all of the Images to a new IMetadata.
>
> > Because otherwise, I would need to go through all entries that might be set in the metadata, right?
>
> If you choose not to use the ome.xml.model.* classes, then yes, you will need to go through all of the methods for Channel (or Instrument, etc.).
>
> Regards,
> -Melissa
>
> On Thu, Sep 13, 2012 at 04:05:56PM +0000, Grabmayr, Heinrich wrote:
> > Hi Melissa,
> >
> > thanks a lot for that input. I used your snipped and it worked fine.
> > Now I also want to copy metadata to the newly created merge. I am able
> > to get the metadata via
> >
> > //--
> >
> > // get the metadata from the Imp
> > String OmeXml = "";
> > OmeXml = Imp.getOriginalFileInfo().description;
> > // create bio-formats metadata object out of the omexml IMetadata Meta
> > = MetadataTools.createOMEXMLMetadata(OmeXml);
> >
> > --//
> >
> > However, I only know how to get and set single metadata entries, like
> >
> > //
> > DyeList[i] = Meta.getChannelFluor(0,i); //
> >
> > Is it possible to get all metadata concerning one channel, concerning the instrument, or the pixels entries with one command only?
> > Because otherwise, I would need to go through all entries that might be set in the metadata, right?
> >
> >
> > Best, Heinrich
> >
> > -----Ursprüngliche Nachricht-----
> > Von: Melissa Linkert [mailto:melissa.linkert at gmail.com] Im Auftrag von
> > Melissa Linkert
> > Gesendet: Donnerstag, 13. September 2012 02:46
> > An: Grabmayr, Heinrich
> > Cc: ome-devel at lists.openmicroscopy.org.uk
> > Betreff: Re: [ome-devel] OME-TIFF merge
> >
> > Hi Heinrich,
> >
> > > I have a similar question to the one below which I found on the ome-users list.
> > >
> > > My data is ome-tif, and I have different images with several channels. I would like to merge one or more of each to a resulting ome-tif, also copying the according metadata. Is there a plugin out there that does this?
> >
> > Not to my knowledge, no.
> >
> > > The route I found was to use LOCI channel splitter, convert to a hyperstack, and then merge in there. That does not keep the metadata, though, I fear.
> > >
> > > For writing a plugin myself, my questions would be
> > >
> > > - Can IMetadata give me the complete "channel" metadata? Or should I cut it out of the xml string?
> >
> > Yes, IMetadata can give you anything that would be in the OME-XML string.
> >
> > > - Is there a more intelligent way of copying a whole channel than to go through all frames and z-positions and do it pixelwise via stack.setVoxel? (I did find the ImageProcessor.getPixels() but did not understand how to use its return value)
> >
> > You could do something like this instead:
> >
> > // --
> > ImagePlus originalStack = BF.openImagePlus(file)[0]; int[] dimensions
> > = originalStack.getDimensions(); int channel = 0; ImageStack
> > singleChannel = new ImageStack();
> >
> > for (int z=0; z<dimensions[3]; z++) {
> > for (int t=0; t<dimensions[4]; t++) {
> > originalStack.setPositionWithoutUpdate(channel + 1, z + 1, t + 1);
> > singleChannel.addSlice(originalStack.getProcessor());
> > }
> > }
> >
> > ImagePlus newStack = new ImagePlus("the first channel",
> > singleChannel); // --
> >
> > > And more generally, I sometimes feel that I fail to know basic methods and utils within the loci / bio-formats framework. Are there collections of ome-tiff plugins around (more than those in ImageJ->plugins->Loci and components/loci-plugins/utils)? Also, is there a guide/introduction on how to do things? I often write things that work but at the same time guessing there might be a useful class I don't know of that would make it more elegant...
> >
> > Have you read through all of the documentation here:
> >
> > http://trac.openmicroscopy.org.uk/ome/wiki/BioFormats
> >
> > and here:
> >
> > http://loci.wisc.edu/bio-formats/bio-formats-java-library
> >
> > in particular these examples:
> >
> > https://github.com/openmicroscopy/bioformats/tree/develop/components/b
> > io-formats/utils
> >
> > (which are not ImageJ-related, but do show you some possibly useful things about using Bio-Formats).
> >
> > That's about as close as we have to a guide at the moment; otherwise, the best thing to do really is to familiarize yourself with the Javadoc documentation (linked from both of the above) and ask questions here.
> >
> > Regards,
> > -Melissa
> >
> > On Wed, Sep 12, 2012 at 06:37:10PM +0000, Grabmayr, Heinrich wrote:
> > > Hi,
> > >
> > >
> > >
> > > I have a similar question to the one below which I found on the ome-users list.
> > >
> > > My data is ome-tif, and I have different images with several channels. I would like to merge one or more of each to a resulting ome-tif, also copying the according metadata. Is there a plugin out there that does this?
> > >
> > > The route I found was to use LOCI channel splitter, convert to a hyperstack, and then merge in there. That does not keep the metadata, though, I fear.
> > >
> > > For writing a plugin myself, my questions would be
> > >
> > > - Can IMetadata give me the complete "channel" metadata? Or should I cut it out of the xml string?
> > >
> > > - Is there a more intelligent way of copying a whole channel than to go through all frames and z-positions and do it pixelwise via stack.setVoxel? (I did find the ImageProcessor.getPixels() but did not understand how to use its return value)
> > >
> > >
> > >
> > > And more generally, I sometimes feel that I fail to know basic methods and utils within the loci / bio-formats framework. Are there collections of ome-tiff plugins around (more than those in ImageJ->plugins->Loci and components/loci-plugins/utils)? Also, is there a guide/introduction on how to do things? I often write things that work but at the same time guessing there might be a useful class I don't know of that would make it more elegant...
> > >
> > >
> > >
> > > Best
> > >
> > > Heinrich
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > Melissa Linkert melissa at glencoesoftware.com
> > > <mailto:ome-users%40lists.openmicroscopy.org.uk?Subject=Re%3A%20%5Bo
> > > me
> > > -users%5D%20Combine%20two%20tif%20to%20a%20multilayer%20tif&In-Reply
> > > -T o=%3C20120514180726.GC31887%40medusa%3E>
> > > Mon May 14 19:07:26 BST 2012
> > >
> > > * Previous message: [ome-users] Combine two tif to a multilayer tif <http://lists.openmicroscopy.org.uk/pipermail/ome-users/2012-May/003057.html>
> > > * Next message: [ome-users] Importing .dv File via BioFormats <http://lists.openmicroscopy.org.uk/pipermail/ome-users/2012-May/003059.html>
> > > * Messages sorted by: [ date ]<http://lists.openmicroscopy.org.uk/pipermail/ome-users/2012-May/date.html#3058> [ thread ]<http://lists.openmicroscopy.org.uk/pipermail/ome-users/2012-May/thread.html#3058> [ subject ]<http://lists.openmicroscopy.org.uk/pipermail/ome-users/2012-May/subject.html#3058> [ author ]<http://lists.openmicroscopy.org.uk/pipermail/ome-users/2012-May/author.html#3058>
> > >
> > >
> > >
> > >
> > >
> > > Hi Jürgen,
> > >
> > >
> > >
> > > > I have some image data in MetaMorph format. The Image format is
> > > > not
> > >
> > > > supported by Omero and I have to create an OME-XML header prior to
> > >
> > > > importing the data.
> > >
> > >
> > >
> > > MetaMorph data is definitely supposed to be supported. Could you
> > > please
> > >
> > > tell us what goes wrong when you try to import it into OMERO (as the
> > >
> > > simplest solution is almost always to just import the original data)?
> > >
> > >
> > >
> > > > Each channel (I have two, DAPI and GFP) is saved in a single separate image.
> > >
> > > >
> > >
> > > > For further processing I would like to combine the two channel
> > >
> > > > images into a multi-layer tif file with a single header.
> > >
> > > >
> > >
> > > > I can do using convert from the imagemagick pckage:
> > >
> > > >
> > >
> > > > convert file1.tif file2.tif output.tif
> > >
> > > >
> > >
> > > > But that literally just concatenates the two files, resulting in a
> > >
> > > > multi-layer file but also in two headers, so I have
> > >
> > > >
> > >
> > > > Exif.Image.Description
> > >
> > > >
> > >
> > > > as well as:
> > >
> > > >
> > >
> > > > Exif.Image2.Description
> > >
> > > >
> > >
> > > > Does anyone know of a tool to properly combine the two tiff files
> > >
> > > > resulting in a new multi-layer tif file with a single header?
> > >
> > >
> > >
> > > I believe this:
> > >
> > >
> > >
> > > http://www.imagemagick.org/Usage/color_basics/#combine
> > >
> > >
> > >
> > > and this:
> > >
> > >
> > >
> > > http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=1353
> > > 4
> > >
> > >
> > >
> > > explain how to do what you want in ImageMagick.
> > >
> > >
> > >
> > > Regards,
> > >
> > > -Melissa
> > >
> > >
> > >
> > > On Mon, May 14, 2012 at 06:15:24PM +0200, Dr. Juergen helmers wrote:
> > >
> > > > Hi!
> > >
> > > >
> > >
> > > > I have some image data in MetaMorph format. The Image format is
> > > > not
> > >
> > > > supported by Omero and I have to create an OME-XML header prior to
> > >
> > > > importing the data.
> > >
> > > >
> > >
> > > > Each channel (I have two, DAPI and GFP) is saved in a single separate image.
> > >
> > > >
> > >
> > > > For further processing I would like to combine the two channel
> > >
> > > > images into a multi-layer tif file with a single header.
> > >
> > > >
> > >
> > > > I can do using convert from the imagemagick pckage:
> > >
> > > >
> > >
> > > > convert file1.tif file2.tif output.tif
> > >
> > > >
> > >
> > > > But that literally just concatenates the two files, resulting in a
> > >
> > > > multi-layer file but also in two headers, so I have
> > >
> > > >
> > >
> > > > Exif.Image.Description
> > >
> > > >
> > >
> > > > as well as:
> > >
> > > >
> > >
> > > > Exif.Image2.Description
> > >
> > > >
> > >
> > > > Does anyone know of a tool to properly combine the two tiff files
> > >
> > > > resulting in a new multi-layer tif file with a single header?
> > >
> > > >
> > >
> > > > Thanks Juergen
> > >
> > > >
> > >
> > > > --
> > >
> > > > *Dr. Jürgen Helmers*
> > >
> > > > /Chief Developer/ | webnow | http://www.web-now.de
> > >
> > > > *email:*juergen.helmers at
> > > > gmail.com<http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-
> > > > us
> > > > ers> | *tel:*+49 30 37301306 | *skype:*
> > >
> > > > helmerj
> > >
> > >
> > >
> > > > _______________________________________________
> > >
> > > > ome-users mailing list
> > >
> > > > ome-users at
> > > > lists.openmicroscopy.org.uk<http://lists.openmicroscopy.org.uk/mai
> > > > lm
> > > > an/listinfo/ome-users>
> > >
> > > > http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users
> > >
> >
> > > _______________________________________________
> > > ome-devel mailing list
> > > ome-devel at lists.openmicroscopy.org.uk
> > > http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel
> >
More information about the ome-devel
mailing list