Clear Filters
Clear Filters

How to create a HDF5 group with only attributes

5 views (last 30 days)
HaMo
HaMo on 7 Sep 2023
Answered: Manish on 4 Oct 2024 at 12:03
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?

Answers (1)

Manish
Manish on 4 Oct 2024 at 12:03
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!

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!