# HG changeset patch # User ufz # Date 1744125185 0 # Node ID ec96412e9027e2267d7a8b629889663cc9d8472c # Parent 42a454d4b48274bc7aeb05f9da3ee15ddab1647a planemo upload for repository https://github.com/Helmholtz-UFZ/galaxy-tools/tree/main/tools/omero commit 6f47dff3775455a8c45d39a3863a2306cd942443 diff -r 42a454d4b482 -r ec96412e9027 omero_get_value.py --- a/omero_get_value.py Mon Dec 16 20:56:02 2024 +0000 +++ b/omero_get_value.py Tue Apr 08 15:13:05 2025 +0000 @@ -1,15 +1,17 @@ import argparse import csv import json +import os import sys import ezomero as ez +import pandas as pd -def get_object_ezo(user, pws, host, port, obj_type, ids, tsv_file): +def get_object_ezo(user, pws, host, port, obj_type, ids, out_dir): # Function to write tabular file from the ezomero output def write_values_to_tsv(data, header): - with open(tsv_file, 'w', newline='') as f: + with open("output.tsv", 'w', newline='') as f: writer = csv.writer(f, delimiter='\t') writer.writerow([header]) # Write the header for item in data: @@ -17,15 +19,15 @@ # Function to write tabular file from a dictionary ezomero output def write_dict_to_tsv(data, headers): - with open(tsv_file, 'w', newline='') as f: + with open("output.tsv", 'w', newline='') as f: writer = csv.writer(f, delimiter='\t') writer.writerow(headers) # Write the headers for key, value in data.items(): writer.writerow([key, value]) # Write each key-value pair # Function to write tabular file from list of list ezomero output - def write_table_to_tsv(data): - with open(tsv_file, 'w') as f: + def write_table_to_tsv(data, id): + with open(f"./output/ID_{id}_table.tsv", 'w') as f: for row in data: f.write('\t'.join([str(val) for val in row]) + '\n') @@ -35,8 +37,8 @@ for maid in ids: current_ma_dict = ez.get_map_annotation(conn, maid) ma_dict = {**ma_dict, **current_ma_dict} + print(ma_dict) write_dict_to_tsv(ma_dict, ["Annotation ID", "Annotation Value"]) - return ma_dict elif obj_type == "Tag": tags = [] for tag_id in ids: @@ -44,14 +46,18 @@ # Sort the tags for consistency: tags.sort write_values_to_tsv(tags, "Tags") - return tags elif obj_type == "Table": - if len(ids) > 1: - raise ValueError("Only one table can be exported at a time") - table = ez.get_table(conn, ids[0]) - write_table_to_tsv(table) - return table - + for id in ids: + table = ez.get_table(conn, id) + print(table) + write_table_to_tsv(table, id) + elif obj_type == ("Attachment"): + for id in ids: + attch_path = ez.get_file_annotation(conn, id, folder_path='./output/') + base_name = os.path.basename(attch_path) + df = pd.read_csv(attch_path, sep='\t') + df.to_csv(f"./output/ID_{id}_{base_name}", sep='\t', index=False) + os.remove(attch_path) else: sys.exit(f"Unsupported object type: {filter}") @@ -72,8 +78,8 @@ help="IDs of the OMERO objects.") group.add_argument('--ids_path', help="File with IDs of the OMERO objects (one per line).") - parser.add_argument('--tsv_file', default='id_list.tsv', required=True, - help="Output TSV file path.") + parser.add_argument('--out_dir', required=True, + help="Output path.") args = parser.parse_args() if args.ids_path: @@ -95,4 +101,4 @@ port=args.port, obj_type=args.obj_type, ids=args.ids, - tsv_file=args.tsv_file) + out_dir=args.out_dir)