HDF5でSiloを使用していますが、h5pyで一部のメタデータにアクセスできません。かなり珍しいHDF5構造を吐き出し、DATATYPE
内部にを配置しDATATYPE
ます。これがからの出力の抜粋ですh5dump
:
DATATYPE "sigma_t" H5T_STD_I32LE;
ATTRIBUTE "silo" {
DATATYPE H5T_COMPOUND {
H5T_STRING {
STRSIZE 5;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
} "meshid";
H5T_STRING {
STRSIZE 15;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
} "value0";
H5T_STD_I32LE "ndims";
H5T_STD_I32LE "nvals";
H5T_STD_I32LE "nels";
H5T_IEEE_F32LE "time";
H5T_STD_I32LE "use_specmf";
H5T_STD_I32LE "centering";
H5T_ARRAY { [3] H5T_STD_I32LE } "dims";
H5T_ARRAY { [3] H5T_STD_I32LE } "zones";
H5T_ARRAY { [3] H5T_STD_I32LE } "min_index";
H5T_ARRAY { [3] H5T_STD_I32LE } "max_index";
H5T_ARRAY { [3] H5T_IEEE_F32LE } "align";
}
DATASPACE SCALAR
DATA {
(0): {
"mesh",
"/.silo/#000004",
2,
1,
100,
0,
-1000,
111,
[ 10, 10, 0 ],
[ 9, 9, 0 ],
[ 0, 0, 0 ],
[ 9, 9, 0 ],
[ 0.5, 0.5, 0 ]
}
}
}
ATTRIBUTE "silo_type" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 501
}
}
基本的に、正しくフォーマットされたすべてのデータを含むが、データ型に関連付けられたラベルを含まないをf['sigma_t'].attrs['silo']
返します。tuple
(名前などを知る必要がありますmeshid
)value0
これを取得する方法はありますか?私は途方に暮れています。
サンプルファイルとスクリプト
HDF5ファイルには「sigma_t」フィールドが含まれており、実際のデータはに保存され/.silo/#000004
ます。
脚本:
import h5py
f = h5py.File('xsn.silo', 'r')
print f['sigma_t'].attrs['silo']
結果:
('mesh', '/.silo/#000004', 2, 1, 100, 0.0, -1000, 111, array([10, 10, 0], dtype=int32), array([9, 9, 0], dtype=int32), array([0, 0, 0], dtype=int32), array([9, 9, 0], dtype=int32), array([ 0.5, 0.5, 0. ], dtype=float32))
私も欲しいのは次のようなものです:
('meshid','value0','ndims', ..., 'align')
これは可能ですか?