脑机接口基础学习07 您所在的位置:网站首页 set的头文件 脑机接口基础学习07

脑机接口基础学习07

2023-08-30 10:23| 来源: 网络整理| 查看: 265

这一篇文章主要介绍如何读取eeglab示例文件.set以及.locs文件 (1).set文件记录的是采集的信息,主要内容包括通道数,事件数,开始时间与结束时间等 (2).locs文件记录的是电极位置信息 知识点: mne中使用mne.io.read_raw_eeglab()读取.set文件 利用mne.channels.read_custom_montage()读取.locs文件 read_raw_eeglab()函数介绍:

mne.io.read_raw_eeglab(input_fname, montage='deprecated', eog=(), preload=False, uint16_codec=None, verbose=None)

参数解读: input_fname: .set文件的存放路径 montage=‘deprecated’:该参数已经舍弃了,在0.19版本中,它的功能可以通过set_montage方法来实现; eog:指定eog通道的通道名称或索引,如果设置为auto,则使用包含eog和eye的通道名称。默认情况为空元祖; preload:类型为str或bool,如果为True,则数据将预加载到内存中,以满足更快速的索引; uint16_codec:类型str或None,允许指定读取字符数组时应用的编解码器(比如,‘latin1’或者‘utf-8’) 下面来看一个案例

import mne import matplotlib.pyplot as plt ''' 通过mne.io.read_raw_eeglab来读取.set文件 得到原始数据对象 ''' raw=mne.io.read_raw_eeglab('Eeglab_data.set',preload=False)

2.绘制从第5s开始,5s时间窗口长的原始数据 start:指定开始绘制的时间 duration:要绘制的时间窗口

raw.plot(start=5,duration=5) plt.show()

从该图中可以看出每个通道的数据波动情况 可以通过设置duration的大小来放大或缩小

这个有点类似于eeglab中,放大缩小功能,这里相同大小的窗口显示更短时间的数据,相当于eeglab的选中数据进行放大,反之,即缩小

''' 设置duration=1,相当于放大 ''' raw.plot(start=5,duration=1) plt.show()

在这里插入图片描述 3.通常raw的数据访问方式如下: data,times=raw[picks,time_slice] picks:根据条件挑选出来的索引 time_slice:时间切片

想要获取raw中所有数据,以下两种方式均可: data,times=raw[:] data,times=raw[:,:]

''' 获取1-3秒内的EEG数据 获取前5条,时间从1秒开始到3秒为止的数据 raw[:5,int(sfreq*1):int(sfreq*3)] ''' sfreq=raw.info['sfreq'] data,times=raw[:5,int(sfreq*1):int(sfreq*3)] plt.plot(times,data.T) plt.title('Sample channels')

在这里插入图片描述 4.读取.locs文件

""" 打印通道名 """ print(raw.info['ch_names'])

在这里插入图片描述 从上述打印的结果可以看到,原始数据中通道名称并非电极位置的命名,因此需要将其映射成电极位置名称。

mapping = { 'EEG 000': 'FPz', 'EEG 001': 'EOG1', 'EEG 002': 'F3', 'EEG 003': 'Fz', 'EEG 004': 'F4', 'EEG 005': 'EOG2', 'EEG 006': 'FC5', 'EEG 007': 'FC1', 'EEG 008': 'FC2', 'EEG 009': 'FC6', 'EEG 010': 'T7', 'EEG 011': 'C3', 'EEG 012': 'C4', 'EEG 013': 'Cz', 'EEG 014': 'T8', 'EEG 015': 'CP5', 'EEG 016': 'CP1', 'EEG 017': 'CP2', 'EEG 018': 'CP6', 'EEG 019': 'P7', 'EEG 020': 'P3', 'EEG 021': 'Pz', 'EEG 022': 'P4', 'EEG 023': 'P8', 'EEG 024': 'PO7', 'EEG 025': 'PO3', 'EEG 026': 'POz', 'EEG 027': 'PO4', 'EEG 028': 'PO8', 'EEG 029': 'O1', 'EEG 030': 'Oz', 'EEG 031': 'O2' } # 根据映射名对原始数据中的通道名进行重命名 raw.rename_channels(mapping) """ 读取.locs文件,.locs文件记录的是电极头皮位置 """ montage=mne.channels.read_custom_montage("eeglab_chan32.locs") """ 设置脑电图中传感器配置(电极位置配置) """ raw.set_montage(montage,raise_if_subset=False) """ 打印设置电极位置后的通道名 """ print(raw.info['ch_names'])

在这里插入图片描述 5.绘制电极位置

# 绘制电极位置 raw.plot_sensors() plt.show()

在这里插入图片描述

""" 绘制通道位置图,并对应位置上显示通道名称 """ layout_from_raw = mne.channels.make_eeg_layout(raw.info) layout_from_raw.plot() plt.show()

在这里插入图片描述

""" 上述效果也可通过 mne.channels.find_layout(raw.info, ch_type='eeg') 来读取 """ layout_from_raw =mne.channels.find_layout(raw.info, ch_type='eeg') layout_from_raw.plot() plt.show()

在这里插入图片描述 6.绘制各通道的功率谱密度

""" 绘制各通道的功率谱密度 """ raw.plot_psd() plt.show()

在这里插入图片描述

""" 绘制采样频率在30Hz到70Hz之间,且只考虑40s到50s之间的所有通道的PSD """ raw.plot_psd(fmin=30, fmax=70, tmin=40,tmax=50.0,spatial_colors=True) plt.show()

在这里插入图片描述

""" 绘制采样频率在30Hz到70Hz之间,且只考虑40s到50s之间的所有通道的平均PSD """ raw.plot_psd(fmin=30, fmax=70, tmin=40,tmax=50.0,average=True) plt.show()

在这里插入图片描述

因为我没有下载EEGLAB,所以也没有示例数据,只是敲了一遍代码,文中的图均来自于脑机接口公众号



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有