[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