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

2021/7/8 9:36:17

本文主要是介绍基于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相对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■ 找到安装包所在目录,双击安装包

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

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

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

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

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

02安装MNE-python

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

03测试是否安装成功

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

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

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

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

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

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

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

01按索引提取数据

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

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

02按名称提取数据

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

03小结

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

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

得到结果:(32, 2762000)

(2, 1000)

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

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



这篇关于基于MNE-Python的脑电数据分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程