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

步骤 03:通道类型标注

为 EOG/EMG/EEG 等通道设置正确类型

🕐 15 分钟🎯 难度:入门🔗 核心 API:raw.set_channel_types⬅️ 前置:步骤 2

1. 目标

明确告知 MNE 哪些通道是 EEG、哪些是 EOG/ECG/EMG/STIM 等。通道类型决定后续平均参考、ICA、SSP 投影的行为——若 EOG 被误标为 EEG,会污染平均参考并破坏 ICA 分离。

2. 何时使用 / 何时跳过

  • 必须使用:当 raw.get_channel_types() 中 EOG/ECG 通道被默认为 eeg 时
  • 可跳过:已通过专用读取函数(如 read_raw_edf(preload=True, eog=['EOG1', 'EOG2']))正确设置

3. 前置条件

  • 已执行步骤 02:已确认通道名与通道类型分布

4. 核心代码

Python
import mne

# ====== 典型配置:脑电 + 双导眼电 + 心电 + 触发 ======
channel_type_mapping = {
    # EEG 通道(不需要单独标,MNE 默认就是 eeg)
    # 'Fp1': 'eeg',
    # 'Fp2': 'eeg',

    # 眼电通道
    'EOG001': 'eog',  # 水平眼电
    'EOG002': 'eog',  # 垂直眼电

    # 心电通道
    'ECG001': 'ecg',

    # 肌电通道(可选)
    'EMG001': 'emg',

    # 刺激/触发通道
    'STI001': 'stim',
}

raw.set_channel_types(channel_type_mapping)

# ====== 一次性应用 ======
# raw.set_channel_types({'HEOG': 'eog', 'VEOG': 'eog', 'ECG': 'ecg', 'Trigger': 'stim'})

# ====== 批量转换:把某些通道从 eeg 改为 eog ======
# raw.set_channel_types({'Fp1': 'eog'})  # 例如把 Fp1 当眼电参考

# ====== 反向操作:误标后还原 ======
# raw.set_channel_types({'EOG001': 'eeg', 'EOG002': 'eeg'})

5. 参数详解

参数 含义 取值范围
channel_type_mapping 通道名 → 通道类型 的字典 key 必须在 ch_names 中
可选 channel type eeg / eog / ecg / emg / stim / misc / ref_meg 等 见 mne.io.constants

6. 验证方法

Python
from collections import Counter

# 验证 1:打印通道类型分布
type_counter = Counter(raw.get_channel_types())
print(type_counter)
# 期望:{'eeg': 60, 'eog': 2, 'ecg': 1, 'stim': 1}

# 验证 2:断言关键类型存在
assert 'eeg' in raw.get_channel_types(), "没有 EEG 通道"
assert 'stim' in raw.get_channel_types(), "没有 STIM 通道(事件提取会失败)"

# 验证 3:可视化眼电通道(确认其振幅远大于 EEG,符合生理预期)
raw.plot(
    picks=['eog', 'ecg'],
    duration=10,
    scalings=dict(eeg=20e-6, eog=50e-6, ecg=50e-6),
)

7. 常见错误

错误 原因 解决方案
ValueError: Channel ... not found 字典 key 与实际通道名不一致 用 raw.ch_names 严格匹配(注意空格、大小写)
EOG 没被剔除出平均参考 步骤 13 未设 ref_channels='REST' 且未把 EOG 设成 eog 重新执行本步骤
ICA 拆出来的眼电成分不干净 EOG 被标为 eeg 参与了 ICA 拟合 重设通道类型并从步骤 16 重跑 ICA
后续 find_events 找不到事件 STIM 通道被误设为 misc 确保存在 stim 类型通道

8. 官方来源

资源类型 链接
API https://mne.tools/stable/generated/mne.io.Raw.html#mne.io.Raw.set_channel_types
通道类型常量 https://mne.tools/stable/python_reference.html
教程:通道类型 https://mne.tools/stable/auto_tutorials/intro/plot_30_info.html

9. 学术引用

无需单独引用。本步骤的正确性已被 MNE 官方教程默认流程包含。