Implemented delete attribute feature for review and simplified code.
This commit is contained in:
@ -193,7 +193,21 @@ def second_save_metadata_review(review_yaml_file_path, reviewer_attrs):
|
||||
print('Nothing to commit.')
|
||||
|
||||
|
||||
def parse_attribute(attr_value):
|
||||
dtype = []
|
||||
values_list = []
|
||||
max_length = 100
|
||||
for key in attr_value.keys():
|
||||
if (not key=='rename_as'):
|
||||
dtype.append((key,f'S{max_length}'))
|
||||
values_list.append(attr_value[key])
|
||||
|
||||
if len(values_list)>2:
|
||||
new_attr_value = np.array([tuple(values_list)],dtype=dtype)
|
||||
else:
|
||||
new_attr_value = attr_value['value']
|
||||
|
||||
return new_attr_value
|
||||
|
||||
def third_update_hdf5_file_with_review(input_hdf5_file, yalm_review_file, reviewer_attrs = {}, hdf5_upload : bool = False):
|
||||
|
||||
@ -240,41 +254,37 @@ def third_update_hdf5_file_with_review(input_hdf5_file, yalm_review_file, review
|
||||
for attr_name, attr_value in yaml_obj['attributes'].items():
|
||||
#attr_value = yaml_obj['attributes'][attr_name]
|
||||
|
||||
if not isinstance(attr_value,dict):
|
||||
attr_value = {'rename_as':attr_name, 'value':attr_value, 'delete': False}
|
||||
|
||||
if attr_value.get('delete',False) and (attr_name in hdf5_obj.attrs.keys()):
|
||||
hdf5_obj.attrs.__delitem__(attr_name)
|
||||
continue
|
||||
|
||||
# Check whether attr_name belongs to the existing attributes of hdf5_obj
|
||||
if attr_name in hdf5_obj.attrs.keys():
|
||||
#else: # renaming attribute and possibly change of value assigment
|
||||
if isinstance(attr_value,dict):
|
||||
# Retreive possibly new attribute's name and value
|
||||
new_attr_name = attr_value.get('rename_as',attr_name) # if 'rename_as' is a key in attr_value returns the value, otherwise it return the existing value
|
||||
|
||||
dtype = []
|
||||
values_list = []
|
||||
max_length = 100
|
||||
for key in attr_value.keys():
|
||||
if (not key=='rename_as'):
|
||||
dtype.append((key,f'S{max_length}'))
|
||||
values_list.append(attr_value.get(key,hdf5_obj.attrs[attr_name]))
|
||||
if len(values_list)>2:
|
||||
new_attr_value = np.array([tuple(values_list)],dtype=dtype)
|
||||
else:
|
||||
new_attr_value = attr_value.get('value',hdf5_obj.attrs[attr_name])
|
||||
|
||||
hdf5_obj.attrs[new_attr_name] = new_attr_value
|
||||
#if isinstance(attr_value,dict):
|
||||
# # Retreive possibly new attribute's name and value
|
||||
new_attr_name = attr_value.get('rename_as',attr_name) # if 'rename_as' is a key in attr_value returns the value, otherwise it return the existing value
|
||||
|
||||
hdf5_obj.attrs[new_attr_name] = parse_attribute(attr_value)
|
||||
|
||||
# Remove from hdf5_obj.attrs attribute w/ name: attr_name if
|
||||
# yaml indicates a renaming of the attribute.
|
||||
if not (new_attr_name == attr_name):
|
||||
hdf5_obj.attrs.__delitem__(attr_name)
|
||||
else:
|
||||
hdf5_obj.attrs[attr_name] = attr_value
|
||||
# Remove from hdf5_obj.attrs attribute w/ name: attr_name if
|
||||
# yaml indicates a renaming of the attribute.
|
||||
if not (new_attr_name == attr_name):
|
||||
hdf5_obj.attrs.__delitem__(attr_name)
|
||||
#else:
|
||||
# hdf5_obj.attrs[attr_name] = attr_value
|
||||
else: # attribute inclusion
|
||||
if isinstance(attr_value,dict):
|
||||
#if isinstance(attr_value,dict):
|
||||
# Retreive new attribute's name and value
|
||||
new_attr_name = attr_value.get('rename_as',attr_name) # if 'rename_as' is a key in attr_value returns the value, otherwise it return the existing value
|
||||
new_attr_value = attr_value.get('value',np.nan) # TODO: let the user know why np.nan might have been assigned
|
||||
hdf5_obj.attrs[new_attr_name] = new_attr_value
|
||||
else:
|
||||
hdf5_obj.attrs[attr_name] = attr_value
|
||||
# new_attr_name = attr_value.get('rename_as',attr_name) # if 'rename_as' is a key in attr_value returns the value, otherwise it return the existing value
|
||||
# new_attr_value = attr_value.get('value',np.nan) # TODO: let the user know why np.nan might have been assigned
|
||||
hdf5_obj.attrs[attr_name] = parse_attribute(attr_value)
|
||||
#else:
|
||||
# hdf5_obj.attrs[attr_name] = attr_value
|
||||
|
||||
# Recreate/or update yaml representation of updated input_hdf5_file.
|
||||
output_yml_filename_path = hdf5_vis.take_yml_snapshot_of_hdf5_file(input_hdf5_file)
|
||||
|
Reference in New Issue
Block a user