h5py

h5py は HDF5 フォーマットファイルを取り扱うための Python ライブラリーである。 HDF は Hierarchical Data Format で、NumPy で扱っているデータをバイナリーファイルに保存できる。

サンプルデータを作成する。ここでは、二次元配列データである expression_matrix、遺伝子の名前 gene_name および サンプル名 sample_name の 3 つのデータオブジェクトを作成する。

import h5py
import numpy as np

expression_matrix =  np.random.rand(20000, 8)
gene_name = ['gene_' + str(x + 1) for x in range(20000)]
sample_name = ['sample_' + str(x + 1) for x in range(8)]

データの書き込み

上で作成したサンプルデータを h5pysample.hdf5 ファイルに書き込む。create_dataset メソッドを利用してデータを書き込みます。第 1 引数にはデータを保存する際の名前を、第 2 引数にはデータが保存されているオブジェクトを与える。

f = './h5pysample.hdf5'

outfh = h5py.File(out_file, 'w')
outfh.create_dataset('expmat', data = expression_matrix)
outfh.create_dataset('gene_name', data = gene_name)
outfh.create_dataset('sample_name', data = sample_name)
outfh.flush()
outfh.close()

データの読み取り

h5pysample.hdf5 ファイルに保存されているデータを NumPy のデータ形式で読み込む。keys メソッドでファイルに保存されているデータの名前の一覧を出力できる。データを取得する場合は、データの名前を辞書のキーとして与えて取得する。

f = './h5pysample.hdf5'

infh = h5py.File(in_file, 'r')
infh.keys()
## [u'expmat', u'gene_name', u'sample_name']

expression_matrix_2 = infh['expmat'].value
gene_name_2 = infh['gene_name'].value
sample_name_2 = infh['sample_name'].value

infh.close()