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()