Simplified code by updating HDF5 attributes using .update() dict method (inherited from dict type).

This commit is contained in:
2024-05-22 20:11:54 +02:00
parent 1729cd40fa
commit 7367da84b9

View File

@ -410,19 +410,21 @@ def create_hdf5_file_from_filesystem_path(output_filename : str,
try:
# Create group and add their attributes
h5file[group_name].create_group(name=file_dict['name'])
for key in file_dict['attributes_dict'].keys():
#for key in file_dict['attributes_dict'].keys():
# Represent string values as fixed length strings in the HDF5 file, which need
# to be decoded as string when we read them. It provides better control than variable strings,
# at the expense of flexibility.
# https://docs.h5py.org/en/stable/strings.html
value = file_dict['attributes_dict'][key]
if isinstance(value,str):
utf8_type = h5py.string_dtype('utf-8', len(value))
value = np.array(value.encode('utf-8'),dtype=utf8_type)
# value = file_dict['attributes_dict'][key]
# if isinstance(value,str):
# utf8_type = h5py.string_dtype('utf-8', len(value))
# value = np.array(value.encode('utf-8'),dtype=utf8_type)
h5file[group_name][file_dict['name']].attrs.create(name=key,
data=value)
# h5file[group_name][file_dict['name']].attrs.create(name=key,
# data=value)
h5file[group_name][file_dict['name']].attrs.update(file_dict['attributes_dict'])
# Add datasets to just created group
for dataset in file_dict['datasets']:
@ -430,7 +432,11 @@ def create_hdf5_file_from_filesystem_path(output_filename : str,
data = dataset['data'],
#dtype = file_dict['dtype'],
shape = dataset['shape'])
# Add dataset's attributes
#for attr_key in dataset.get('attributes',{}).keys():
# h5file[group_name][file_dict['name']][dataset['name']].attrs[attr_key] = dataset.get('attributes',{})[attr_key]
attributes = dataset.get('attributes', {})
h5file[group_name][file_dict['name']][dataset['name']].attrs.update(attributes)
except Exception as inst:
# TODO: log when a file could not be stored as a dataset
print(inst)