From 4d999a614516a4bf1de5163407c17b256c68e52b Mon Sep 17 00:00:00 2001 From: pwalczysko Date: Thu, 21 Feb 2019 15:49:03 +0000 Subject: [PATCH 1/6] Add script for deletion of rendering settings on images --- maintenance/scripts/delete_rendering.py | 92 +++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 maintenance/scripts/delete_rendering.py diff --git a/maintenance/scripts/delete_rendering.py b/maintenance/scripts/delete_rendering.py new file mode 100644 index 00000000..3113ad6d --- /dev/null +++ b/maintenance/scripts/delete_rendering.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# ----------------------------------------------------------------------------- +# Copyright (C) 2017 University of Dundee. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# ------------------------------------------------------------------------------ + +""" +This script +""" + +import argparse +import omero +from omero.gateway import BlitzGateway + + +def run(name, password, dataset_name, dataset_id, host, port): + + conn = BlitzGateway(name, password, host=host, port=port) + try: + conn.connect() + roi_service = conn.getRoiService() + rnd_service = conn.getRenderingSettingsService() + datasets = [] + if dataset_id >= 0: + datasets.append(conn.getObject("Dataset", dataset_id)) + else: + datasets = conn.getObjects("Dataset", + attributes={"name": dataset_name}) + + print datasets + + for dataset in datasets: + print dataset.getId() + for image in dataset.listChildren(): + pixels = image.getPrimaryPixels() + result = roi_service.findByImage(image.getId(), None, + conn.SERVICE_OPTS) + #result2 = rnd_service.findByImage(image.getId(), None, conn.SERVICE_OPTS) + print pixels.getId() + params = omero.sys.ParametersI() + query = "from RenderingDef where pixels.id = '%s'" % pixels.getId() + query_service = conn.getQueryService() + result2 = query_service.findAllByQuery(query, params, conn.SERVICE_OPTS) + #print result2 + if result2 is not None: + rnd_ids = [rnd.id.val for rnd in result2] + if len(rnd_ids) > 0: + print "Deleting %s rnds..." % len(rnd_ids) + print rnd_ids + conn.deleteObjects("RenderingDef", rnd_ids, wait=True) + + except Exception as exc: + print "Error while deleting rendering: %s" % str(exc) + finally: + conn.close() + + +def main(args): + parser = argparse.ArgumentParser() + parser.add_argument('password') + parser.add_argument('--datasetid', default=-1, + help="The ID of the dataset") + parser.add_argument('--datasetname', default="", + help="The name of the dataset") + parser.add_argument('--name', default="trainer-1", + help="The user deleting the rois") + parser.add_argument('--server', default="outreach.openmicroscopy.org", + help="OMERO server hostname") + parser.add_argument('--port', default=4064, help="OMERO server port") + args = parser.parse_args(args) + run(args.name, args.password, args.datasetname, args.datasetid, + args.server, args.port) + + +if __name__ == '__main__': + import sys + main(sys.argv[1:]) From e4edef0f3c6e8d42d9ae839ca549f20d753a5535 Mon Sep 17 00:00:00 2001 From: pwalczysko Date: Thu, 21 Feb 2019 16:06:56 +0000 Subject: [PATCH 2/6] Clean up, delete commented out code --- maintenance/scripts/delete_rendering.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/maintenance/scripts/delete_rendering.py b/maintenance/scripts/delete_rendering.py index 3113ad6d..f48583d8 100644 --- a/maintenance/scripts/delete_rendering.py +++ b/maintenance/scripts/delete_rendering.py @@ -20,7 +20,8 @@ # ------------------------------------------------------------------------------ """ -This script +This script finds all rendering on images from a dataset specified +by dataset id or dataset name and deletes these rendering settings. """ import argparse @@ -33,7 +34,6 @@ def run(name, password, dataset_name, dataset_id, host, port): conn = BlitzGateway(name, password, host=host, port=port) try: conn.connect() - roi_service = conn.getRoiService() rnd_service = conn.getRenderingSettingsService() datasets = [] if dataset_id >= 0: @@ -41,24 +41,18 @@ def run(name, password, dataset_name, dataset_id, host, port): else: datasets = conn.getObjects("Dataset", attributes={"name": dataset_name}) - - print datasets for dataset in datasets: print dataset.getId() for image in dataset.listChildren(): pixels = image.getPrimaryPixels() - result = roi_service.findByImage(image.getId(), None, - conn.SERVICE_OPTS) - #result2 = rnd_service.findByImage(image.getId(), None, conn.SERVICE_OPTS) print pixels.getId() params = omero.sys.ParametersI() query = "from RenderingDef where pixels.id = '%s'" % pixels.getId() query_service = conn.getQueryService() - result2 = query_service.findAllByQuery(query, params, conn.SERVICE_OPTS) - #print result2 - if result2 is not None: - rnd_ids = [rnd.id.val for rnd in result2] + result = query_service.findAllByQuery(query, params, conn.SERVICE_OPTS) + if result is not None: + rnd_ids = [rnd.id.val for rnd in result] if len(rnd_ids) > 0: print "Deleting %s rnds..." % len(rnd_ids) print rnd_ids From 24c7a9b166cefc691351bf1f2c7f22e378713d03 Mon Sep 17 00:00:00 2001 From: pwalczysko Date: Mon, 25 Feb 2019 13:18:22 +0000 Subject: [PATCH 3/6] Rewrite the script for bash as per Mark's comment --- maintenance/scripts/delete_rendering.sh | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 maintenance/scripts/delete_rendering.sh diff --git a/maintenance/scripts/delete_rendering.sh b/maintenance/scripts/delete_rendering.sh new file mode 100644 index 00000000..cc1e3a83 --- /dev/null +++ b/maintenance/scripts/delete_rendering.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# +# This script deletes rnd settings on images in specified Datasets. +# Datasets can be specified either by name, such as +# DATASETNAME=svs bash delete_rendering.sh +# or by IDs (one or more, separated by comma), such as +# DATASETID=1868,2073 bash delete_rendering.sh + +echo Starting +OMEROPATH=${OMEROPATH:-/opt/omero/server/OMERO.server/bin/omero} +PASSWORD=${PASSWORD:-ome} +HOST=${HOST:-outreach.openmicroscopy.org} +DATASETNAME=${DATASETNAME:-siRNAi-HeLa} +DATASETIDS=${DATASETID:-none} +NUMBER=${NUMBER:-50} +OMEUSER=${OMEUSER:-trainer-1} + +$OMEROPATH login -u $OMEUSER -s $HOST -w $PASSWORD +result=`$OMEROPATH hql --ids-only --limit 1000 --style plain -q --all "SELECT id from Dataset WHERE name = '$DATASETNAME'"` +if [ "$DATASETIDS" = "none" ] +then + echo "none ID" + for i in $result + do + #remove the ordinal numbers + datasetids_raw+=${i#*,} + datasetids_raw+="," + done + dataset_number=${i%,*} + #remove the trailing comma + datasetids=${datasetids_raw%?} +else + datasetids=$DATASETIDS + dataset_number="specified datasets" +fi +echo 'Deleting rnd settings on '"$dataset_number"' Datasets:' $datasetids +$OMEROPATH delete --report Dataset/RenderingDef:$datasetids +$OMEROPATH logout +echo Stopping From a57e0745675420a7c7b3b16489e655630000d9c1 Mon Sep 17 00:00:00 2001 From: pwalczysko Date: Mon, 25 Feb 2019 15:11:45 +0000 Subject: [PATCH 4/6] Move the hql query cf. Mark's comment, delete a printout --- maintenance/scripts/delete_rendering.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/maintenance/scripts/delete_rendering.sh b/maintenance/scripts/delete_rendering.sh index cc1e3a83..44cbe734 100644 --- a/maintenance/scripts/delete_rendering.sh +++ b/maintenance/scripts/delete_rendering.sh @@ -16,10 +16,9 @@ NUMBER=${NUMBER:-50} OMEUSER=${OMEUSER:-trainer-1} $OMEROPATH login -u $OMEUSER -s $HOST -w $PASSWORD -result=`$OMEROPATH hql --ids-only --limit 1000 --style plain -q --all "SELECT id from Dataset WHERE name = '$DATASETNAME'"` if [ "$DATASETIDS" = "none" ] then - echo "none ID" + result=`$OMEROPATH hql --ids-only --limit 1000 --style plain -q --all "SELECT id from Dataset WHERE name = '$DATASETNAME'"` for i in $result do #remove the ordinal numbers From 8da594f9cdb8d976e5e558438099c4d17864d8f5 Mon Sep 17 00:00:00 2001 From: pwalczysko Date: Mon, 25 Feb 2019 16:07:24 +0000 Subject: [PATCH 5/6] Simplify the code cf. Mark's suggestions --- maintenance/scripts/delete_rendering.sh | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/maintenance/scripts/delete_rendering.sh b/maintenance/scripts/delete_rendering.sh index 44cbe734..61d00891 100644 --- a/maintenance/scripts/delete_rendering.sh +++ b/maintenance/scripts/delete_rendering.sh @@ -18,16 +18,9 @@ OMEUSER=${OMEUSER:-trainer-1} $OMEROPATH login -u $OMEUSER -s $HOST -w $PASSWORD if [ "$DATASETIDS" = "none" ] then - result=`$OMEROPATH hql --ids-only --limit 1000 --style plain -q --all "SELECT id from Dataset WHERE name = '$DATASETNAME'"` - for i in $result - do - #remove the ordinal numbers - datasetids_raw+=${i#*,} - datasetids_raw+="," - done - dataset_number=${i%,*} - #remove the trailing comma - datasetids=${datasetids_raw%?} + result=`$OMEROPATH hql --ids-only --limit 1000 --style plain -q --all "SELECT id from Dataset WHERE name = '$DATASETNAME'" | cut -f 2 -d , | tr '\n' ,` + dataset_number=`echo $result | tr -cd , | wc -c | sed -e 's/[[:space:]]*//'` + datasetids=`echo $result | sed -e 's/,$//'` else datasetids=$DATASETIDS dataset_number="specified datasets" From 73f1f35a72d980c367e3a4633df33b32a322abbb Mon Sep 17 00:00:00 2001 From: Jean-Marie Burel Date: Sat, 9 Nov 2019 14:04:16 +0100 Subject: [PATCH 6/6] flake8 fixes --- maintenance/scripts/delete_rendering.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/maintenance/scripts/delete_rendering.py b/maintenance/scripts/delete_rendering.py index f48583d8..6dffe999 100644 --- a/maintenance/scripts/delete_rendering.py +++ b/maintenance/scripts/delete_rendering.py @@ -34,7 +34,6 @@ def run(name, password, dataset_name, dataset_id, host, port): conn = BlitzGateway(name, password, host=host, port=port) try: conn.connect() - rnd_service = conn.getRenderingSettingsService() datasets = [] if dataset_id >= 0: datasets.append(conn.getObject("Dataset", dataset_id)) @@ -43,23 +42,25 @@ def run(name, password, dataset_name, dataset_id, host, port): attributes={"name": dataset_name}) for dataset in datasets: - print dataset.getId() + print(dataset.getId()) for image in dataset.listChildren(): pixels = image.getPrimaryPixels() - print pixels.getId() + pixId = pixels.getId() + print(pixId) params = omero.sys.ParametersI() - query = "from RenderingDef where pixels.id = '%s'" % pixels.getId() + query = "from RenderingDef where pixels.id = '%s'" % pixId query_service = conn.getQueryService() - result = query_service.findAllByQuery(query, params, conn.SERVICE_OPTS) + result = query_service.findAllByQuery(query, params, + conn.SERVICE_OPTS) if result is not None: rnd_ids = [rnd.id.val for rnd in result] if len(rnd_ids) > 0: - print "Deleting %s rnds..." % len(rnd_ids) - print rnd_ids + print("Deleting %s rnds..." % len(rnd_ids)) + print(rnd_ids) conn.deleteObjects("RenderingDef", rnd_ids, wait=True) except Exception as exc: - print "Error while deleting rendering: %s" % str(exc) + print("Error while deleting rendering: %s" % str(exc)) finally: conn.close()