EEG 付き MRI の可視化

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、PythonのMatplotlibを使ってEEGトレース付きのMRI画像の可視化を作成する方法を学びます。MRIとEEGデータの読み込みと表示方法、MRI画像の強度ヒストグラムのプロット方法、x軸に時間、y軸に電極チャネルを使ったEEGトレースのプロット方法を学びます。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み終了するまで数秒待つ必要があります。Jupyter Notebookの制限により、操作の検証は自動化できません。

学習中に問題がある場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

MRIデータの読み込みと画像の表示

最初のステップは、MRIデータを読み込み、画像を表示することです。画像を表示するにはimshow()関数を、軸のラベルを削除するにはaxis('off')を使用します。

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure("MRI_with_EEG")

## MRIデータを読み込む(256x256の16ビット整数)
im = np.load('mri_data.npy')

## MRI画像をプロットする
ax0 = fig.add_subplot(2, 2, 1)
ax0.imshow(im, cmap='gray')
ax0.axis('off')

MRI強度のヒストグラムをプロットする

次に、hist()関数を使ってMRI強度のヒストグラムをプロットします。強度値を0から1の範囲に正規化します。

## MRI強度のヒストグラムをプロットする
ax1 = fig.add_subplot(2, 2, 2)
im = np.ravel(im)
im = im[np.nonzero(im)]  ## 背景を無視する
im = im / im.max()  ## 正規化する
ax1.hist(im, bins=100)
ax1.set_xlabel('Intensity (a.u.)')
ax1.set_ylabel('MRI density')

EEGデータの読み込みとトレースのプロット

次のステップは、EEGデータを読み込み、トレースをプロットすることです。データをファイルから読み込むにはfromfile()関数を、トレースをプロットするにはLineCollection()を使用します。また、y軸の目盛りラベルを電極チャネルに設定します。

## EEGデータを読み込む
n_samples, n_rows = 800, 4
data = np.load('eeg_data.npy')
t = 10 * np.arange(n_samples) / n_samples

## EEGをプロットする
ax2 = fig.add_subplot(2, 1, 2)
ax2.set_xlim(0, 10)
ax2.set_xticks(np.arange(10))
dmin = data.min()
dmax = data.max()
dr = (dmax - dmin) * 0.7  ## 少し詰める。
y0 = dmin
y1 = (n_rows - 1) * dr + dmax
ax2.set_ylim(y0, y1)

segs = []
for i in range(n_rows):
    segs.append(np.column_stack((t, data[:, i])))

offsets = np.zeros((n_rows, 2), dtype=float)
offsets[:, 1] = np.arange(n_rows) * dr

lines = LineCollection(segs, offsets=offsets, transOffset=None)
ax2.add_collection(lines)

## y軸において軸座標を使用するようにyticksを設定する
ax2.set_yticks(offsets[:, 1])
ax2.set_yticklabels(['PG3', 'PG5', 'PG7', 'PG9'])
ax2.set_xlabel('Time (s)')

可視化を表示する

最後に、show()関数を使って可視化を表示します。

plt.tight_layout()
plt.show()

まとめ

この実験では、PythonのMatplotlibを使ってEEGトレース付きのMRI画像の可視化を作成する方法を学びました。MRI画像を読み込んで表示し、MRI画像の強度ヒストグラムをプロットし、x軸に時間、y軸に電極チャネルを持つEEGトレースをプロットしました。