Nipy
構造的および機能的なニューロイメージングデータの解析
機能的MRI(fMRI)画像データの解析のためのライブラリ
主な機能
- 脳機能画像データの入出力と、ファイルパラメータの取得
- 脳機能画像データの形状変換
- 脳機能画像データの空間的前処理
- 血流動態モデルの作成
- 一般線型モデルの計算
- 脳機能解析アルゴリズム(主成分分析など)
インストール方法
pip install nipy
Nipyの使い方
データの入出力のサンプルです。
データを読み込む
#サンプルデータ from nipy.testing import anatfile #Nipy import nipy from nipy.core.api import Image #サンプルデータを読み込む img = nipy.load_image(anatfile) #指定のファイルを読み込む target_image = nipy.load_image("ファイル名")
header情報を取得する
header = target_img.header print(header)
データを取得する
#データにアクセスする data = target_img.get_data() print(data) print(data.shape)
出力
取得したデータをshapeで確認すると以下のようになりました。
(128, 128, 35, 288)
(x, y, z, volume)の形で、格納されていることが分かります。
coordmap
#座標情報などのファイルの基本パラメータの取得 coord = target_img.coordmap print(coord.function_domain.coord_names) print(coord.function_range.coord_names) print(coord.function_domain.name) print(coord.function_range.name)
出力
('i', 'j', 'k') ('aligned-x=L->R', 'aligned-y=P->A', 'aligned-z=I->S') voxels aligned
座標情報の見方は、脳画像の座標まとめで説明しています。
X軸は、脳の左から右に向いています。
Y軸は、脳の後ろから正面に向いています。
Z軸は、脳の下部から上部に向いています。
affine
よくわかりません。
print(img.affine)
配列arrayからイメージを作る
#arrayからイメージを作る import nipy import numpy as np from nipy.core.api import Image, vox2mni rawarray = np.zeros((43, 128, 128)) arr_img = Image(rawarray,vox2mni(np.eye(4))) #ファイルの保存 newimg = nipy.save_image(arr_img, 'newmyfile.nii')
脳画像を表示する
import nipy import matplotlib.pyplot as plt def input_files(data_path): img = nipy.load_image(data_path) data = img.get_data() return img, data #(x,y,z,t)の4D-NIfTIファイル img, data = input_files(data_path) ### plt.imshow(data[:, :, 23, 1], cmap='gray') ### plt.savefig('Axial.png')
座標の向きを整える。
#の箇所を下のようにすることで、一般的なAxialに変更できる。
### plt.imshow(data[:, :, 23, 1].T, cmap='gray') plt.gca().invert_yaxis() ###
脳機能画像のアニメーションも作ってみました。
活性化マップをプロット
Nipy 活性化マップの描画のメモ