0 导入相关包
import mne
import matplotlib.pyplot as plt
import numpy as np
1 数据集
数据集用的是bbci competition IV 2b左右手想象 下载地址
2 读取gdf文件
mne就提供了读取gdf文件的函数read_raw_gdf
raw = mne.io.read_raw_gdf(path+file)
raw.load_data()
3 获取需要事件和事件id
查看官方给的description文件得知 768是静息状态 769左手想象 770右手想象
custom_mapping = {'768': 9, '769': 10, '770': 11}
(events_from_annot,event_dict) = mne.events_from_annotations(raw, event_id=custom_mapping)
print(event_dict)
4 去除眼电通道数据
raw.drop_channels([ 'EOG:ch01', 'EOG:ch02', 'EOG:ch03'])
5 构建epoch数据
epochs = mne.Epochs(raw, events=events_from_annot, event_id=event_dict,proj=True,baseline=(None, 0), preload=True,tmin=-0.2,tmax=0.5)
print(epochs)
6 构建evoked数据
evoked = epochs.average()
evoked.plot(time_unit='s')
plt.show()
7 为evoked数据设置电极位置信息
evoked.set_montage('standard_1020')
出现报错
8 解决办法
跳过第7步 显式创建info结构 并且设置电极位置信息
ch_names = ['C3', 'C4', 'Cz']
ch_types = ['eeg'] * 3
info = mne.create_info(ch_names, ch_types=ch_types, sfreq=250)
info.set_montage('standard_1020')
9 画地形图
evoked的数据结构是 通道数*采样点数 其中一个采样点对应一个地形图
mne.viz.plot_topomap(evoked.data[:, 0], info,show=False)