Pythonで脳を研究する 13


引き続きPython MNEで色々と試している.

今回はコアレジストレーションのプロットサンプルコードを出してみた.

import nibabel as nib
import mne
import numpy as np
from pathlib import Path

# 被験者の情報とディレクトリの指定
subjects_dir = Path(mne.datasets.sample.data_path()) / "subjects"
subject = "sample"

# MRIファイルの読み込み(FreeSurfer処理済み T1.mgz)
mri_fname = subjects_dir / subject / "mri" / "T1.mgz"
mri = nib.load(str(mri_fname))

# MRIヘッダーから vox2ras_tkr 変換行列を取得し、mri.affine の逆行列と掛け合わせる
# 注意: nibabel は単位が mm、MNE は m を用いるため変換する
trans = mri.header.get_vox2ras_tkr() @ np.linalg.inv(mri.affine)
trans[:3, 3] /= 1000.0  # mm → m へ変換
trans = mne.transforms.Transform("head", "mri", trans)

# evoked情報の読み込み(ここではサンプルデータの evoked を使用)
# ※ 本来は対象被験者 "sub-002" の evoked が必要ですが、サンプルデータとして "sample" を使用します
evoked_fname = (Path(mne.datasets.sample.data_path()) / "MEG" / "sample" / "sample_audvis-ave.fif")
evoked = mne.read_evokeds(str(evoked_fname), baseline=(None, 0), proj=True, verbose=False)[0]

# BEMソリューションとソース空間ファイルのパスを指定(被験者 "sub-002" のもの)
bem = subjects_dir / subject / "bem" / f"{subject}-5120-bem-sol.fif"
src = subjects_dir / subject / "bem" / f"{subject}-oct-6-src.fif"

# コアレジストレーションの可視化
mne.viz.plot_alignment(
    evoked.info,
    subjects_dir=str(subjects_dir),
    subject=subject,
    trans=trans,
    surfaces={"head": 0.1, "inner_skull": 0.2, "white": 1.0},
    meg=["helmet", "sensors"],
    verbose="error",
    bem=str(bem),
    src=str(src),
)

参考文献

  • https://mne.tools/stable/index.html
  • Robert A. Seymour, Nicholas Alexander, Stephanie Mellor, George C. O’Neill, Tim M. Tierney, Gareth R. Barnes, and Eleanor A. Maguire. Interference suppression techniques for OPM-based MEG: Opportunities and challenges. NeuroImage, 247:118834, February 2022. doi:10.1016/j.neuroimage.2021.118834.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です