モンタージュの作成2

平均基準導出法の作成... 1

筋電図も同時に表示... 3

メニューバーで誘導を切り替... 5

 

 

平均基準導出法の作成

Graphのコントロールパネルを以下のようにしました。eegnamesEEG*です。

sample_epilepsy.fifを読み込みます。

通常はEEG 001EEG 002とかになっていると思いますが、脳波のデータをFIFFにしたので電極名がそのまま反映しています。

電極名は10-20法でなく10-10法のようです。

T3T7T5P7T4T8T6P8になっています。

eeg1という名前のpick widgetを作成します。

namesEEG FP1EEG FP2、・・・、EEG CzEEG Pzです。

aveという名前のvecop-widgetを作成します。

modeaverageとします。

eeg2というpick widgetを作成し、図のように繋ぎます。

namesAVEAVEAVE、・・・(AVE19)とします。

fsubという名前のbinary widgetを作成します。

functionfsubです。

eeg1fsubeeg2fsubfsubdisplayを繋ぎます。

平均基準導出で波形が表示されました。

チャンネル名を変更します。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 REEG DEL Lは左右の三角筋の筋電図とします。これをdisplayに合わせて表示させます。

EMGという名前でpick widgetを作成します。

namesEEG DELREEG DELLです。

selという名前のselector widgetを作成します。

selができました。

(select-to (G-widget sel)(fsub 0 18)(EMG 0 1))と呪文を打ちます。

fsubEMGselにつながりました。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にすると平均誘導になります。

横列双極誘導にしてみました。