Python专栏 | 脑电图和脑磁图(EEG/MEG)的数据分析方法之载入数据

在这里插入图片描述


前言

有关脑电图(EEG)的内容请看下面这篇文章。

脑机接口专栏 | 利用黎曼几何分析EEG脑电信号(一)

脑磁图(Magnetoencephalography),或简称MEG,是集低温超导、生物工程、电子工程、医学工程等二十一世纪尖端科学技术于一体,是无创伤性地探测大脑电磁生理信号的一种脑功能检测技术。
在MEG 问世以前,只有EEG 能检测神经元电活动,EEG 被广泛应用于癫痫的诊断,发作分类及痫性病灶的定位。但头皮EEG 的空间分辨率低,不能区分真正的致痫灶和镜灶,定位价值小。硬膜下EEG 和皮质EEG(ECoG) 、深部埋植电极可直接记录神经元活动,但是存在侵袭性、设备昂贵、监测时间长、并发症多的问题,不适宜作为常规检查。MEG 的应用克服了这些缺点。MEG 和EEG 相比较,其优势在于:

  • 空间分辨率可达1 mm, 是EEG 无法比拟的;
  • MEG 探测的电流源来自细胞内树突电流,电磁场不受传导介质的影响;
  • 对电流源的方向、位置、强度可行三维空间定位;
  • 不需参考电极;
  • 可直接进行功能区定位,能准确反映致痫区的位置和范围;
  • MEG作为一种非侵袭性的高效检查技术,有取代侵袭性检查的趋势。

Python Package—MNE涉及到基于事件的脑电图或脑磁图(EEG/MEG)的基本分析方法。
MNE的核心结构包括

  • Raw:Raw data in FIF format

  • Epochs:Epochs extracted from a Raw
    instance

  • Evoked:Evoked data

  • SourceEstimate:Container for surface source estimates.

一、载入数据(Loading data)

下面开始代码演示。
从导入Python必要模块开始:

import os
import numpy as np
import mne

PS. 如果提示: ModuleNotFoundError: No module named ‘mne’
说明你还没有安装mne包,点击下面的网址链接可以通过多种方式下载mne.
https://mne.tools/stable/install/mne_python.html

安装完成后,可以成功执行 import mne 命令。

mne 支持多种文件格式,与多个数据库有接口,主要基于FIF文件格式。

FIF文件格式是通过Neuromag等设备采集的EEG或MEG信号所储存的文件格式。

fif文件是编译过的,类似bam。
MEG数据不同厂家有不同格式,比如:
Value Description
ctf CTF (folder with .ds extension)
fif Neuromag / Elekta / MEGIN and BabyMEG (file with extension .fif)
4d BTi / 4D Neuroimaging (folder containing multiple files without extensions)
kit KIT / Yokogawa / Ricoh (file with extension .sqd, .con, .raw, .ave or .mrk)
kdf KRISS (file with extension .kdf)
itab Chieti system (file with extension .raw and .mhd)
Reference:
https://bids-specification.readthedocs.io/en/stable/99-appendices/06-meg-file-formats.html

接下来,我们尝试载入一个数据集Sample。

Sample里面的数据包含的样本来自一个进行视听实验的受试者的EEG和MEG数据,以及对该受试者的fMRI的扫描数据。

sample数据描述:
contains EEG and MEG data from one subject performing an audiovisual 
 experiment, along with structural MRI scans for that subject
 
 注释:
 一般实验当中的subject层次结构见下图1
 audiovisual- 视听的

在这里插入图片描述
▲figure1 一般实验Subject层次结构

载入数据的代码:

sample_data_folder = mne.datasets.sample.data_path()


sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample',
                                    'sample_audvis_filt-0-40_raw.fif')


raw = mne.io.read_raw_fif(sample_data_raw_file)

Note:

  1. 如果在预期位置之一中找不到数据集,则mne.datasets.sample.data_path函数将自动下载该数据集,然后将目录路径返回到该数据集。
  2. 为了使本教程在服务器上顺利运行,我们使用了经过过滤和降采样的数据版本(sample_audvis_filt-0-40_raw.fif),但Sample数据集中也还包含未经过滤的版本(sample_audvis_raw.fif),在本地运行时,未经过滤的版本会被自动替换。

友情提醒:
sample_data_folder = mne.datasets.sample.data_path()
需要下载一个1.54GB的数据,可能需要点时间……
(我的渣渣电脑下载了大约10分钟……)

输出结果:

Opening raw data file /home/circleci/mne_data/MNE-sample-data/MEG/sample/sample_audvis_filt-0-40_raw.fif...
    Read a total of 4 projection items:
        PCA-v1 (1 x 102)  idle
        PCA-v2 (1 x 102)  idle
        PCA-v3 (1 x 102)  idle
        Average EEG reference (1 x 60)  idle
    Range : 6450 ... 48149 =     42.956 ...   320.665 secs
Ready.

Note:
read_raw_fif 是用来显示有关正在加载的文件的一些信息。
例如,上面的输出结果告诉我们文件中有四个“Projection Items”以及记录的数据; “Projection Items”是为消除MEG信号中的环境噪声而设计的“SSP (Signal-Space Projection)Projector”,再加上一个用于mean-reference EEG通道的Projector。

有关Projection和Projector可以参考下面的链接:
https://mne.tools/stable/auto_tutorials/preprocessing/plot_45_projectors_background.html#signal-space-projection-ssp

还可以通过 print(raw) 来了解更多基本的详细信息。

print(raw)
"""
out:
<Raw | sample_audvis_filt-0-40_raw.fif, 376 x 41700 (277.7 s), 
~3.3 MB, data not loaded>

通过 print(raw.info) 可以看到更多信息。

info attribute 存在于raw, epochs, evoked等对象中,记录了channel locations, applied filters, projectors 等信息。

也可以用:

info = mne.io.read_info(sample_data_raw_file)
print(info)

Note:
上面的info是dict like类,属于mne.io.meas_info.Info
info.keys()

更多信息请参考:
https://mne.tools/stable/auto_tutorials/intro/plot_30_info.html#tut-info-class

在info输出的信息中尤其要注意chs条目,这表明MNE-Python能够检测到不同的传感器类型并适当地处理每种传感器。

print(raw.info)
"""
out:
<Info | 15 non-empty values
 bads: 2 items (MEG 2443, EEG 053)
 ch_names: MEG 0113, MEG 0112, MEG 0111, MEG 0122, MEG 0123, MEG 0121, MEG ...
 chs: 204 GRAD, 102 MAG, 9 STIM, 60 EEG, 1 EOG
 custom_ref_applied: False
 dev_head_t: MEG device -> head transform
 dig: 146 items (3 Cardinal, 4 HPI, 61 EEG, 78 Extra)
 file_id: 4 items (dict)
 highpass: 0.1 Hz
 hpi_meas: 1 item (list)
 hpi_results: 1 item (list)
 lowpass: 40.0 Hz
 meas_date: 2002-12-03 19:01:10 UTC
 meas_id: 4 items (dict)
 nchan: 376
 projs: PCA-v1: off, PCA-v2: off, PCA-v3: off, Average EEG reference: off
 sfreq: 150.2 Hz
>

二、总结

本例中用到的Python代码总结:

#导入python必要模块
import os
import numpy as np
import mne

sample_data_folder = mne.datasets.sample.data_path()#下载数据

#找到文件地址
sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample',
                                    'sample_audvis_filt-0-40_raw.fif')

#read_raw_fif显示文件中的数据信息,信息的意思是关于环境降噪的
raw = mne.io.read_raw_fif(sample_data_raw_file)

print(raw)
print(Ending factory farming)

#等价于 print(raw.info)
info = mne.io.read_info(sample_data_raw_file)
print(info)

下一期将介绍mne数据可视化。

参考链接:

https://mne.tools/stable/auto_tutorials/intro/plot_10_overview.html#sphx-glr-auto-tutorials-intro-plot-10-overview-py

https://baike.baidu.com/item/%E8%84%91%E7%A3%81%E5%9B%BE%E6%8A%80%E6%9C%AF/15723410?fr=aladdin
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44099023/article/details/112651193