HDF5數(shù)據(jù)初步了解可以參考這個鏈接:https://zhuanlan.zhihu.com/p/104145585
h5py 是一個用于操作HDF5文件的Python庫,它提供了一種高級的接口來讀取和寫入HDF5數(shù)據(jù)。在h5py中,Group 和 Dataset 對象類似于Python字典,因此它們提供了類似的方法,比如 keys(), values(), items(), 和 iter(),以及 get() 方法。以下是這些方法的用法:
1.keys()
keys() 方法返回一個表示HDF5組中所有成員(數(shù)據(jù)集或子組)名稱的視圖。類似于Python字典的 keys() 方法。
import h5py
with h5py.File('example.h5', 'r') as f:
print(list(f.keys())) # 打印所有組的名稱
2.values()
values()方法返回一個代表HDF5組中所有成員(數(shù)據(jù)集或子組)對象的視圖。
with h5py.File('example.h5', 'r') as f:
for value in f.values():
print(value) # 打印每個組的詳細信息
3.items()
items()方法返回一個包含HDF5組中所有成員的名稱和對象的元組對的視圖。
with h5py.File('example.h5', 'r') as f:
for name, obj in f.items():
print(name, obj) # 打印每個成員的名稱和詳細信息
4.iter()
iter()方法返回一個迭代器,可以用于迭代HDF5組中的成員名稱。
with h5py.File('example.h5', 'r') as f:
for name in iter(f):
print(name) # 打印每個成員的名稱
5.get()
get()方法用于從HDF5組中獲取指定名稱的成員(數(shù)據(jù)集或子組)。如果該成員不存在,則返回指定的默認值。
with h5py.File('example.h5', 'r') as f:
dataset = f.get('dataset_name', default=None) # 獲取名為 'dataset_name' 的數(shù)據(jù)集
if dataset is not None:
# 處理數(shù)據(jù)集
這些方法使得h5py的Group對象在操作上類似于Python的字典,提供了一種方便的方式來遍歷和訪問HDF5文件中的數(shù)據(jù)集和組。最后再簡單看一個fast5文件(單條reads)的內(nèi)容:
fast5 = 'test_exsample.fast5'
f = h5py.File(fast5, 'r')
# 打印結(jié)構(gòu)
print(
list(f.keys()),"\n",
list(f.values()),"\n",
list(f.items()),"\n",
list(iter(f)),"\n",
list(f.get('Raw/Reads').values()),"\n",
f['Raw/Reads']
)
#['Analyses', 'Raw', 'UniqueGlobalKey']
# [None, <HDF5 group "/Raw" (1 members)>, <HDF5 group "/UniqueGlobalKey" (3 members)>]
# [('Analyses', None), ('Raw', <HDF5 group "/Raw" (1 members)>), ('UniqueGlobalKey', <HDF5 group #"/UniqueGlobalKey" (3 members)>)]
# ['Analyses', 'Raw', 'UniqueGlobalKey']
# [<HDF5 group "/Raw/Reads/Read_994" (1 members)>]
# <HDF5 group "/Raw/Reads" (1 members)>
f.close()