モンタージュの作成2
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という名前のpick widgetを作成します。
namesはEEG FP1、EEG FP2、・・・、EEG Cz、EEG Pzです。
aveという名前のvecop-widgetを作成します。
modeはaverageとします。
eeg2というpick widgetを作成し、図のように繋ぎます。
namesはAVE、AVE、AVE、・・・(AVEが19個)とします。
fsubという名前のbinary widgetを作成します。
functionはfsubです。
eeg1とfsub、eeg2とfsub、fsubとdisplayを繋ぎます。
平均基準導出で波形が表示されました。
チャンネル名を変更します。aa.lispというLISPファイルで以下のファイルを作成しました。
(setq ch
0)
(setq chnames
'("FP1-AVE" "FP2-AVE" "F3 -AVE" "F4
-AVE" "C3 -AVE" "C4 -AVE" "P3 -AVE" "P4
-AVE" "O1 -AVE" "O2 -AVE" "F7 -AVE" "F8
-AVE" "T7 -AVE" "T8 -AVE" "P7 -AVE" "P8
-AVE" "Fz -AVE" "Cz -AVE" "Pz
-AVE"))
(dolist (chn
chnames)
(set-property
(G-widget "fsub") ch
:name chn)
(setq
ch (+ 1 ch))
)
(link (G-widget "fsub")(G-widget
"display"))
(require ‘/home/neurosurgery/lisp/aa)で呼び出します。
EEG DEL RとEEG DEL Lは左右の三角筋の筋電図とします。これをdisplayに合わせて表示させます。
EMGという名前でpick widgetを作成します。
namesはEEG DELR、EEG DELLです。
selという名前のselector widgetを作成します。
selができました。
(select-to (G-widget “sel”)(fsub 0 – 18)(EMG 0 1))と呪文を打ちます。
fsubとEMGがselにつながりました。displayと繋ぎます。
左右の三角筋の筋電図が表示されました。
以下のようなLISPファイルを作成します。
(set-property (G-widget "EMG") 0 :name "R
M.Del")
(set-property (G-widget "EMG") 1 :name "L
M.Del")
(defun renamech(CHNAMES)
"rename
channel name
Usage
:(renamech CHNAMES)
channel
names are renamed according to list of CHNAMES"
(setq ch 0)
(dolist (chn
CHNAMES)
(set-property (G-widget "fsub") ch :name chn)
(setq ch (+ 1 ch))
)
)
(defun eeglead_mono()
"EEG mono
lead
Usage
:(eeglead_mono)
monopolar EEG
lead"
(set-resource
(G-widget "eeg1") :names '("EEG FP1" "EEG FP2"
"EEG F3" "EEG F4" "EEG C3" "EEG C4"
"EEG P3" "EEG P4" "EEG O1" "EEG O2"
"EEG F7" "EEG F8" "EEG T7" "EEG T8"
"EEG P7" "EEG P8" "EEG Fz" "EEG Cz"
"EEG Pz"))
(link (G-widget
"eeg")(G-widget "eeg1"))
(select-to
(G-widget "sel")(eeg1 0 - 18)(EMG 0 1))
(link (G-widget
"sel")(G-widget "display"))
)
(defun eeglead_longitude()
"EEG
longitudinal lead
Usage:
(eeglead_longitude)
longitudinal EEG
leads"
(set-resource
(G-widget "eeg1") :names '("EEG FP1" "EEG F7"
"EEG T7" "EEG P7" "EEG FP1" "EEG F3"
"EEG C3" "EEG P3" "EEG Fz" "EEG Cz"
"EEG FP2" "EEG F4" "EEG C4" "EEG P4"
"EEG FP2" "EEG F8" "EEG T8" "EEG P8"))
(set-resource
(G-widget "eeg2") :names '("EEG F7" "EEG T7"
"EEG P7" "EEG O1" "EEG F3" "EEG C3"
"EEG P3" "EEG O1" "EEG Cz" "EEG Pz"
"EEG F4" "EEG C4" "EEG P4" "EEG O2"
"EEG F8" "EEG T8" "EEG P8" "EEG O2"))
(link (G-widget
"eeg")(G-widget "eeg1"))
(link (G-widget
"eeg")(G-widget "eeg2"))
(link (G-widget
"eeg1")(G-widget "fsub"))
(link (G-widget
"eeg2")(G-widget "fsub"))
(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"))
(renamech
chnames)
(select-to (G-widget
"sel")(fsub 0 - 17)(EMG 0 1))
(link (G-widget
"sel")(G-widget "display"))
)
(defun eeglead_transverse()
"EEG
transverse lead
Usage:
(eeglead_transverse)
transverse EEG
leads"
(set-resource
(G-widget "eeg1") :names '("EEG F7" "EEG FP1"
"EEG FP2" "EEG F7" "EEG F3" "EEG Fz"
"EEG F4" "EEG T7" "EEG C3" "EEG Cz"
"EEG C4" "EEG P7" "EEG P3" "EEG Pz"
"EEG P4" "EEG P7" "EEG O1" "EEG O2"))
(set-resource
(G-widget "eeg2") :names '("EEG FP1" "EEG FP2"
"EEG F8" "EEG F3" "EEG Fz" "EEG F4"
"EEG F8" "EEG C3" "EEG Cz" "EEG C4"
"EEG T8" "EEG P3" "EEG Pz" "EEG P4"
"EEG P8" "EEG O1" "EEG O2" "EEG P8"))
(link (G-widget
"eeg")(G-widget "eeg1"))
(link (G-widget
"eeg")(G-widget "eeg2"))
(link (G-widget
"eeg1")(G-widget "fsub"))
(link (G-widget
"eeg2")(G-widget "fsub"))
(setq chnames
'("F7 FP1" "FP1-FP2" "FP2-F8" "F7 -F3"
"F3 -Fz" "Fz -F4" "F4 -F8" "T7 -C3"
"C3 -Cz" "Cz -C4" "C4 -T8" "P7 -P3"
"P3 -Pz" "Pz -P4" "P4 -P8" "P7 -O1"
"O1 -O2" "O2 -P8"))
(renamech
chnames)
(select-to
(G-widget "sel")(fsub 0 - 17)(EMG 0 1))
(link (G-widget
"sel")(G-widget "display"))
)
(defun eeglead_ave()
"EEG
average lead
Usage
:(eeglead_ave)
average EEG
lead"
(set-resource
(G-widget "eeg1") :names '("EEG FP1" "EEG FP2"
"EEG F3" "EEG F4" "EEG C3" "EEG C4"
"EEG P3" "EEG P4" "EEG O1" "EEG O2"
"EEG F7" "EEG F8" "EEG T7" "EEG T8"
"EEG P7" "EEG P8" "EEG Fz" "EEG Cz"
"EEG Pz"))
(link (G-widget
"eeg")(G-widget "eeg1"))
(link (G-widget
"eeg1")(G-widget "ave"))
(set-resource
(G-widget "ave") :mode "average")
(link (G-widget
"ave")(G-widget "eeg2"))
(set-resource
(G-widget "eeg2") :names '("AVE" "AVE"
"AVE" "AVE" "AVE" "AVE" "AVE"
"AVE" "AVE" "AVE" "AVE" "AVE"
"AVE" "AVE" "AVE" "AVE" "AVE"
"AVE" "AVE"))
(link (G-widget
"eeg1")(G-widget "fsub"))
(link (G-widget
"eeg2")(G-widget "fsub"))
(setq chnames
'("FP1-AVE" "FP2-AVE" "F3 -AVE" "F4
-AVE" "C3 -AVE" "C4 -AVE" "P3 -AVE" "P4
-AVE" "O1 -AVE" "O2 -AVE" "F7 -AVE" "F8
-AVE" "T7 -AVE" "T8 -AVE" "P7 -AVE" "P8
-AVE" "Fz -AVE" "Cz -AVE" "Pz -AVE"))
(renamech
chnames)
(select-to
(G-widget "sel")(fsub 0 - 18)(EMG 0 1))
(link (G-widget
"sel")(G-widget "display"))
)
(let ((this (make-menu *user-menu* "EEG lead"
"p" :tear-off)));;local variables
(add-button this
"monopolar lead" '(eeglead_mono))
(add-button this
"longitudinal lead" '(eeglead_longitude))
(add-button this
"transverse lead" '(eeglead_transverse))
(add-button this
"average lead" '(eeglead_ave))
)
eegleads.lspという名前で/home/username/lispに保存します。
(require ‘/home/username/lisp/eeglead)とします。
Commandsのところに新たなメニューができています。
EEG leadを選択してmonopolar leadにすると単極誘導、longitudinal leadとすると縦列双極誘導、transverse leadにすると横列双極誘導、average leadにすると平均誘導になります。
横列双極誘導にしてみました。