内容
MNE-Pythonのtutorialのこの部分を試してみました。
いろいろ読み込みます。
import
numpy as np
import
mne
from
mne.datasets import sample
raw_fname='c:\\Users\\akira\\mne_data\\MNE-sample-data\\MEG\\sample\\sample_audvis_filt-0-40_raw.fif'
raw=mne.io.read_raw_fif(raw_fname,add_eeg_ref=False)
raw.set_eeg_reference()
まずは波形を見てみます。0〜40Hzで直流除去、10秒ずつ、20chずつの設定とします。
raw.info['bads']=加算 # 最初に不良チャンネルはなしとする
raw.plot(duration=10.,start=0.,n_channels=20,lowpass=40,remove_dc=True)
縦バーをクリックしてMEG2443付近を捜します。
MEG
2443が不良です。
raw.info['bads']=['MEG 2443']
このままではmne_browse_rawに反映しないのでウインドウを閉じてもう一度mne_browse_rawを開きます。
import
matplotlib.pyplot as plt
plt.close('mne_browse_raw')
raw.plot(duration=10.,start=0.,n_channels=20,lowpass=40,remove_dc=True)
不良チャンネルが灰色で表示されました。
不良チャンネルの設定なしで予め加算平均したデータを見てみます。
fname='c:\\Users\\akira\\mne_data\\MNE-sample-data\\MEG\\sample\\sample_audvis-ave.fif'
evoked=mne.read_evokeds(fname,condition='Left
Auditory',baseline=(None,0))
evoked.pick_types(meg=True,eeg=True,exclude=加算) # bad channelなし
evoked.plot(exclude=加算)
print(evoked.info['bads'])
不良チャンネルは赤で表示されています。
MEG
2443とEEG
053が不良チャンネルです。
不良チャンネルの補間をします。原理は脳波は球のspline補間、脳磁図は磁場の補間だそうです。
なんかいい感じで補間されてます。
mne.Annotationsという機能を使います。
plt.close('all') # Figureを全部閉じる
eog_events=mne.preprocessing.find_eog_events(raw)
n_blinks=len(eog_events)
onset=eog_events[:,0]/raw.info['sfreq']-0.25
# 眼電図の中央から0.25秒前後
duration=np.repeat(0.5,n_blinks)
raw.annotations=mne.Annotations(onset,duration,瞬目*n_blinks,orig_time=raw.info['meas_date'])
raw.plot(events=eog_events)
眼が動いたかどうかわからないので眼電図をみてみます。縦のバーの一番下をクリックします。
眼が動いた回数などは変数エクスプローラーに書いてあります。
トリガーをauditory/leftで STI
014が1のときとし、-0.2〜0.3秒、基線補正を0以前とし、不良チャンネル
MEG 2443以外の脳磁図チャンネルのみで加算平均を行います。SSPはかけます。gradiometer>4000×10-13、 magnetometer>4×10-12、eog>150×10-6のエポックを除外し、reject_by_annotationで定義したエポックは除外します。
events=mne.find_events(raw,stim_channel='STI
014')
event_id={"auditory/left":1}
tmin=-0.2
tmax=0.5
baseline=(None,0)
reject=dict(grad=4000e-13,mag=4e-12,eog=150e-6)
picks_meg=mne.pick_types(raw.info,meg=True,eeg=False,eog=True,stim=False,exclude='bads')
epochs=mne.Epochs(raw,events,event_id,tmin,tmax,proj=True,picks=picks_meg,baseline=baseline,reject=reject,reject_by_annotation=True,add_eeg_ref=False)
加算平均で除外されたエポック35〜45を示します。
epochs.drop_bad()
print(epochs.drop_log[35:45])
[]は加算されたエポック、[‘IGNORED’]はトリガーSTI
014が1でなかったエポック、[‘bad
blink’]は瞬目でreject_by_annotationで指定されたエポックです。
全体では以下のような割合になっています。
epochs.plot_drop_log()
全エポックの30.6%除外され、瞬目で除外されたエポックが多かったと示されました。