基于MNE-Python的脑电数据分析

关注“心仪脑”查看更多脑科学知识的分

关键词:脑电、数据分析、Python、MNE、神经科学

MNE(https://mne.tools/stable/index.html)是一款开源的主要用于EEG/MEG分析、处理和可视化的python工具包。遵循BSD BSD-license协议,由Harvard大学牵头,社区共同开发。主要的功能包括:EEG/MEG信号的预处理和降噪、时频分析、功能连接、溯源分析、统计分析等等。同时,MNE的读取功能也是非常的强大,它可以读取大部分常见的生理信号的原始数据格式,比如.edf、. cnt、.dbf、.vhdr、.set等,MNE默认的格式为.fif。

基于MNE-Python的脑电数据分析_第1张图片

MNE-python相对EEGLAB有什么优势?

■ EEGLAB是一个Matlab的工具箱(Toolbox),主要用来处理EEG(脑电图)和MEG(脑磁图)以及其它的连续且事件相关的电生理信号。EEGLAB本身是一个开源的免费软件,但是EEGLAB必须基于Matlab平台(7.0及以上版本),而正版的Matlab是收费并且价格不菲。Python是开源的,同时python被认为是一门通用的程序设计语言, 既有函数式语言的简单性也有面向对象语言的灵活性,对初学者非常友好。

■ MATLAB是一门高级的科学计算程序语言,Python的一些扩展程序包的出现让Python变得非常适用于科学计算,比如:Python在数据清洗、分析、可视化等方面都有丰富的库:Pandas/Numpy/Matplotlib等。

因此,我们将会基于MNE-Python进行脑电数据分析,首先介绍的是MNE-Python的安装方法以及MNE中数据结构Raw及其用法。

如何安装MNE-Python?

01安装python(推荐Anaconda)

■ Anaconda不是语言,它是python的一个集成管理工具或系统,它最大的优势就是把python做相关数据计算与分析所需要的包都集成到了一起,这样我们就不必花更多的时间去下载我们需要的各种安装包了,只需要按照Anaconda就行了,为我们节省了大量的时间。

■ 下载网址:

https://www.anaconda.com/products/individual

安装流程

#1■ 找到安装包所在目录,双击安装包

基于MNE-Python的脑电数据分析_第2张图片

#2■ 点击Next,选择I Agree,一路保持默认选择

基于MNE-Python的脑电数据分析_第3张图片

#3■ 选择你想要安装的路径(挑选空间较大的路径)

基于MNE-Python的脑电数据分析_第4张图片

#4■ 配置环境变量:如果你在安装过程中勾选了Add PATH那个选项,则不需要另外单独配置环境变量,但是如果你没有勾选该选项(默认是没有勾选),那么你需要按照以下的方法去进行配置(路径是根据自己的安装位置变化)。

基于MNE-Python的脑电数据分析_第5张图片

#5■ 右击选择电脑属性,进行以下步骤来配置环境变量

基于MNE-Python的脑电数据分析_第6张图片

#6■ 找到Anaconda Prompt,右击“以管理员身份运行”,在Anaconda Prompt中输入conda list,可以查看已经安装的包名和版本号,表示恭喜您已经安装成功了。

基于MNE-Python的脑电数据分析_第7张图片

02安装MNE-python

Win+R打开窗口,输入cmd打开控制台,在控制台中输入pip install mne,若是安装过程中没有出现错误,即表示安装成功。

03测试是否安装成功

在命令窗口输入 import mne,回车,如没有报错,即MNE安装成功

MNE中数据结构Raw及其用法简介

Raw对象主要用来存储连续型数据,我们可以通过raw对象来查看数据的基本信息,包括通道名称、通道数、采样率、数据采集的时间等等;同时,我们可以从Raw对象中提取数据并绘制成图。

开始之前,我们需要导入我们所需要的模块

基于MNE-Python的脑电数据分析_第8张图片

输入sample data的存放地址,读取相应的格式的脑电数据

基于MNE-Python的脑电数据分析_第9张图片

当我们成功读取脑电数据之后,我们可以通过http://raw.info来查看数据的基本信息

基于MNE-Python的脑电数据分析_第10张图片

以上是如何读取脑电数据以及查看数据的基本信息,下面我们来看一下如何从Raw对象中提取数据。

01按索引提取数据

为了节约后面的数据分析的时间,我们可能需要从原始数据中提取一段感兴趣的数据段进行进一步的分析,比如,我们提取第一个通道中几秒钟的数据:

基于MNE-Python的脑电数据分析_第11张图片

我们可以看到输出的结果包含两个数组,一个是数据另一个是时间,我们需要转置数据数组,从而使每一列代表的是一个通道而不是一行,这样做的目的是为了匹配matplotlib的绘图规则。

基于MNE-Python的脑电数据分析_第12张图片

基于MNE-Python的脑电数据分析_第13张图片

02按名称提取数据

Raw对象还可以通过通道名称来进行提取,我们可以单个字符串来提取一个具体通道的数据,也可以通过一个字符串列表来获取多个通道的数据。如下,我们提取两个通道的数据并绘制。

基于MNE-Python的脑电数据分析_第14张图片

基于MNE-Python的脑电数据分析_第15张图片

03小结

总结下来,通常Raw的数据访问方式如下:

基于MNE-Python的脑电数据分析_第16张图片

当然如果你只想要数据,Raw对象有一个get_data()方法。在不指定参数的情况下使用,它将从所有通道中提取所有数据;同时,get_data也可以用于提取特定通道和时间范围,通过它的picks,start和stop 来进行参数设置。

基于MNE-Python的脑电数据分析_第17张图片

得到结果:(32, 2762000)

(2, 1000)

全文完结,整理不易,看不完记得收藏,最后希望点赞支持一下!

了解更多,请关注“心仪脑”公众号!

你可能感兴趣的:(脑电技术)