我创建了3个双打和一个boolen使用numpy
数组和书面他们使用h5py
到文件:如何阅读h5py用C
import numpy as np
import h5py
data = np.zeros(10, dtype=[("THETA",np.double),("PHI",np.double),("PSI",np. double),("FLAG",np.bool)])
with h5py.File("testout.h5") as f:
f.create_dataset("data", data=data)
h5py
为创建一个枚举类型布尔字段:
HDF5 "testout.h5" {
GROUP "/" {
DATASET "data" {
DATATYPE H5T_COMPOUND {
H5T_IEEE_F64LE "THETA";
H5T_IEEE_F64LE "PHI";
H5T_IEEE_F64LE "PSI";
H5T_ENUM {
H5T_STD_I8LE;
"FALSE" 0;
"TRUE" 1;
} "FLAG";
}
DATASPACE SIMPLE { (10)/(10) }
}
}
}
现在我需要阅读用C这个文件,事情就变得复杂:
typedef enum {
false = 0;
true
} bool;
typedef struct {
double THETA, PHI, PSI;
bool FLAG;
} pointing_t;
我不知道如何定义一个拥有枚举类型:
hid_t memtype = H5Tcreate (H5T_COMPOUND, sizeof(pointing_t));
H5Tinsert (memtype, "THETA", HOFFSET (pointing_t, THETA), H5T_NATIVE_DOUBLE);
H5Tinsert (memtype, "PHI", HOFFSET (pointing_t, PHI), H5T_NATIVE_DOUBLE);
H5Tinsert (memtype, "PSI", HOFFSET (pointing_t, PSI), H5T_NATIVE_DOUBLE);
# this should be an ENUM!!
H5Tinsert (memtype, "FLAG", HOFFSET (pointing_t, FLAG), H5T_NATIVE_DOUBLE);
我粘贴要点一个完整的“不工作”的例子,试图读取与以往的Python代码片段创建HDF5文件:
http://gist.github.com/3168909
有人有建议吗? 谢谢!