MNE-Python 是一款专为处理和分析脑电图(EEG)、脑磁图(MEG)以及功能性磁共振成像(fMRI)数据而设计的开源 Python 库。得益于 Python 的灵活性和可扩展性,MNE-Python 不仅可以满足基础分析的需求,还能通过其强大的社区生态实现高度定制化。
在本教程中,我们将深入探讨 MNE-Python 的功能、适用场景、安装方法,以及如何快速上手分析 EEG/MEG 数据。
MNE-Python是什么?为什么值得学习?
MNE-Python 是基于 Python 的神经影像学工具包,专为处理脑电(EEG)、脑磁(MEG)和相关数据而设计。它是 MNE-C(一种 C 语言实现的 MEG 分析软件)的 Python 版本,由 MGH Martinos Center 开发并维护。作为一款现代化的工具,MNE-Python 提供了直观的 API 接口和丰富的文档,适合科研工作者和开发者使用。
官网和资源:
- 官网:https://mne.tools/
- 文档:MNE 官方文档
- GitHub:MNE GitHub 仓库
MNE-Python 的优势:
- 开源免费:完全开源,支持 Python 全部版本。
- 支持多种数据格式:兼容多种 EEG/MEG 设备(如 Neuroscan、Biosemi、Elekta)。
- 丰富的功能:从数据预处理到高级分析(脑源定位、时频分析、功能连接等),MNE-Python 都能胜任。
- 与 Python 生态无缝集成:支持与 NumPy、Pandas、Matplotlib、Scikit-learn 等工具协作。
- 教程详细:不仅有详细的教程,还有用于测试的数据集。最重要的是,都封装好了源码!
MNE-Python 的功能和应用场景
MNE-Python 提供了一整套 EEG 和 MEG 数据分析工具,涵盖从原始数据的加载和预处理到高级分析的每个环节。以下是它的核心功能和应用场景:
1. 数据加载与预处理
MNE-Python 能够轻松加载和处理多种 EEG/MEG 数据格式:
- 伪迹清理:支持独立成分分析(ICA)去伪迹,检测眨眼、心跳和肌肉伪迹。
- 滤波:支持高通、低通、带通滤波,消除低频漂移和高频噪声。
- 重参考:根据需求设置 EEG 数据的参考通道(如平均参考或双极参考)。
2. 事件检测与标记
MNE-Python 提供了灵活的事件检测工具,可以从原始数据中提取事件标记(如实验中的刺激或响应事件)。
3. 时频分析
支持多种时频分析方法,帮助研究脑信号的时间动态和频率特征:
- 短时傅里叶变换(STFT)
- 小波变换
- 功率谱密度估计(PSD)
4. 脑源定位
结合个体 MRI 数据或标准脑模板,MNE-Python 可以进行脑源定位分析,重建脑皮层活动的空间分布。
5. 功能连接分析
MNE-Python 提供多种功能连接指标,用于研究脑区间的信息交流:
- 相位锁定值(PLV)
- Granger 因果关系
- 互信息分析
6. 数据可视化
MNE-Python 拥有强大的可视化功能:
- EEG/MEG 数据的时间序列图
- 信号的时频图
- 脑源定位的三维脑图(可使用 PySurfer 集成可视化)
7. 集群分析和统计分析
支持复杂的群体比较和基于集群的统计检验。
8. 数据兼容性
支持多种 EEG/MEG 数据格式(如 FIF、EDF、BDF),并能与其他工具(如 Brainstorm 和 EEGLAB)生成的数据互通。
如何安装 MNE-Python?
MNE-Python 的安装非常方便,以下是具体步骤:
1. 使用 pip 安装
如果你已经安装了 Python(推荐版本 >= 3.8),可以直接通过 pip 安装 MNE:
pip install mne
2. 创建虚拟环境(可选)
为了避免与其他项目的依赖冲突,建议为 MNE-Python 创建一个独立的虚拟环境:
# 创建虚拟环境
python -m venv mne_env
# 激活虚拟环境
source mne_env/bin/activate # macOS/Linux
mne_env\Scripts\activate # Windows
# 安装 MNE
pip install mne
3. 安装附加依赖
如果需要高级功能(如脑源定位或三维可视化),可以安装以下依赖项:
pip install matplotlib scipy pandas nibabel
pip install pyvista pyvistaqt scikit-learn
4. 验证安装
安装完成后,运行以下代码验证安装是否成功:
import mne
mne.sys_info()
MNE-Python 的使用流程
以下是使用 MNE-Python 进行 EEG/MEG 数据分析的典型流程:
1. 加载数据
MNE 可以加载多种格式的 EEG/MEG 数据,例如 FIF、EDF、BDF 等:
import mne
# 加载 EEG/MEG 数据
raw = mne.io.read_raw_fif('sample_raw.fif', preload=True)
# 查看数据基本信息
raw.info
# 绘制原始信号
raw.plot()
2. 数据预处理
对原始数据进行伪迹去除、滤波和参考设置:
# 滤波
raw.filter(l_freq=1.0, h_freq=40.0)
# 使用 ICA 去伪迹
ica = mne.preprocessing.ICA(n_components=20, random_state=97, max_iter=800)
ica.fit(raw)
ica.plot_sources(raw)
3. 提取事件并分段
从原始数据中提取事件标记,并按照实验条件分段:
# 提取事件
events = mne.find_events(raw)
# 按条件分段数据
epochs = mne.Epochs(raw, events, event_id={'Stimulus/Left': 1, 'Stimulus/Right': 2},
tmin=-0.2, tmax=0.5, baseline=(None, 0), preload=True)
# 绘制分段信号
epochs.plot()
4. 时频分析
分析信号在时间和频率上的动态变化:
# 计算时频图
power = mne.time_frequency.tfr_morlet(epochs, freqs=[6, 10, 20], n_cycles=2, return_itc=False)
# 绘制时频图
power.plot([0]) # 绘制第一个通道
5. 脑源定位
结合 MRI 数据生成脑源定位结果:
# 加载头模型
fwd = mne.make_forward_solution(raw.info, trans='sample-trans.fif',
src='sample-src.fif', bem='sample-bem.fif')
# 逆解生成脑源定位
inverse_operator = mne.minimum_norm.make_inverse_operator(raw.info, fwd, noise_cov=None)
stc = mne.minimum_norm.apply_inverse_raw(raw, inverse_operator)
# 绘制三维脑源定位图
stc.plot(hemi='lh', subjects_dir='subjects_dir')
标签:MEG,06,Python,MNE,raw,EEG,mne
From: https://blog.csdn.net/weixin_45638136/article/details/145013766