Nipyのメモ

fMRI Data Analysis




Nipy

構造的および機能的なニューロイメージングデータの解析

機能的MRI(fMRI)画像データの解析のためのライブラリ

主な機能

  1. 脳機能画像データの入出力と、ファイルパラメータの取得
  2. 脳機能画像データの形状変換
  3. 脳機能画像データの空間的前処理
  4. 血流動態モデルの作成
  5. 一般線型モデルの計算
  6. 脳機能解析アルゴリズム(主成分分析など)

インストール方法

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_png

座標の向きを整える。
#の箇所を下のようにすることで、一般的なAxialに変更できる。

###
plt.imshow(data[:, :, 23, 1].T, cmap='gray')
plt.gca().invert_yaxis()
###

axial2

脳機能画像のアニメーションも作ってみました。

活性化マップをプロット

Nipy 活性化マップの描画のメモ
タイトルとURLをコピーしました