本教程為腦機學習者Rose發表於公眾號:腦機接口社區(微信號:Brain_Computer).QQ交流群:903290195
Epochs對象是一種將連續數據表示為時間段集合的方法,
其存儲在數組(n_events,n_channels,n_times)
其創建方式可以查看:MNE中數據結構Epoch及其創建方法
本例介紹Epoch對象的常見用法
a. 創建epoch對象
1)讀取fif文件,創建raw對象
2)創建events對象
3)創建epoch對象
import mne
import os.path as op
import numpy as np
from matplotlib import pyplot as plt
第一步:創建raw對象
data_path = mne.datasets.sample.data_path()
# 加載包含事件events的聽覺數據集
raw = mne.io.read_raw_fif(
op.join(data_path, 'MEG', 'sample', 'sample_audvis_raw.fif'))
第二步:創建events對象
# 構造事件數組
events = mne.find_events(raw, stim_channel='STI 014')
# 顯示事件數
print('Number of events:', len(events))
# 顯示所有唯一的事件編號(第3列)
print('Unique event codes:', np.unique(events[:, 2]))
"""
使用描述性標簽指定感興趣的事件代碼。
給不同的events一個描述性名稱。
"""
event_id = {'Auditory/Left': 1, 'Auditory/Right': 2}
這里可以用上述提取的事件創建mne.Epochs對象,但該方式構造的epoch是無法使用,因為數據還未讀入到內存中,可以通過get_data來獲取也可以使用preload=True.
第三步:創建epoch對象
把原始數據(raw)切分成若干個epoch(時間片段)的集合,
以每個提前標准好的event為參照,取tmin到tmax這一段時間作為一個epoch來進行數據處理。
取每個event的前0.1秒和后1秒共1.1秒的時間長度作為一個epoch,為后續同類型的event的epochs疊加(average)分析做准備。
epochs = mne.Epochs(raw, events, event_id, tmin=-0.1, tmax=1,
baseline=(None, 0), preload=True)
print(epochs)
b.查看epoch對象
epochs對象類似於mne.io.Raw對象,也具有info屬性和event屬性。
可以通過下面兩種方式來查看epoch內的event相關信息
print(epochs.events[:3])
print(epochs.event_id)
[[27977 0 2]
[28771 0 1]
[29652 0 2]]
{'Auditory/Left': 1, 'Auditory/Right': 2}
也可以通過使用python的列表切片方式訪問epoch對象內的events,
也可以通過events的描述性名稱直接訪問
print(epochs[1:5])
print(epochs['Auditory/Right'])
說明:'/'符號用來划分標簽(tag),每個被'/'划分開的單詞都可以作為檢索的字符串,
也可以直接搜索epochs['Right']也能得到結果
print(epochs['Right'])
print(epochs['Right', 'Left'])
c.epoch平均疊加
通過調用mne.Epochs.average()方法可返回Evoked對象,average()方法可以通過參數指定需要的信道。
ev_left = epochs['Auditory/Left'].average()
ev_right = epochs['Auditory/Right'].average()
f, axs = plt.subplots(3, 2, figsize=(10, 5))
_ = f.suptitle('Left / Right auditory', fontsize=20)
_ = ev_left.plot(axes=axs[:, 0], show=False, time_unit='s')
_ = ev_right.plot(axes=axs[:, 1], show=False, time_unit='s')
plt.tight_layout()
左上角圖,該圖展示了原始數據中左聽覺(事件標記'Auditory/Left')的epochs,
同時對所提取的所有的EEG通道進行平均值疊加處理。
在實際過程中也可以指定通道進行疊加(通過pick方法提取通道並進行average處理)
本文章由腦機學習者Rose筆記分享,QQ交流群:903290195
更多分享,請關注公眾號