[ome-users] Leica (And other collection based file formats)

Paulo Almeida palmeida at igc.gulbenkian.pt
Tue Apr 14 10:03:03 BST 2009


Hi Brian,

I like (2) and (3). With (2) you can have the same behavior as in (1), if you 
create a new dataset, and you still have the flexibility of easily 
grouping .lifs in the same dataset, if that's what you want. It also avoids 
the situation of naming your dataset and that being ignored, which is not 
intuitive.

Tagging also sounds good. You could do it instead of (2) or even in addition 
to (2), because it would still make it easier to group images in the same 
collection.

Best,
Paulo


On Friday 10 April 2009 12:16:51 Brian Loranger wrote:
> Hi everyone,
>

> On the general topic of Leica imports (or for that matter, any imports
> that work off the idea of an experiment, acquisition, or other
> 'collection'): There was a discussion awhile back on how those images
> should be presented in OMERO, but I'd like to re-open that topic
> again. Currently the files are suppose to be imported with the naming
> convention used in the file itself. All fine and good, however it
> seems most people don't alter the auto-generated file names created
> during acquisition (its all in a custom-named experiment, so why
> should they?!)  As a result all the images from different collections
> are ending up with the same auto-generated names (Series 001, 002,
> 003, etc, for example), which makes a mess of things.
>
> Really I think there are a three options available on how to make this
> better:
>
>   1. Each collection would be imported into its own Dataset. So each
> collection would auto-generate a Dataset based on the collection's
> name, and all the images in that collection would then go into that
> Dataset. This means anything you entered for the Dataset name during
> import would be ignored in favour of a new collection-based Dataset.
>
> 2. All the images from your collection would be imported into the
> Dataset you choose during import, but the name of the file would be
> altered to include the original experiment followed by the image name,
> so for example: Experiment 1[image 1], Experiment 1[image 2], etc.
>
> 3. The third option is that we make no changes to the way images are
> collected and imported into the existing Dataset structure, but we tag
> each image with its collection. This would then allow us to organize
> them via smart folders, searches, etc.
>
> We certainly want to make sure we 'get this right'  - or at least come
> as close to 'right' as we can! So please do give us your opinions.
>
> Cheers,
>
> Brian Loranger
> Software Developer, Open Microscopy Environment
> Division of Gene Regulation and Expression
> University of Dundee
> (The University of Dundee is a registered Scottish charity, No:
> SC015096)
>
> On 7 Apr 2009, at 14:25, 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
> >
> > _______________________________________________
> > ome-users mailing list
> > ome-users at lists.openmicroscopy.org.uk
> > http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users





More information about the ome-users mailing list