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

Brian Loranger brian.loranger at lifesci.dundee.ac.uk
Fri Apr 10 12:16:51 BST 2009


Hi everyone,

First of all, good news Caterina. The Leica error you were having  
should be fixed in the upcoming release. (Due out VERY soon).

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