内容

いろいろ読み込み... 1

不良チャンネルの設定... 1

不良チャンネルの補間... 1

雑音時間帯の指定と注釈... 1

雑音エポックの抽出... 1

 

 

MNE-Pythontutorialのこの部分を試してみました。

 

いろいろ読み込み

いろいろ読み込みます。

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()

 

不良チャンネルの設定

まずは波形を見てみます。040Hzで直流除去、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 2443EEG 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 0141のときとし、-0.20.3秒、基線補正を0以前とし、不良チャンネル MEG 2443以外の脳磁図チャンネルのみで加算平均を行います。SSPはかけます。gradiometer>4000×10-13 magnetometer>4×10-12eog>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)

加算平均で除外されたエポック3545を示します。

epochs.drop_bad()

print(epochs.drop_log[35:45])

[]は加算されたエポック、[IGNORED’]はトリガーSTI 0141でなかったエポック、[‘bad blink’]は瞬目でreject_by_annotationで指定されたエポックです。

全体では以下のような割合になっています。

epochs.plot_drop_log()

全エポックの30.6%除外され、瞬目で除外されたエポックが多かったと示されました。