С помощью этой функции посещения я могу получить информацию обо всех наборах данных, которые вызывают эту ошибку node.dtype
:
def foo1(name,node):
#print(name)
if isinstance(node, h5py.Dataset):
try:
node.dtype
except TypeError as err:
print(name)
print(node.size, node.shape)
print(err)
Я получаю пару экранов с типичным дисплеем вроде:
0 (0,)
No NumPy equivalent for TypeBitfieldID exists
AwakeEventData/GD_BPM.AWAKE.TRIUMF/AcquisitionSPS/posOK
1 (1,)
No NumPy equivalent for TypeBitfieldID exists
AwakeEventData/GD_BPM.AWAKE.TRIUMF/GlobalAcquisition/posOK
Так что, если ваша цель - просто посетить все и отобразить информацию, которую вы можете, добавьте try/except
, как это к вашей функции посещения.
Дисплей h5dump
для одного из этих наборов данных:
2215:~/mypy$ h5dump -d /AwakeEventData/GD_BPM.AWAKE.TRIUMF/AcquisitionSPS/posOK ../Downloads/1541962108935000000_167_838.h5
HDF5 "../Downloads/1541962108935000000_167_838.h5" {
DATASET "/AwakeEventData/GD_BPM.AWAKE.TRIUMF/AcquisitionSPS/posOK" {
DATATYPE H5T_STD_B64LE
DATASPACE SIMPLE { ( 1 ) / ( H5S_UNLIMITED ) }
DATA {
(0): 80:17:00:00:00:00:00:00
}
ATTRIBUTE "bitFieldSize" {
DATATYPE H5T_STD_I64LE
DATASPACE SCALAR
DATA {
(0): 14
}
}
}
}
При добавлении print(list(node.attrs.values()))
отображается атрибут bitFieldSize
.
Есть и другие, не питоновские зрители. Я не знаю, может ли pytables
или pandas
прочитать этот файл или нет.