<div dir="ltr">Hi Chris,<div><br></div><div>TL;DR: Embed the OME-XML into one or more OME-TIFF headers. Do not rely solely on a companion file.</div><div><br></div><div>-------------</div><div><br></div><div>For what it's worth, here is how we do multi-file multi-page OME-TIFF format with WiscScan:</div><div><br></div><div>- We write all focal planes for a given timepoint+position+channel to a single OME-TIFF file.</div><div>- Each timepoint, position and channel gets its own OME-TIFF file.</div><div><br></div><div>E.g.:</div><div>HCx19_Ant_LP3_A1_C<c>_TP<t>_SP<sp>_FW<fw>.ome.tiff<br></div><div><br></div><div>Where:</div><div>- '<c>' is the 0-indexed channel number, i.e. the OME C dimension</div><div>- '<t>' is the 0-indexed timepoint, i.e. the OME T dimension</div><div>- '<sp>' is the 0-indexed stage position, with each constituting a separate OME Image</div><div>- '<fw>' is the 0-indexed filter wheel filter number, when imaging with multiple filters, with each constituting a separate OME Image</div><div><br></div><div>So you end up with a collection of OME-TIFF files described by an OME-XML block which may span multiple <Image> elements—one per <sp>+<fw> combination. This scheme is extensible to any number of extra 'dimensions' although of course the OME-XML won't retain any structural details of how these various Image elements are related.</div><div><br></div><div>As for storing actual OME-XML string:</div><div><br></div><div>- We store the full thing into the first (0, 0, ..., 0) TIFF file ImageDescription (as per the spec [1])</div><div><br></div><div>- We store the full thing again into every Nth TIFF file, where N is configurable but typically 10</div><div><br></div><div>- In the other OME-TIFFs, we write an OME-XML stub using the <BinaryOnly> element—e.g.:</div><div><br></div><div><div><?xml version="1.0" encoding="UTF-8" standalone="no"?><OME xmlns="<a href="http://www.openmicroscopy.org/Schemas/OME/2012-06" target="_blank">http://www.openmicroscopy.org/Schemas/OME/2012-06</a>" xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>" xsi:schemaLocation="<a href="http://www.openmicroscopy.org/Schemas/OME/2012-06" target="_blank">http://www.openmicroscopy.org/Schemas/OME/2012-06</a> <a href="https://www.openmicroscopy.org/Schemas/OME/2012-06/ome.xsd" target="_blank">https://www.openmicroscopy.org/Schemas/OME/2012-06/ome.xsd</a>"><BinaryOnly MetadataFile="HCx33_Post_Long_20xObj_x1pt5_int10_p220_g282_xystep383pt4_zstep27_C0_TP0_SP0_FW0.ome.tiff" UUID="urn:uuid:a14af27e-c6f0-48b4-bb14-e0d4f98925f0"/></OME></div></div><div><br></div><div>For us, this is a nice compromise between redundancy (in case one or more TIFF files are lost) and efficiency (since the OME-XML can become several megabytes or more in size).</div><div><br></div><div>We also write out a copy of the OME-XML metadata to a companion file, but this is for the user's convenience only—it is not used or referenced from the actual OME-TIFF files. When OME-TIFF was first invented, it was deemed an important quality that the metadata _not_ be stored only in a separate companion file, because users would too frequently lose or delete said metadata file, leaving them in a bad place.</div><div><br></div><div>To actually do the work:</div><div><br></div><div>- WiscScan uses the Bio-Formats C++ bindings to build up the OME-XML.</div><div><br></div><div>- The OME-XML is kept in the Bio-Formats memory structure as it is being built up.<br></div><div><br></div><div>- It is written out to the temporary companion file as the run proceeds, in case of a crash.</div><div><br></div><div>- WiscScan writes the TIFF binary data using libtiff, leaving a placeholder stub in ImageDescription for later overwriting with the OME-XML.</div><div><br></div><div>- When the OME-XML is finalized (i.e. when the run is complete, and all metadata is known and populated into the data structure), then the OME-XML is appended to the relevant TIFF file(s) efficiently, using the Bio-Formats "overwrite comment" approach [2].</div><div><br></div><div>Maybe some of that helps you guys? I wish you luck with it.</div><div><br></div><div>Regards,</div><div>Curtis</div><div><br></div><div>[1] <a href="https://www.openmicroscopy.org/site/support/ome-model/ome-tiff/specification.html#distributing-an-image-sequence-across-multiple-ome-tiff-files" target="_blank">https://www.openmicroscopy.org/site/support/ome-model/ome-tiff/specification.html#distributing-an-image-sequence-across-multiple-ome-tiff-files</a></div><div>[2] <a href="https://github.com/openmicroscopy/bioformats/blob/v5.1.8/components/formats-bsd/src/loci/formats/tiff/TiffSaver.java#L870-L875" target="_blank">https://github.com/openmicroscopy/bioformats/blob/v5.1.8/components/formats-bsd/src/loci/formats/tiff/TiffSaver.java#L870-L875</a></div><div class="gmail_extra"><br clear="all"><div><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><span style="font-size:12.8px">--</span></div><div><span style="font-size:12.8px">Curtis Rueden</span><br></div><div><span style="font-size:12.8px">LOCI software architect - <a href="http://loci.wisc.edu/software" target="_blank">http://loci.wisc.edu/software</a></span></div><div>ImageJ2 lead, Fiji maintainer - <span style="font-size:12.8px"><a href="http://imagej.net/User:Rueden" target="_blank">http://imagej.net/User:Rueden</a></span></div><div>Did you know ImageJ has a forum? <a href="http://forum.imagej.net/" target="_blank">http://forum.imagej.net/</a></div><div><br></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Wed, Apr 13, 2016 at 12:26 PM, Chris Weisiger <span dir="ltr"><<a href="mailto:cweisiger@msg.ucsf.edu" target="_blank">cweisiger@msg.ucsf.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hello all,<br><br></div><div>After discussion with some of our users and with the OME developers, I'm creating this thread to invite comments on a proposed minor change to µManager's "image stack file" storage format, in µManager 2.0 only (1.4 would not be changed). The "image stack file" format (which is the default format) stores multiple image planes in the same TIFF file. This change would be to the situation where multiple of these multi-plane TIFF files are generated in a single dataset.<br><br></div><div>µManager writes multiple TIFF files in two situations: first, if there is more than 4GB of data to store (as our TIFFs don't yet support BigTIFF), and second, if the user has elected to store data for each stage position in a separate file. Currently, the OME XML is written to a single one of these files, and the other files are "pointed" to that file so they know where to look to load the data in the XML. Thus in order to load any file in the dataset, you must have not only that file, but also the TIFF file that contains the OME XML.<br><br></div><div>The proposal is to instead write the XML to a newly-created file (tentatively named "OMEXMLMetadata.companion.ome") that would exist in the same directory as the TIFF files, display settings, comments, and metadata.txt, as appropriate. As before, the TIFF files would be "pointed" to this file; it would need to be present to use the BioFormats Importer or any other OME library loader.<br><br></div><div>In situations where there is only one TIFF file, the OME XML would still be stored in that TIFF file; the "OMEXMLMetadata.companion.ome" file would not be generated. For reference, the XML would look something like this:<br><br><a href="http://pastebin.com/cTzcQwEZ" target="_blank">http://pastebin.com/cTzcQwEZ</a><br><br></div><div>I've tested this change locally and haven't detected any problems, but I'm not familiar with the kinds of workflows that our users may want to perform, so any comments are welcome. Thanks for your time.<br><br></div><div>-Chris Weisiger and the µManager dev team<br></div></div>
<br>_______________________________________________<br>
ome-devel mailing list<br>
<a href="mailto:ome-devel@lists.openmicroscopy.org.uk" target="_blank">ome-devel@lists.openmicroscopy.org.uk</a><br>
<a href="http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel" rel="noreferrer" target="_blank">http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel</a><br>
<br></blockquote></div><br></div></div>