第 1 层 · 数据加载层 · 第 1 步 / 共 25 步

步骤 01:数据加载

将外部 EEG 数据文件读入 MNE-Python,返回 Raw 对象

🕐 15 分钟🎯 难度:入门🔗 核心 API:mne.io.read_raw_*⬅️ 前置:无

1. 目标

将外部 EEG 数据文件(.fif、.edf、.bdf、.vhdr、.cnt、.set 等)读入 MNE-Python,返回 Raw 对象,作为整个预处理流水线的起点。

2. 何时使用 / 何时跳过

  • 必须使用:整个流程的第一步,无任何前置步骤
  • 不可跳过:所有后续步骤的输入都依赖 Raw 对象

3. 前置条件

  • 已安装 MNE-Python:pip install mne
  • 数据文件已知格式与路径
  • 建议设置 MNE_DATA 环境变量或使用 mne.datasets 内置数据集练手

4. 核心代码

Python
import mne

# ====== 方式 A:读取 .fif 格式(MNE 原生) ======
raw = mne.io.read_raw_fif('path/to/subject-01_raw.fif', preload=True)

# ====== 方式 B:读取 EDF 格式 ======
raw = mne.io.read_raw_edf('path/to/subject-01.edf', preload=True)

# ====== 方式 C:读取 BDF(BioSemi) ======
raw = mne.io.read_raw_bdf('path/to/subject-01.bdf', preload=True)

# ====== 方式 D:读取 BrainVision(.vhdr + .eeg + .vmrk) ======
raw = mne.io.read_raw_brainvision('path/to/subject-01.vhdr', preload=True)

# ====== 方式 E:读取 EEGLAB .set ======
raw = mne.io.read_raw_eeglab('path/to/subject-01.set', preload=True)

# ====== 方式 F:使用 MNE 内置 sample 数据集练习 ======
from mne.datasets import sample
data_path = sample.data_path()
raw = mne.io.read_raw_fif(
    data_path / 'MEG' / 'sample' / 'sample_audvis_raw.fif',
    preload=True
)

5. 参数详解

参数 含义 推荐值 默认值
preload 是否将数据加载到内存 True(小数据)/ False(大文件,按需加载) False
verbose 日志详细度 'ERROR'(生产)/ 'INFO'(调试) 'INFO'

⚠️ preload=True 是后续所有滤波、ICA、epoch 步骤的前置条件。如果保留 preload=False,任何修改类操作(filter / pick / resample)都会报错或产生意外行为。

6. 验证方法

Python
# 验证 1:打印基本信息
print(raw)
print(raw.info)

# 验证 2:检查关键字段
assert 'sfreq' in raw.info
assert raw.info['sfreq'] > 0
print(f"采样率: {raw.info['sfreq']} Hz")
print(f"通道数: {len(raw.ch_names)}")
print(f"时长: {raw.times[-1]:.1f} s")

# 验证 3:可视化原始数据
raw.plot(duration=5, n_channels=30, scalings='auto')

期望输出: - print(raw) 输出 <Raw | subject-01_raw.fif | 64 ch | 1000 Hz> - raw.info 中可见 sfreq、ch_names、highpass、lowpass

7. 常见错误

错误信息 原因 解决方案
FileNotFoundError 路径错误或文件名拼写错误 使用绝对路径或 pathlib.Path 构造
ValueError: preload must be True 未设 preload=True 但后续想用 .copy() 等 重新读取并设 preload=True
NotImplementedError 格式不被支持 转换为 .fif 或 .edf 后再读
RuntimeError: No reader for ... 未安装对应 IO 插件 pip install mne[io] 或安装专用包
通道名乱码 EDF/BDF 文件头编码异常 设 encoding='latin-1' 或 eog='auto'

8. 官方来源

资源类型 链接
API 总览 https://mne.tools/stable/generated/mne.io.html
read_raw_fif https://mne.tools/stable/generated/mne.io.read_raw_fif.html
read_raw_edf https://mne.tools/stable/generated/mne.io.read_raw_edf.html
read_raw_bdf https://mne.tools/stable/generated/mne.io.read_raw_bdf.html
read_raw_brainvision https://mne.tools/stable/generated/mne.io.read_raw_brainvision.html
数据 IO 教程 https://mne.tools/stable/auto_tutorials/io/10_reading_meg_data.html
EEG 数据 IO 教程 https://mne.tools/stable/auto_tutorials/io/20_reading_eeg_data.html

9. 学术引用

无需在论文中单独引用本步骤。如整体使用 mne-bids-pipeline,可引用:

Gramfort, A., et al. (2014). MNE software for processing MEG and EEG data. Neuroimage, 86, 446-460.