[ome-users] Leica .lif imports

Paulo Almeida palmeida at igc.gulbenkian.pt
Thu Apr 9 17:18:24 BST 2009


Hi Caterina,

Yes, I think the .lif format is challenging because of the tree-like structure 
inside. From what I've seen, Leica software does create a tree, but I don't 
know if that would be easy, or even possible, in Omero. I suppose you could 
also create a dataset for each .lif, with all the images inside. I think 
there was an e-mail on this list where the developers mentioned this issue, a 
long time ago, but I don't remember what their solution was, or if there was 
one.

As for the second point, I do not do microscopy myself, and I just opened some 
files that someone sent me months ago, so I wouldn't know if the metadata is 
correct. I haven't had the chance to try doing uploads with a user yet, but I 
will report back if I get any useful feedback.

Best regards,
Paulo

On Tuesday 07 April 2009 14:25:54 Caterina Strambio De Castillia wrote:
> Hi Paulo
> thank you for your reply and help.
>
> As far as fixing my .lif import bug, I am not a developer (yet) and I
> cannot think of solving it myself. I will have to rely on the OMERO
> developers for this one.
>
> As far as the more general .lif handling by OMERO, your post raises
> two interesting points:
>
> 1) the .lif file is actually more like a directory file with multiple
> "acquisitions" stored into it (each of which could be composed of
> several actual image-plane files).
> The ability for OMERO to sort through each "acquisition" and import
> it as a separate, correctly named, OMERO-image would  actually be
> quite critical even though I am not sure how easy it is to implement.
>
> It is clear though that with heavy SP5 usage users would be
> discouraged from using OMERO if they have to go through renaming
> their files once they have been imported into OMERO. I have found
> myself in that position when importing into imageJ and it is really
> hard especially because one looses all tracks of which image is which
> without a meaningful file name matched with each image.
>
> So solving this problem will be critical.
>
> One possible way to implement would be to treat each .lif file at the
> Project level with each "acquisition" stored as an image inside the
> Project.
>
>
> 2) A related issue, did you notice if the metadata was imported
> correctly for each "acquisition" in the .lif file?
> In other words, did each image imported into OMERO have its own set
> of correct metadata (some of the metadata would be shared, other such
> as the specifics of each acquisition, would be clearly different).
>
> Thank you for your imput
>
> CIAO
> Caterina
>
> > Hi Caterina,
> >
> > For what it's worth, I imported some Leica .lif files successfully
> > (probably
> > from an SP5 confocal, but I'm not sure). I grabbed the metadata of
> > one of
> > them in case it may be useful to determine why yours fail:
> >
> > Dimensions (XY) [px] 	512 x 512
> > Pixel size (XYZ) [µm] 	0.16017677 x 0.16017677 x 0.50020266
> > Z-sections 	39
> > Timepoints 	1
> >
> > I do have a problem. I imported several .lif files and they were
> > all named
> > Series001 in Omero (actually, Omero generated a Series001 and a
> > Series001_ProjMax001 for each of them), which I suspect won't be
> > convenient
> > for researchers. I don't know if that's a problem with my files,
> > but I am
> > going to talk with a user this afternoon (she talked to Jean Marie
> > when he
> > was here) and see how it works with hers.
> >
> > Regards,
> > Paulo
> >
> > On Thursday 02 April 2009 15:06:47 Caterina Strambio De Castillia
> >
> > wrote:
> > > Dear OMERO community,
> > >
> > > I have had problems importing Leica .lif files into the OMERO beta4
> > > DB using the latest release of the OMERO.importer.
> > >
> > > The error message I got is reported at the bottom of the message.
> > >
> > > Please advise
> > >
> > > Best
> > >
> > > Caterina
> > >
> > >
> > >
> > >
> > > ____________
> > >
> > > java.lang.RuntimeException: omero.InternalException
> > >      serverStackTrace = "ome.conditions.InternalException:  Wrapped
> > > Exception: (java.lang.IndexOutOfBoundsException):
> > >                          Index: 3, Size: 3
> > >                          	at java.util.ArrayList.RangeCheck
> > > (ArrayList.java:546)
> > >                          	at java.util.ArrayList.get
> >
> > (ArrayList.java:321)
> >
> > >                          	at ome.model.core.Pixels.getChannel
> > > (Pixels.java:1261)
> > >                          	at
> >
> > ome.formats.OMEROMetadataStore.getChannel
> >
> > > (OMEROMetadataStore.java:717)
> > >                          	at ome.formats.OMEROMetadataStore.handle
> > > (OMEROMetadataStore.java:359)
> > >                          	at
> > > ome.formats.OMEROMetadataStore.updateObject
> >
> > (OMEROMetadataStore.java:138)
> >
> > >                          	at ome.services.blitz.impl.MetadataStoreI
> > > $4.doWork(MetadataStoreI.java:144)
> > >                          	at
> > > sun.reflect.GeneratedMethodAccessor526.invoke(Unknown Source)
> > >                          	at
> > > sun.reflect.DelegatingMethodAccessorImpl.invoke
> > > (DelegatingMethodAccessorImpl.java:25)
> > >                          	at java.lang.reflect.Method.invoke
> > > (Method.java:585)
> > >                          	at
> >
> > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflectio
> > n(
> >
> > > AopUtils.java:310)
> > >                          	at
> >
> > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoi
> > np
> >
> > > oint(ReflectiveMethodInvocation.java:182)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:149)
> > >                          	at ome.services.util.Executor$Impl
> > > $Interceptor.invoke(Executor.java:377)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at ome.security.basic.EventHandler.invoke
> > > (EventHandler.java:116)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at
> > > org.springframework.orm.hibernate3.HibernateInterceptor.invoke
> > > (HibernateInterceptor.java:111)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at
> >
> > org.springframework.transaction.interceptor.TransactionInterceptor.inv
> > ok
> >
> > > e(TransactionInterceptor.java:106)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at ome.tools.hibernate.ProxyCleanupFilter
> > > $Interceptor.invoke(ProxyCleanupFilter.java:169)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at ome.services.util.ServiceHandler.invoke
> > > (ServiceHandler.java:97)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at
> > > org.springframework.aop.framework.JdkDynamicAopProxy.invoke
> > > (JdkDynamicAopProxy.java:204)
> > >                          	at $Proxy55.doWork(Unknown Source)
> > >                          	at ome.services.util.Executor$Impl.execute
> > > (Executor.java:307)
> > >                          	at ome.services.throttling.Adapter.run
> > > (Adapter.java:50)
> > >                          	at
> > > ome.services.throttling.InThreadThrottlingStrategy.runnableCall
> > > (InThreadThrottlingStrategy.java:51)
> > >                          	at
> > > ome.services.blitz.impl.AbstractAmdServant.runnableCall
> > > (AbstractAmdServant.java:128)
> > >                          	at
> > > ome.services.blitz.impl.MetadataStoreI.updateObjects_async
> > > (MetadataStoreI.java:129)
> > >                          	at
> > > omero.api._MetadataStoreTie.updateObjects_async
> > > (_MetadataStoreTie.java:85)
> > >                          	at
> > > omero.api._MetadataStoreDisp.___updateObjects
> >
> > (_MetadataStoreDisp.java:
> > > 166)
> > >                          	at omero.api._MetadataStoreDisp.__dispatch
> > > (_MetadataStoreDisp.java:308)
> > >                          	at IceInternal.Incoming.invoke
> > > (Incoming.java:166)
> > >                          	at Ice.ConnectionI.invokeAll
> > > (ConnectionI.java:2045)
> > >                          	at Ice.ConnectionI.message
> >
> > (ConnectionI.java:
> > > 977)
> > >                          	at IceInternal.ThreadPool.run
> > > (ThreadPool.java:575)
> > >                          	at IceInternal.ThreadPool.access$100
> > > (ThreadPool.java:12)
> > >                          	at IceInternal.ThreadPool
> > > $EventHandlerThread.run(ThreadPool.java:951)
> > >                          "
> > >      serverExceptionClass = "ome.conditions.InternalException"
> > >      message = " Wrapped Exception:
> > > (java.lang.IndexOutOfBoundsException):
> > >                 Index: 3, Size: 3"
> > > 	at ome.formats.OMEROMetadataStoreClient.saveToDB
> > > (OMEROMetadataStoreClient.java:2247)
> > > 	at ome.formats.importer.ImportLibrary.importMetadata
> > > (ImportLibrary.java:239)
> > > 	at ome.formats.importer.ImportLibrary.importImage
> >
> > (ImportLibrary.java:
> > > 328)
> > > 	at ome.formats.importer.ImportHandler.importImages
> > > (ImportHandler.java:181)
> > > 	at ome.formats.importer.ImportHandler.access$0
> >
> > (ImportHandler.java:107)
> >
> > > 	at ome.formats.importer.ImportHandler$1.run(ImportHandler.java:88)
> > > Caused by: omero.InternalException
> > >      serverStackTrace = "ome.conditions.InternalException:  Wrapped
> > > Exception: (java.lang.IndexOutOfBoundsException):
> > >                          Index: 3, Size: 3
> > >                          	at java.util.ArrayList.RangeCheck
> > > (ArrayList.java:546)
> > >                          	at java.util.ArrayList.get
> >
> > (ArrayList.java:321)
> >
> > >                          	at ome.model.core.Pixels.getChannel
> > > (Pixels.java:1261)
> > >                          	at
> >
> > ome.formats.OMEROMetadataStore.getChannel
> >
> > > (OMEROMetadataStore.java:717)
> > >                          	at ome.formats.OMEROMetadataStore.handle
> > > (OMEROMetadataStore.java:359)
> > >                          	at
> > > ome.formats.OMEROMetadataStore.updateObject
> >
> > (OMEROMetadataStore.java:138)
> >
> > >                          	at ome.services.blitz.impl.MetadataStoreI
> > > $4.doWork(MetadataStoreI.java:144)
> > >                          	at
> > > sun.reflect.GeneratedMethodAccessor526.invoke(Unknown Source)
> > >                          	at
> > > sun.reflect.DelegatingMethodAccessorImpl.invoke
> > > (DelegatingMethodAccessorImpl.java:25)
> > >                          	at java.lang.reflect.Method.invoke
> > > (Method.java:585)
> > >                          	at
> >
> > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflectio
> > n(
> >
> > > AopUtils.java:310)
> > >                          	at
> >
> > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoi
> > np
> >
> > > oint(ReflectiveMethodInvocation.java:182)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:149)
> > >                          	at ome.services.util.Executor$Impl
> > > $Interceptor.invoke(Executor.java:377)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at ome.security.basic.EventHandler.invoke
> > > (EventHandler.java:116)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at
> > > org.springframework.orm.hibernate3.HibernateInterceptor.invoke
> > > (HibernateInterceptor.java:111)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at
> >
> > org.springframework.transaction.interceptor.TransactionInterceptor.inv
> > ok
> >
> > > e(TransactionInterceptor.java:106)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at ome.tools.hibernate.ProxyCleanupFilter
> > > $Interceptor.invoke(ProxyCleanupFilter.java:169)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at ome.services.util.ServiceHandler.invoke
> > > (ServiceHandler.java:97)
> > >                          	at
> > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > > (ReflectiveMethodInvocation.java:171)
> > >                          	at
> > > org.springframework.aop.framework.JdkDynamicAopProxy.invoke
> > > (JdkDynamicAopProxy.java:204)
> > >                          	at $Proxy55.doWork(Unknown Source)
> > >                          	at ome.services.util.Executor$Impl.execute
> > > (Executor.java:307)
> > >                          	at ome.services.throttling.Adapter.run
> > > (Adapter.java:50)
> > >                          	at
> > > ome.services.throttling.InThreadThrottlingStrategy.runnableCall
> > > (InThreadThrottlingStrategy.java:51)
> > >                          	at
> > > ome.services.blitz.impl.AbstractAmdServant.runnableCall
> > > (AbstractAmdServant.java:128)
> > >                          	at
> > > ome.services.blitz.impl.MetadataStoreI.updateObjects_async
> > > (MetadataStoreI.java:129)
> > >                          	at
> > > omero.api._MetadataStoreTie.updateObjects_async
> > > (_MetadataStoreTie.java:85)
> > >                          	at
> > > omero.api._MetadataStoreDisp.___updateObjects
> >
> > (_MetadataStoreDisp.java:
> > > 166)
> > >                          	at omero.api._MetadataStoreDisp.__dispatch
> > > (_MetadataStoreDisp.java:308)
> > >                          	at IceInternal.Incoming.invoke
> > > (Incoming.java:166)
> > >                          	at Ice.ConnectionI.invokeAll
> > > (ConnectionI.java:2045)
> > >                          	at Ice.ConnectionI.message
> >
> > (ConnectionI.java:
> > > 977)
> > >                          	at IceInternal.ThreadPool.run
> > > (ThreadPool.java:575)
> > >                          	at IceInternal.ThreadPool.access$100
> > > (ThreadPool.java:12)
> > >                          	at IceInternal.ThreadPool
> > > $EventHandlerThread.run(ThreadPool.java:951)
> > >                          "
> > >      serverExceptionClass = "ome.conditions.InternalException"
> > >      message = " Wrapped Exception:
> > > (java.lang.IndexOutOfBoundsException):
> > >                 Index: 3, Size: 3"
> > > 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > > Method)
> > > 	at sun.reflect.NativeConstructorAccessorImpl.newInstance
> > > (NativeConstructorAccessorImpl.java:39)
> > > 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
> > > (DelegatingConstructorAccessorImpl.java:27)
> > > 	at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
> > > 	at java.lang.Class.newInstance0(Class.java:350)
> > > 	at java.lang.Class.newInstance(Class.java:303)
> > > 	at IceInternal.BasicStream
> >
> > $DynamicUserExceptionFactory.createAndThrow
> >
> > > (BasicStream.java:2127)
> > > 	at IceInternal.BasicStream.throwException(BasicStream.java:1541)
> > > 	at IceInternal.Outgoing.throwUserException(Outgoing.java:442)
> > > 	at omero.api._MetadataStoreDelM.updateObjects
> > > (_MetadataStoreDelM.java:177)
> > > 	at omero.api.MetadataStorePrxHelper.updateObjects
> > > (MetadataStorePrxHelper.java:254)
> > > 	at omero.api.MetadataStorePrxHelper.updateObjects
> > > (MetadataStorePrxHelper.java:226)
> > > 	at ome.formats.OMEROMetadataStoreClient.saveToDB
> > > (OMEROMetadataStoreClient.java:2230)
> > > 	... 5 more
> > >
> > >
> > >
> > >
> > > ____________________________
> > > Caterina Strambio De Castillia, Dottore in Biologia, PhD
> > >
> > > Biologiste 2 - Senior Research Scientist
> > > Laboratory of Viral replication, pathogenesis, and immunity
> > > http://www.mimo.unige.ch/luban_lab/
> > >
> > > Department of Microbiology and Molecular Medicine
> > > University of Geneva
> > > 1 Rue Michel Servet
> > > CH-1211 Geneva 4
> > > Switzerland
> > >
> > > Phone: +41-22-379-5720
> > > Fax: +41-22-379-5702
> > >
> > > ****
> > > Visiting Fellow
> > > Laboratory of Cellular and Structural Biology
> > > http://www.rockefeller.edu/labheads/rout/research_project_3.php
> > >
> > > The Rockefeller University
> > > 1230 York Avenue
> > > New York NY 10065
> > > ______________________________
> > > Caterina Strambio De Castillia
> > > via Monte Crenone 1
> > > 6500 Bellinzona
> > > Svizzera
> > >
> > > +41 91 8252701
> > > +41 78 7367537





More information about the ome-users mailing list