Failed to parse an HDF5 file (from NSLS-II) that has dictionary content stored in an attribute. The dictionary values are array of float. This h5py code can read that structure and build the desired 1-D array:
import h5py
f = h5py.File("file.h5", "r")
d = {int(k): v for k, v in f["/qval_dict"].attrs.items()}
q = [d[i][0] for i in sorted(d.keys())]
Here's the exception trace:
(bluesky_2020_9) prjemian@poof /tmp $ punx tree uid\=c8a1fb1f-1960-49f8-927a-c29fca8aaafa__Res.h5
!!! WARNING: this program is not ready for distribution.
Traceback (most recent call last):
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/bin/punx", line 10, in <module>
sys.exit(main())
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/punx/main.py", line 456, in main
args.func(args)
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/punx/main.py", line 199, in func_tree
report = mc.report(args.show_attributes)
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/punx/h5tree.py", line 65, in report
tree_string_list = self._renderGroup(f, txt, indentation = "")
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/punx/h5tree.py", line 116, in _renderGroup
s += self._renderGroup(value, itemname, indentation+" ")
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/punx/h5tree.py", line 104, in _renderGroup
s += self._renderDataset(value, itemname, indentation+" ")
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/punx/h5tree.py", line 157, in _renderDataset
s += self._renderAttributes(dset, indentation)
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/punx/h5tree.py", line 124, in _renderAttributes
for name, value in obj.attrs.items(): # FIXME: for name, value in obj.attrs.iteritems():
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/h5py/_hl/base.py", line 368, in __iter__
yield (key, self._mapping.get(key))
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/_collections_abc.py", line 660, in get
return self[key]
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "/home/prjemian/Apps/anaconda/envs/bluesky_2020_9/lib/python3.8/site-packages/h5py/_hl/attrs.py", line 65, in __getitem__
dtype = readtime_dtype(attr.dtype, [])
File "h5py/h5a.pyx", line 327, in h5py.h5a.AttrID.dtype.__get__
File "h5py/h5a.pyx", line 329, in h5py.h5a.AttrID.dtype.__get__
File "h5py/h5t.pyx", line 460, in h5py.h5t.TypeID.py_dtype
TypeError: No NumPy equivalent for TypeBitfieldID exists
Failed to parse an HDF5 file (from NSLS-II) that has dictionary content stored in an attribute. The dictionary values are array of float. This h5py code can read that structure and build the desired 1-D array:
Here's the exception trace: