How to create a HDF5 group with only attributes

3 vues (au cours des 30 derniers jours)
HaMo
HaMo le 7 Sep 2023
Writing an attribute to a group that already has a dataset works fine:
h5create("sample.hdf5", "/group/dataset", 1:3)
h5writeatt("sample.hdf5", "/group/", "attribute", 3.14)
But I cannot create attributes in files that do not alredy exist:
h5create("sample2.hdf5", "/group1/dataset", 1:3)
h5writeatt("sample2.hdf5", "/group2/", "attribute", 3.14)
Error using hdf5lib2
The HDF5 library encountered an error and produced the following stack trace information:
H5G_loc_find_cb object 'group2' doesn't exist
(...)
There is no "create attribute" function as there is for datasets. I understand this constraint may be there for a purpose, but is there a workaround?

Réponses (1)

Manish
Manish le 4 Oct 2024
Hi Hamo,I encountered a similar issue and found a workaround.
Before writing the attribute, explicitly create the group by opening the file.
Here is the code implementation:
h5create("sample.hdf5", "/group/dataset", [1 3]);
h5writeatt("sample.hdf5", "/group/", "attribute", 3.14);
h5create("sample2.hdf5", "/group1/dataset", [1 3]);
% Workaround:
fileID = H5F.open('sample2.hdf5', 'H5F_ACC_RDWR', 'H5P_DEFAULT');
groupID = H5G.create(fileID, '/group2', 'H5P_DEFAULT', 'H5P_DEFAULT', 'H5P_DEFAULT');
H5G.close(groupID);
H5F.close(fileID);
% Now write the attribute to the newly created group
h5writeatt("sample2.hdf5", "/group2/", "attribute",3.14);
It solved for me, Hope this solves for you!

Produits


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by