Mercurial > repos > lldelisle > omero_get_children_ids
view omero_get_children_ids.py @ 0:b0876c73076b draft
planemo upload for repository https://github.com/lldelisle/tools-lldelisle/tree/master/tools/omero_get_children_ids commit 8ac44b0341c70ce330fc0f24712b6f9b59b14731
author | lldelisle |
---|---|
date | Fri, 22 Dec 2023 12:55:40 +0000 |
parents | |
children | 82f2efb46200 |
line wrap: on
line source
import argparse import json from omero.gateway import BlitzGateway def get_omero_credentials(config_file): if config_file is None: # IDR connection omero_username = "public" omero_password = "public" else: # other omero instance with open(config_file) as f: cfg = json.load(f) omero_username = cfg["username"] omero_password = cfg["password"] if omero_username == "" or omero_password == "": omero_username = "public" omero_password = "public" return (omero_username, omero_password) def recursive_get_children_id(parent_object, final_object_type): output = [] if parent_object.OMERO_CLASS == 'WellSample': return [parent_object.getImage().id] for children in parent_object.listChildren(): if children.OMERO_CLASS == final_object_type.title(): output.append(children.id) else: # We need to go one step further output += recursive_get_children_id(children, final_object_type) return output def get_children_ids(parent_object_type, omero_id, final_object_type, omero_username, omero_password, omero_host="idr.openmicroscopy.org", omero_secured=False): # Connect to omero: with BlitzGateway( omero_username, omero_password, host=omero_host, secure=omero_secured ) as conn: # Retrieve omero object parent_object = conn.getObject(parent_object_type.title(), omero_id) return recursive_get_children_id(parent_object, final_object_type) if __name__ == "__main__": p = argparse.ArgumentParser() p.add_argument("-oh", "--omero-host", type=str, default="idr.openmicroscopy.org") p.add_argument("--omero-secured", action="store_true", default=True) p.add_argument("-cf", "--config-file", dest="config_file", default=None) p.add_argument("--parent-object-type", dest="parent_object_type", type=str, default=None, required=True) p.add_argument("--omero-id", dest="omero_id", type=int, default=None, required=True) p.add_argument("--final-object-type", dest="final_object_type", type=str, default=None, required=True) p.add_argument("--output", type=str, default=None, required=True) args = p.parse_args() children_ids = get_children_ids( args.parent_object_type, args.omero_id, args.final_object_type, *get_omero_credentials(args.config_file), omero_host=args.omero_host, omero_secured=args.omero_secured, ) with open(args.output, 'w') as fo: fo.write('\n'.join([str(id) for id in children_ids])) fo.write('\n')