本案例主要介绍如何读取eeglab示例文件.set以及.locs文件。

.set文件记录的是采集的信息,主要内容包括通道数,事件数,开始时间与结束时间等。

.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

1. 利用mne.io.read_raw_eeglab来读取.set文件

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

2. 绘制从第5s开始,5s时间窗口长的原始数据

"""
绘制从第5s开始,5s时间窗口长的原始数据start:指定开始绘制的时间
duration:要绘制的时间窗口从该图中可以看出每个通道的数据波动情况
可以通过设置duration的大小来放大或缩小这个有点类似于eeglab中,放大缩小功能。
这里相同大小的窗口显示更短时间的数据,相当于eeglab中的选中数据进行放大,
反之,即缩小。
"""
raw.plot(start=5, duration=5)
plt.show()

"""
设置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'])
['EEG 000', 'EEG 001', 'EEG 002', 'EEG 003', 'EEG 004', 'EEG 005', 'EEG 006', 'EEG 007', 'EEG 008', 'EEG 009', 'EEG 010', 'EEG 011', 'EEG 012', 'EEG 013', 'EEG 014', 'EEG 015', 'EEG 016', 'EEG 017', 'EEG 018', 'EEG 019', 'EEG 020', 'EEG 021', 'EEG 022', 'EEG 023', 'EEG 024', 'EEG 025', 'EEG 026', 'EEG 027', 'EEG 028', 'EEG 029', 'EEG 030', 'EEG 031']

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

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'])
['FPz', 'EOG1', 'F3', 'Fz', 'F4', 'EOG2', 'FC5', 'FC1', 'FC2', 'FC6', 'T7', 'C3', 'C4', 'Cz', 'T8', 'CP5', 'CP1', 'CP2', 'CP6', 'P7', 'P3', 'Pz', 'P4', 'P8', 'PO7', 'PO3', 'POz', 'PO4', 'PO8', 'O1', 'Oz', 'O2']

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

不用于商业行为,转载请联系后台

若有侵权,请后台留言,管理员即时删侵!

更多阅读

WAIC探营|脑疾病的“希望之光”,中国脑机接口技术将有新突破

[MNE-Python-1]| MNE-Python详细安装与使用

[MNE-Python-2]| MNE中数据结构Raw及其用法简介

[MNE-Python-3]| MNE中数据结构Epoch及其创建方法

[MNE-Python-5]| Python机器学习算法随机森林判断睡眠类型

猴子意念打字,有可能敲出莎士比亚全集

Nature子刊:利用闭环脑机接口缓解疼痛感

利用脑机接口从鸟的脑电波中重现鸟唱歌声

投稿通道

如何让你的工作让更多人知晓和受益?

脑机接口社区就是这样一个连接学界、

企业界和爱好者的平台渠道。

社区鼓励高校实验室、企业或个人在我们平台上分享优质内容。

稿件要求

稿件系个人原创作品,若已在其他平台发表,请明确标注。

稿件一经录取,便提供稿费!

投稿通道

微信扫码,备注:投稿+姓名+单位

微信交流群,请扫码上方微信

(备注:姓名+单位+专业/领域行业)

QQ交流群:913607986

你的每一次在看,我都很在意!

脑电分析系列[MNE-Python-6]| Python读取.set文件和.locs文件相关推荐

  1. 脑电分析系列[MNE-Python-5]| Python机器学习算法随机森林判断睡眠类型

    案例介绍 本案例通过对多导睡眠图(Polysomnography,PSG)数据进行睡眠阶段的分类来判断睡眠类型. 训练:对Alice的睡眠数据进行训练: 测试:利用训练结果对Bob的睡眠数据进行测试, ...

  2. 脑电分析系列[MNE-Python-2]| MNE中数据结构Raw及其用法简介(更新)

    Raw对象主要用来存储连续型数据,核心数据为n_channels和times,也包含Info对象. 下面可以通过几个案例来说明Raw对象和相关用法. Raw结构查看: # 引入python库 impo ...

  3. 脑电分析系列 | MNE-Python汇总

    1 脑电分析系列MNE-Python教程 [MNE-1]| MNE-Python详细安装与使用(更新) [MNE-2]| MNE中数据结构Raw及其用法简介(更新) [MNE-3]| MNE中数据结构 ...

  4. 脑电分析系列[MNE-Python-19]| 可视化Evoked数据

    在前面我们介绍过Evoked的数据结构以及如何创建Evoked对象: 脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建 Evoked potential(EP)诱发 ...

  5. 脑电分析系列[MNE-Python-11]| 信号空间投影SSP 应用

    信号空间投影(SSP) 在前面一篇分享(脑电分析系列[MNE-Python-10]| 信号空间投影SSP数学原理)中提到,投影矩阵将根据您试图投射出的噪声种类而变化.信号空间投影(SSP)是一种通过比 ...

  6. 脑电分析工具MNE教程

    资料来源:脑电分析系列 | MNE-Python汇总 目录 1.安装与使用 2.数据结构Raw 3.Epoch 4.Evoked 5.案例 (1)导入工具库 (2)加载数据 (3)测试数据 (4)提取 ...

  7. 脑电分析系列 | eeglab汇总

    1 脑电分析系列eeglab教程 eeglab教程系列(1)-安装教程 eeglab教程系列(2)-加载.显示数据 eeglab教程系列(3)-绘制脑电头皮图 eeglab教程系列(4)-绘制通道光谱 ...

  8. 脑电分析系列[MNE-Python-21]| Python协方差矩阵处理脑电数据

    今天主要介绍一下MNE中如何用协方差矩阵来处理脑电数据的. MNE中的许多方法,包括源估计和一些分类算法,都需要根据记录进行协方差估计. 在本教程中,我们将介绍传感器协方差计算的基础知识,并构建一个噪 ...

  9. 脑电分析系列[MNE-Python-2]| MNE中数据结构Epoch及其创建方法

    Epoch概念简介 相信很多人第一次接触epoch时,都会有疑惑,这个词在EEG中到底指的是什么. 下面将详细说明一下. 从连续的脑电图信号中提取一些特定时间窗口的信号,这些时间窗口可以称作为epoc ...

最新文章

  1. 面经:什么是Transformer位置编码?
  2. 如何获取html页面上的按钮列表,如何从一个html页面获取单选按钮的值到另一个?...
  3. 使用juery在iframe内部访问父页面元素
  4. 在虚拟机中安装gentoo简化步骤(基于官方手册)
  5. MySQL存储引擎、MyISAM、InnoDB
  6. Spring原理只要看这篇文章就够了
  7. 十大经典排序算法最强总结(含JAVA代码实现),大厂 HR 如何面试
  8. 织梦缩略图自动补齐绝对路径_织梦生成文章内容缩略图时自动加上绝对路径教程...
  9. 在html种颜色的代码,html颜色代码生成器
  10. MyBatis概述与架构
  11. snmp连接工具_网络管理员的5款最佳网络配置管理工具,收藏了
  12. win10背景显示计算机名,如何自定义Win10计算机的开始菜单背景和图片
  13. ojdbc6手动装载
  14. vue-cli脚手架build目录中的webpack.base.conf.js配置文件
  15. CS常用文件的安装 CS脚本参数查询 控制台常用参数查询
  16. 红山服务器虚拟化解决方法,红山虚拟化:数据备份与灾难恢复
  17. python将中文数字转化成阿拉伯数字
  18. c语言—冒泡排序(详解)
  19. SD/SDIO/EMMC
  20. UIColor 生成纯色图片

热门文章

  1. 【Spark篇】---Spark解决数据倾斜问题
  2. Java如何打印异常的堆栈?
  3. 解决RabbitMQ消息丢失与重复消费问题
  4. Freescale 车身控制模块(BCM) 解决方案
  5. 解决vue移动端适配问题
  6. git remote添加其他SSH端口
  7. 使用多个JFrame:好的还是不好的做法? [关闭]
  8. Android热修复之 阿里开源的热补丁
  9. windows一个目录下最大文件数目
  10. PYTHON高级全栈开发工程师-老男孩教育