changeset 3:2cf36947bcb6 draft default tip

planemo upload for repository https://github.com/Helmholtz-UFZ/galaxy-tools/tree/main/tools/omero commit 6f47dff3775455a8c45d39a3863a2306cd942443
author ufz
date Tue, 08 Apr 2025 15:12:35 +0000 (3 days ago)
parents c7b2650718fe
children
files omero_get_value.py
diffstat 1 files changed, 22 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/omero_get_value.py	Mon Dec 16 20:55:50 2024 +0000
+++ b/omero_get_value.py	Tue Apr 08 15:12:35 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)