From 3f0823138691f922de8a3ebc63e7a66ef509ee22 Mon Sep 17 00:00:00 2001 From: Tom-TBT Date: Fri, 2 May 2025 21:24:39 +0200 Subject: [PATCH 1/4] listing annotation support for Roi --- src/omero/gateway/__init__.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/omero/gateway/__init__.py b/src/omero/gateway/__init__.py index 67fe28b1d..4c11961e4 100644 --- a/src/omero/gateway/__init__.py +++ b/src/omero/gateway/__init__.py @@ -154,9 +154,9 @@ def getAnnotationLinkTableName(objecttype): if objecttype == "project": return "ProjectAnnotationLink" if objecttype == "dataset": - return"DatasetAnnotationLink" + return "DatasetAnnotationLink" if objecttype == "image": - return"ImageAnnotationLink" + return "ImageAnnotationLink" if objecttype == "screen": return "ScreenAnnotationLink" if objecttype == "plate": @@ -165,6 +165,8 @@ def getAnnotationLinkTableName(objecttype): return "PlateAcquisitionAnnotationLink" if objecttype == "well": return "WellAnnotationLink" + if objecttype == "roi": + return "RoiAnnotationLink" return None @@ -5237,7 +5239,7 @@ def setValue(self, val): # pragma: no cover def getParentLinks(self, ptype, pids=None): ptype = ptype.title().replace("Plateacquisition", "PlateAcquisition") objs = ('Project', 'Dataset', 'Image', 'Screen', - 'Plate', 'Well', 'PlateAcquisition') + 'Plate', 'Well', 'PlateAcquisition', 'Roi') if ptype not in objs: raise AttributeError( "getParentLinks(): ptype '%s' not supported" % ptype) @@ -9491,7 +9493,7 @@ def _wordwrap(self, width, text, font): p1 = 0 p2 = 1 while (p2 <= len(tokens) and - (font.getbbox(' '.join(tokens[p1:p2]))[2] - + (font.getbbox(' '.join(tokens[p1:p2]))[2] - font.getbbox(' '.join(tokens[p1:p2]))[0]) < width): p2 += 1 rv.append(' '.join(tokens[p1:p2-1])) @@ -10407,9 +10409,9 @@ def getROIs(self, shapeType=None, filterByCurrentUser=False): filterByCurrentUser is True, otherwise the total rois found. """ - return [RoiWrapper(self._conn, roi) for roi in + return [RoiWrapper(self._conn, roi) for roi in self._get_rois(shapeType, filterByCurrentUser)] - + def getROICount(self, shapeType=None, filterByCurrentUser=False): """ From bf7005acb787af6c198b4434b9f3e1eab265cccd Mon Sep 17 00:00:00 2001 From: Tom-TBT Date: Fri, 2 May 2025 21:25:20 +0200 Subject: [PATCH 2/4] fixed TagAnnotationWrapper docstring --- src/omero/gateway/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/omero/gateway/__init__.py b/src/omero/gateway/__init__.py index 4c11961e4..b43665a06 100644 --- a/src/omero/gateway/__init__.py +++ b/src/omero/gateway/__init__.py @@ -5593,7 +5593,7 @@ def setValue(self, val): class TagAnnotationWrapper (AnnotationWrapper): """ - omero_model_BooleanAnnotationI class wrapper extends AnnotationWrapper. + omero_model_TagAnnotationWrapper class wrapper extends AnnotationWrapper. """ OMERO_TYPE = TagAnnotationI From 1a7df42f3587009a75d2443f5e166b00de7e7716 Mon Sep 17 00:00:00 2001 From: Tom-TBT Date: Fri, 2 May 2025 21:54:44 +0200 Subject: [PATCH 3/4] wrap shapes from getShapes in ROIWrapper --- src/omero/gateway/__init__.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/omero/gateway/__init__.py b/src/omero/gateway/__init__.py index b43665a06..8f12a07a9 100644 --- a/src/omero/gateway/__init__.py +++ b/src/omero/gateway/__init__.py @@ -5958,6 +5958,16 @@ def getImage(self): if self._obj.image is not None: return ImageWrapper(self._conn, self._obj.image) + def getShapes(self): + """ + Gets shapes associated to an ROI. + Shapes must be pre-loaded, use opts={"load_shapes":True} + + :return: list of shapes in this ROI. + """ + return [ShapeWrapper(self._conn, shape) for shape in + self._obj._shapesSeq] + RoiWrapper = _RoiWrapper From ff1936bb9a73a4306e155a2b2876d04590f9da3f Mon Sep 17 00:00:00 2001 From: Tom-TBT Date: Tue, 2 Dec 2025 11:33:03 +0100 Subject: [PATCH 4/4] changed _RoiWrapper getShapes to listChildren (for backward compatibility of getShapes) --- src/omero/gateway/__init__.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/omero/gateway/__init__.py b/src/omero/gateway/__init__.py index 8f12a07a9..2e80e9ccc 100644 --- a/src/omero/gateway/__init__.py +++ b/src/omero/gateway/__init__.py @@ -5922,8 +5922,6 @@ class _RoiWrapper (BlitzObjectWrapper): omero_model_ExperimenterI class wrapper extends BlitzObjectWrapper. """ OMERO_CLASS = 'Roi' - # TODO: test listChildren() to use ShapeWrapper? or remove? - CHILD_WRAPPER_CLASS = 'ShapeWrapper' @classmethod def _getQueryString(cls, opts=None): @@ -5958,7 +5956,7 @@ def getImage(self): if self._obj.image is not None: return ImageWrapper(self._conn, self._obj.image) - def getShapes(self): + def listChildren(self): """ Gets shapes associated to an ROI. Shapes must be pre-loaded, use opts={"load_shapes":True}