为什么把方法公开在这里
脑电分析的底层方法(预处理、ICA 去伪迹、ERP/频谱统计)本身是公开发表的学术方法,没有不能展示的技术秘密。真正需要判断的是"执行者是否做了正确且可复现的执行"——所以我们在页面中给出每步的参数与方法依据,便于研究团队交叉验证。公开性也意味着研究团队可以放心把数据交给我们处理:因为我们没有任何理由在标准方法上打折扣。
我们采用公开的脑电分析生态(MNE-Python 等),以下展示一套可复现的分析流程与关键参数, 供研究团队评估方法与交接质量。
脑电分析的底层方法(预处理、ICA 去伪迹、ERP/频谱统计)本身是公开发表的学术方法,没有不能展示的技术秘密。真正需要判断的是"执行者是否做了正确且可复现的执行"——所以我们在页面中给出每步的参数与方法依据,便于研究团队交叉验证。公开性也意味着研究团队可以放心把数据交给我们处理:因为我们没有任何理由在标准方法上打折扣。
上述参数不是"标准答案",而是默认起点;每个项目都按研究假设与数据形态在设计阶段书面确认,避免后期才发现的假设-方法不匹配。
下方为分析流程的关键片段(为方法示意,不代表穷尽所有细节):
import mne
# 1. 读取原始数据(EDF/BDF/CSV/BrainVision 等)
raw = mne.io.read_raw_edf("subject01.edf", preload=True)
# 2. 带通滤波(可含陷波)
raw.filter(0.1, 45., fir_design="firwin")
raw.notch_filter(50) # 中国电网 50 Hz
# 3. 坏信道检测与插值
raw.set_eeg_reference("average", projection=True)
missing = raw.copy().interpolate_bads()
raw.info["bads"] = bad_channels # 依据自动重检+人工复核
# 4. ICA 去伪迹(Extended Infomax / FastICA)
ica = mne.preprocessing.ICA(n_components=None, method="infomax").fit(raw)
eog_indices, _ = ica.find_bads_eog(raw, ch_name="Fp1")
ica.exclude = eog_indices
raw_clean = ica.apply(raw)
# 5. 分段与基线
epochs = mne.Epochs(raw_clean, events, event_id, tmin=-0.2, tmax=0.8,
baseline=(-0.2, 0))
epochs.drop_bad(reject=dict(eeg=120e-6))
# 6. ERP 平均与导出
evoked = epochs.average()
evoked.save("erp-ave.fif")
epochs.to_data_frame().to_csv("epochs.csv")
# 7. 频谱估计
psd = epochs.compute_psd(fmin=1, fmax=45)
psd.to_data_frame().to_csv("psd.csv", index=False)
完整工程版本在此基础上增加:跨被试并行、QC 汇总表、参数版本记录、报告自动生成。这些属于工程能力与规范化流程,而非需要保密的"私有方法"。
以下为交付时随数据附送的 QC 摘要示例,帮助研究团队理解我们的透明度标准(内容为示意):
【质控报告 - 样例 001】 数据量:32 通道 · 事件:oddball 目标/标准刺激
- 原始段数:4128 目标 + 20640 标准
- 剔除段:387(目标 9.4%,标准 6.8%),剔除原因:截断伪迹/超大瞬时值
- ICA:Extended-Infomax,共 32 个分量,剔除 3 个眼动/肌电分量
- 参考:平均参考;滤波:0.1-45Hz + 50Hz notch
- 数据质量:通道保持率 31/32(1 个低信噪通道处理后有插值修复)
- 输出:epochs.csv / psd.csv / erp-ave.fif / 本 QC 报告
每个定量决策(剔除阈值、分量数量、通道处理)在报告或脚本中都有出处,便于与委托方复核。
我们相信一套"清楚说明边界、不承诺不可能成果"的做事方式,正是高知研究团队愿意长期合作的基础。