[ome-devel] Integrating OMERO with DiGS
josh.moore at gmx.de
josh.moore at gmx.de
Mon Jul 28 11:09:19 BST 2008
James Perry writes:
> Hi all,
Hi James.
> Apologies if this is not the appropriate list for asking about this.
Completely appropriate.
> I am based at Edinburgh Parallel Computing Centre, working on the
> "Data Grid For Cell Biology" project. The project aims to adapt the
> Distributed Grid Storage (DiGS) software, which was originally
> developed for particle physics data, and use it for storing cell
> biology data. As part of this work we would like our software to
> integrate as well as possible with OMERO.
Sounds great. Hopefully we can be of help.
> DiGS manages a "virtual file system" which distributes files
> transparently across storage at several sites, and replicates them so
> that there are multiple copies. It also manages a database of XML
> metadata describing the data files, and allows users to search this
> database.
> At a minimum, we would like to use the same data formats as OMERO
> (OME-TIFF for image data, OME-XML for metadata), but ideally we would
> like a much closer integration. For example, data uploaded to OMERO by
> a user would automatically be replicated by DiGS and become available
> at another site (either through a DiGS client tool, yet to be written,
> or possibly even through another OMERO server). I have obtained the
> OMERO server and clients and have been studying them to find out how
> difficult this would be.
This sort of federation shouldn't be too difficult and is something
that has certainly been discussed, but building a general-purpose
federation client has not yet been scheduled.
> From what I have seen, I think it would be better for DiGS to go
> through the OMERO APIs to access image files rather than attempting to
> manipulate the OMERO data store directly. As I understand it, the data
> store is in an OMERO internal format which may change in different
> versions and may not be readable by other software. I was wondering if
> there are APIs to do things like the following:
Definitely. What programming language are you looking to do this in?
Currently, C++, Python, and Java are supported.
> - read images from an OMERO server (in their original format, or at
> least in a standard image format)
If during import, the original image was stored then you can use the
RawFileStore to retrieve the entire file:
http://hudson.openmicroscopy.org.uk/job/OMERO/javadoc/ome/api/RawFileStore.html
However, most clients use the RawPixelsStore which returns sections of
binary data with methods for calculating size, offsets, etc:
http://hudson.openmicroscopy.org.uk/job/OMERO/javadoc/ome/api/RawPixelsStore.html
> - write images to an OMERO server
The same interfaces are used, for example by the importer. See the
importImage() method at:
https://trac.openmicroscopy.org.uk/omero/browser/trunk/components/importer/src/ome/formats/importer/ImportLibrary.java#L341
> - get image properties (for example, file size, upload time,
> - owner)
Definitely. The most low-level api is IQuery:
http://hudson.openmicroscopy.org.uk/job/OMERO/javadoc/ome/api/IQuery.html
which provides access to the entire database. However, you may want to
get started with IPojos:
http://hudson.openmicroscopy.org.uk/job/OMERO/javadoc/ome/api/IPojos.html
which is a higher-level interface that loads all of the necessary and
much of the otherwise useful metadata.
> - enumerate images
Do you mean obtaining a list of images? If so, then yes:
iQuery.findAll(Image.class, null)
But there are various other ways to get a list of images (or any other
data type).
Note: the list returned will be filtered by the security system.
> - access other files (for example, documents attached to images)
RawFileStore can be used to download the attached images. See
StructuredAnnotations:
https://trac.openmicroscopy.org.uk/omero/wiki/StructuredAnnotations
for information on how these files get attached.
> - access the OME-XML metadata (read/write)
I'm not exactly sure what you mean, but in general all metadata that
is imported is available through the API. Can you give a concrete example?
> I have been looking at the OmeroApi pages on the Wiki but so far I
> can't tell for certain whether all these things are supported.
Everything described on OmeroApi is supported, but you may want to look at the
Javadocs for more in-depth coverage. (Even for the C++ and Python
language mappings, we use javadoc as the central API definition
currently.)
> Any help or information would be greatly appreciated.
>
> Thanks,
> James Perry
Best wishes,
~Josh.
More information about the ome-devel
mailing list