Python-EEG工具庫MNE中文教程(3)-MNE中數據結構Epoch及其用法簡介


本教程為腦機學習者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
更多分享,請關注公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM