From e2fec03d4ae968dd42585d9e191c5a508029f40b Mon Sep 17 00:00:00 2001 From: Florez Ospina Juan Felipe Date: Tue, 29 Oct 2024 07:56:43 +0100 Subject: [PATCH] Included cli commands update and serialize to simplify running metadata revision pipeline. --- pipelines/metadata_revision.py | 18 ++++++++++++------ src/hdf5_ops.py | 19 ++++++++++++++++++- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/pipelines/metadata_revision.py b/pipelines/metadata_revision.py index 49e23ab..f7e8a94 100644 --- a/pipelines/metadata_revision.py +++ b/pipelines/metadata_revision.py @@ -1,5 +1,9 @@ import sys import os + +# Add the parent directory to the system path +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + import h5py import yaml import src.hdf5_ops as hdf5_ops @@ -153,12 +157,14 @@ def count(hdf5_obj,yml_dict): print('additions',count_additions, 'deletions', count_delections) if __name__ == "__main__": - if len(sys.argv) != 4: - print("Usage: python metadata_revision.py update ") - sys.exit(1) - if sys.argv[2] == 'update': - input_hdf5_file = sys.argv[3] - yaml_review_file = sys.argv[4] + if len(sys.argv) < 4: + print("Usage: python metadata_revision.py update ") + sys.exit(1) + + + if sys.argv[1] == 'update': + input_hdf5_file = sys.argv[2] + yaml_review_file = sys.argv[3] update_hdf5_file_with_review(input_hdf5_file, yaml_review_file) #run(sys.argv[2]) diff --git a/src/hdf5_ops.py b/src/hdf5_ops.py index f0e82fb..134d788 100644 --- a/src/hdf5_ops.py +++ b/src/hdf5_ops.py @@ -388,7 +388,7 @@ class HDF5DataOpsManager(): # Parse value into HDF5 admissible type for key in dataset_dict['attributes'].keys(): value = dataset_dict['attributes'][key] - if isinstance(key, dict): + if isinstance(value, dict): dataset_dict['attributes'][key] = utils.convert_attrdict_to_np_structured_array(value) if not group_name in self.file_obj: @@ -573,5 +573,22 @@ def get_groups_at_a_level(file: h5py.File, level: str): return groups +if __name__ == "__main__": + if len(sys.argv) < 4: + print("Usage: python hdf5_ops.py serialize ") + sys.exit(1) + if sys.argv[1] == 'serialize': + input_hdf5_file = sys.argv[2] + file_format = sys.argv[3] + + try: + # Call the serialize_metadata function and capture the output path + path_to_file = serialize_metadata(input_hdf5_file, output_format=file_format) + print(f"Metadata serialized to {path_to_file}") + except Exception as e: + print(f"An error occurred during serialization: {e}") + sys.exit(1) + + #run(sys.argv[2])