关注微信公众号:脑机接口研习社
了解脑机接口最近进展
前言
有关脑电图(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:
- 如果在预期位置之一中找不到数据集,则mne.datasets.sample.data_path函数将自动下载该数据集,然后将目录路径返回到该数据集。
- 为了使本教程在服务器上顺利运行,我们使用了经过过滤和降采样的数据版本(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