モンタージュの作成
Brainstormのサイトからsample_epilepsy.zipを入手する
個人情報云々があり、適当なデータがないので、Brainstormのtutorialから拝借し、FIFFに変換したものでモンタージュを作成します。
ダウンロードして展開します。
anatomyはFreeSurferのファイルです。
dataが脳波のデータです。
MATLAB R2014b以降でBrainstormを起動し、Protocolを作成し、Subjectを作成後、Import MEG/EEGを選択します。基本右クリックです。
ファイルのタイプを*.binにしてtutorial_eeg.binを選択します。
Importを選択します。
Raw(0.00s,3600.00s)を右クリックしてEEG→Display time seriesを選択します。
波形が表示されます。
このように表示されないときはRecordの波マークをクリックしてください。
Raw(0.00s,3600.00s)を右クリックしてFile→Export to fileを選択します。
ファイルのタイプを*.edfにしてsample_epilepsy.edfという名前で保存します。
Brainstormは終了します。
コンソールを開いてjupyter notebookを起動します。
新しいnotebookを開きます。
mneを組み込んで、mne.io.read_raw_edf(ファイル名,preload=True)でrawにデータを読み込み、raw.save(書き出しファイル名)でFIFFファイルに変換できます。
これでMNE-pythonは終了です。
Graphのコントロールパネルを以下のようにしました。eegのnamesはEEG*です。
sample_epilepsy.fifを読み込みました。
ちゃんと読み込めてます。
通常はEEG 001、EEG 002とかになっていると思いますが、脳波のデータをFIFFにしたので電極名がそのまま反映しています。
電極名は10-20法でなく10-10法のようです。
T3→T7、T5→P7、T4→T8、T6→P8になっています。
縦列双極導出法(ダブルバナナ)もどき、を作成します。
eeg1を作成し、以下のようにします。
namesは以下の通り。
波形は以下の通りです。
同じくeeg2を作成します。
namesは以下の通り
波形は以下の通りです。
binary widgetを選択します。
名前はbananaにしました。
functionはfsubです。
eeg1とbananaを結び、次にeeg2とbananaを結び、bananaとdisplayを結びます。
差分波形が表示されました。
selという名前のselector widgetを作成します。
図のように繋ぎます。
以下のLISPファイルを作成しa.lspという名前で保存します。
(set-property
(G-widget "sel") 0 :name
"FP1-F7")
(set-property
(G-widget "sel") 1 :name
"F7 -T7")
(set-property
(G-widget "sel") 2 :name
"T7 -P7")
(set-property
(G-widget "sel") 3 :name
"P7 -O1")
(set-property
(G-widget "sel") 4 :name
"FP1-F3")
(set-property
(G-widget "sel") 5 :name
"F3 -C3")
(set-property
(G-widget "sel") 6 :name
"C3 -P3")
(set-property
(G-widget "sel") 7 :name
"P3 -O1")
(set-property
(G-widget "sel") 8 :name
"Fz -Cz")
(set-property
(G-widget "sel") 9 :name
"Cz -Pz")
(set-property
(G-widget "sel") 10 :name
"FP2-F4")
(set-property
(G-widget "sel") 11 :name
"F4 -T4")
(set-property
(G-widget "sel") 12 :name
"T4 -P4")
(set-property
(G-widget "sel") 13 :name
"P4 -O2")
(set-property
(G-widget "sel") 14 :name
"FP1-F8")
(set-property
(G-widget "sel") 15 :name
"F8 -T8")
(set-property
(G-widget "sel") 16 :name
"T8 -P8")
(set-property
(G-widget "sel") 17 :name
"P8 -O2")
(link
(G-widget "sel")(G-widget
"display"))
呼び出します。
チャンネル名が変わりました。
上記のLISPファイルをdolistを使ってaa.lispというファイル名で書き直してみました。
(setq ch 0)
(setq chnames '("FP1-F7"
"F7 -T7" "T7 -P7" "P7 -O1" "FP1-F3"
"F3 -C3" "C3 -P3" "P3 -O1" "Fz -Cz" "Cz -Pz" "FP2-F4"
"F4 -C4" "C4 -P4" "P4 -O2" "FP2-F8"
"F8 -T8" "T8 -P8" "P8 -O2"))
(dolist (chn chnames)
(set-property (G-widget "sel") ch :name chn)
(setq ch (+ 1 ch))
)
(link
(G-widget "sel")(G-widget
"display"))
chを局所変数で扱う方法をまだ理解してません。
sel2という名前のselector widgetを作成します。
eegとsel2を繋ぎ、winという名前のwindow widgetを作成します。
sel2とwinを繋ぎ、Pointは0、Startは0、Endは1とします。
xpという名前のXplotter widgetを作成します。
activeをクリックし、OKを押すとData plotterが開きます。
Data plotterのFile→Load layout…を選択します。
eeg_64_NM20884N.loutを選択し、OKを押します。
eeg_64_NM20884N.loutはテキストファイルです。
winとxpを繋ぎます。windows widgetをsel2とxpの間に入れるのは、時間幅を縮小、即ちデータ量を減らさないと、xpがうまく作動しないためです。
以下のような/home/neurosurgery/lisp/aa.lspというファイルを作成し、(require ‘/home/neurosurgery/lisp/aa)で呼び出します。
(setq ch 0)
(setq chnames '("EEG
001" "EEG 003" "EEG 010" "EEG 014" "EEG
028" "EEG 032" "EEG 046" "EEG 050" "EEG
057" "EEG 059" "EEG 008" "EEG 016" "EEG
026" "EEG 034" "EEG 044" "EEG 052" "EEG
012" "EEG 030" "EEG 048"))
(dolist (chn chnames)
(set-property (G-widget
"sel2") ch :name chn)
(setq ch (+ 1 ch))
)
(setq ch 29)
(setq chnames '("EEG
020" "EEG 021" "EEG 019" "EEG 022" "EEG
039" "EEG 040"))
(dolist (chn chnames)
(set-property (G-widget
"sel2") ch :name chn)
(setq ch (+ 1 ch))
)
(link
(G-widget "sel2")(G-widget "xp"))
波形が表示されました。
Scales …を選択します。
EEG (uV)を-200と200にし、OKを押します。
スケールが変更されました。