<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Dear Christoph,<div class=""><br class=""></div><div class="">We have also faced those problems because the default image opener is trying to get the metadata for every file.</div><div class="">I really recommend you to make own ImageStack class for reading the metadata just once for your whole series.</div><div class=""><br class=""></div><div class="">We had to create our version of VirtualStack class based on <a href="https://imagej.nih.gov/ij/plugins/virtual-opener.html" class="">https://imagej.nih.gov/ij/plugins/virtual-opener.html</a> to avoid redundant metadata reading. The below code is not a perfect version, please, use it as a reference.</div><div class=""><br class=""></div><div class=""><div class="">Hopefully, it will help you.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">HongKee</div></div><div class=""><br class=""></div><div class="">———————————————————</div><div class=""><br class=""></div><div class=""><div class="">import ij.ImageStack;</div><div class="">import ij.process.ByteProcessor;</div><div class="">import ij.process.ImageProcessor;</div><div class="">import loci.formats.FormatException;</div><div class="">import loci.formats.ImageReader;</div><div class="">import loci.plugins.util.ImageProcessorReader;</div></div><div class=""><br class=""></div><div class=""><div class="">import loci.common.services.DependencyException;</div><div class="">import loci.common.services.ServiceException;</div><div class="">import loci.common.services.ServiceFactory;</div><div class="">import loci.formats.FormatException;</div><div class="">import loci.formats.ImageReader;</div><div class="">import loci.formats.meta.IMetadata;</div><div class="">import loci.formats.services.OMEXMLService;</div></div><div class=""><br class=""></div><div class=""><div class="">public class MyImageStack extends ImageStack</div><div class="">{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>private int bitDepth;</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>private int width, height;</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>ImageProcessorReader imageProcessorReader;</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>private int zSize = 1, tSize = 1, cSize = 1;</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>private int cEffectiveSize = 1;</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>public void addSlice( String path )</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>if(path != null)</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>if(width == 0)</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>// create format reader</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>ImageReader reader = getImageReader( path );</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>// output dimensional information</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>int sizeX = reader.getSizeX();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>this.width = sizeX;</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>int sizeY = reader.getSizeY();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>this.height = sizeY;</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>// System.out.println("Effective C" + reader.getEffectiveSizeC());</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>setcEffectiveSize( reader.getEffectiveSizeC() );</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>int sizeC = reader.getSizeC();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>int sizeZ = reader.getSizeZ();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>int sizeT = reader.getSizeT();</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>// System.out.println( "C=" + sizeC + " Z=" + sizeZ + " T=" + sizeT );</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>setcSize( sizeC );</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>setzSize( sizeZ );</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>settSize( sizeT );</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>this.bitDepth = reader.getBitsPerPixel();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>this.imageProcessorReader = new ImageProcessorReader( reader );</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>public ImageProcessor getProcessor(int n) </div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>// properly implement to get ImageProcessor based on n</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>public static ImageReader getImageReader( String path )</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>ImageReader reader = null;</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>try</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>ServiceFactory factory = new ServiceFactory();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>OMEXMLService service = factory.getInstance(OMEXMLService.class);</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>IMetadata meta = service.createOMEXMLMetadata();</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>// create format reader</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>reader = new ImageReader();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>reader.setMetadataStore(meta);</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>// initialize file</div><div class="">//<span class="Apple-tab-span" style="white-space:pre"> </span>System.out.println(path);</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>reader.setId( path );</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>catch ( DependencyException e )</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>e.printStackTrace();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>catch ( ServiceException e )</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>e.printStackTrace();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>catch ( IOException e )</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>e.printStackTrace();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>catch ( FormatException e )</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>e.printStackTrace();</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>return reader;</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class="">}</div></div><div class=""><br class=""></div><div class="">———————————————</div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 6, 2017, at 10:43 AM, Christoph Sommer <<a href="mailto:christoph.sommer@ist.ac.at" class="">christoph.sommer@ist.ac.at</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Dear OpenSpim folks,<br class=""><br class="">thanks for creating such a great resource!<br class=""><br class="">We are currently using an OpenSpim setup and the created output is a multi-file ome-tiff. For many applications (e.g. the MVR from Stephan Preibisch et al.) we need to convert the ome-tiff to normal tiff.<br class=""><br class="">Unfortunately, for long time-lapse the conversion takes forever, since for each conversion step all meta-data is parsed from each single time point. My script uses the Bioformats ImporterOptions class, but I can't see how I can bypass the meta-data parsing. I also tried the 'bvconvert' command line script but also got issues there. Also reading from Python (e.g. with the module 'tifffile' only return always the first angle image-stack...)<br class=""><br class="">Would you have any idea?<br class=""><br class="">Cheers,<br class=""><br class="">Chris<br class=""><br class=""><br class="">_______________________________________________<br class="">OpenSPIM mailing list<br class=""><a href="mailto:OpenSPIM@openspim.org" class="">OpenSPIM@openspim.org</a><br class="">http://openspim.org/mailman/listinfo/openspim<br class=""></div></div></blockquote></div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class="">--<br class="">HongKee Moon<br class="">Scientific Software Engineer<br class="">Scientific Computing Facility<br class=""><br class="">Max Planck Institute of Molecular Cell Biology and Genetics<br class="">Pfotenhauerstr. 108<br class="">01307 Dresden<br class="">Germany<br class=""><br class="">fon: +49 351 210 1923<br class="">fax: +49 351 210 1907<br class=""><a href="http://www.mpi-cbg.de" class="">www.mpi-cbg.de</a></div></div>
</div>
<br class=""></div></body></html>