OMX vs DV metadata in OMERO

I’m looking for a way to fix “original metadata” that are imported with the wrong units in OMERO.

It turns out that log files that contain metadata from “.dv” files acquired on a wide field Deltavision system using softWorX are different than log files from “.dv” files acquired on an OMX - specifically an OMX V4. The log files from the OMX are missing important information.

Recently, I imported a bunch of fluorescence image OMX data into my OMERO server and noticed that the exposure times were quite long (minutes). I traced this to the fact that there are no units associated with “exposure time” in the log file that is processed along with the image, and that in the absence of units, OMERO assumes seconds, while the log file is actually displaying milliseconds.

Here is the relevant portion of the log file for an image that was exposed for 100 msec from our OMX.

exposure      = 100

After import into OMERO, the “exposure = 100” is preserved in the original metadata, but has been parsed as 1min 40s (i.e. 100s) in “Exposure Time” in the channel specific metadata.

This is in contrast to the log file that is generated for another “.dv” file from our wide field Deltavision system, where the time units are specified.

Exposure time: 0.170000 secs

I realize that this is probably one of those “metadata stored in a breaking variant of the file format” problems and I’ve already contacted Cytiva to ask them to update their OMX log file format to include units, but I don’t think it’s very high on their priority list. And, maybe someone else will run into this same issue.

Is there any way to fix this in a batch manner after import, (say, by dividing the exposure time by 1000 for all images in a specific dataset?) maybe using the CLI tools?

Thanks for any help from the community,

Hi @steveo I don’t think it’s a lot of work to do this in a python script, the API exposes a
setExposureTime method, if the conversion factor is indeed always 1000.

1 Like

Thanks @gylg -

Your tip allowed me to do what I wanted to do using the Python API. Took a couple of weeks to get the basics of interacting with the server sorted and then I stumbled across one of the ome team’s maintenance scripts for their training servers “” that I was able to extract pieces from and modify. Pretty sure it’s not the easiest way to do it, but I put a notebook here if anybody is looking to do something similar.

1 Like

Hi @steveo - happy I could help!