ome / omero-figure

An OMERO.web app for creating Figures from images in OMERO
http://figure.openmicroscopy.org
GNU Affero General Public License v3.0
15 stars 30 forks source link

Handle image loading errors #532

Closed will-moore closed 6 months ago

will-moore commented 7 months ago

See https://forum.image.sc/t/misleading-error-message-in-omero-figure/68642

Also fixes #347.

This aims to improve the handling of errors when adding Images to Figures. We try to avoid the errors reported on that issue, so that Images can load OK with missing pixel size info. Also, if there is any Exception message coming from https://github.com/ome/omero-web/blob/604d5279c96909a6862e4b1fc67de4f0a8699298/omeroweb/webgateway/marshal.py#L178 then we display it and don't try to add the Image to the figure.

To test: One way to trigger one of the exception on #347 is to use the script below to unset pixelsize-Y. They should now be added to OMERO.figure OK (no error).

Invalid images (failed imports etc) should now give an appropriate error and NOT be added to the figure, but I don't know an easy way to generate such images?

import argparse
import sys

import omero
import omero.clients
from omero.model.enums import UnitsLength
from omero.cli import cli_login
from omero.gateway import BlitzGateway

def set_pixels_size(conn, image):

    pixelSize = omero.model.LengthI(5, UnitsLength.MICROMETER)
    pixels = image.getPrimaryPixels()._obj
    pixels.setPhysicalSizeX(pixelSize)
    pixels.setPhysicalSizeY(None)
    pixels.setPhysicalSizeZ(pixelSize)
    conn.getUpdateService().saveObject(pixels)

def main(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('image', help='Image ID')
    args = parser.parse_args(argv)

    with cli_login() as cli:
        conn = BlitzGateway(client_obj=cli._client)
        image = conn.getObject("Image", args.image)
        set_pixels_size(conn, image)

if __name__ == '__main__':  
    main(sys.argv[1:])
imagesc-bot commented 7 months ago

This pull request has been mentioned on Image.sc Forum. There might be relevant details there:

https://forum.image.sc/t/misleading-error-message-in-omero-figure/68642/7

pwalczysko commented 6 months ago

Works fine with https://merge-ci.openmicroscopy.org/web/webclient/?show=image-4617 user-3 (with this PR) - this image has no physical sizeY set. An image with no physical sizeY set on outreach server (without this PR) causes error in OMERO.figure, see below.

Screenshot 2023-12-13 at 17 46 22

lgtm