预期应用p

基于 MNE-Python 库和 Python,开发一个提取 .edf 文件中波形数据并通过 NiDAQ 发出波形,从而模拟患者真实数据。

MNE-Python 库是个什么?

💡
Open-source Python package for exploring, visualizing, and analyzing human neurophysiological data: MEG, EEG, sEEG, ECoG, NIRS, and more. 用于探索、可视化和分析人类神经生理学数据的开源 Python 包:MEG、EEG、sEEG、ECoG、NIRS 等。

简单来说,MNE-Python 是一个处理、分析不同形式脑电数据的工具箱。
开源地址:MNE-Python(Github)

怎么用 MNE-Python 库?

  1. 导入 MNE-Pyhthon 库

  1. 读取 edf 数据

  1. 设置滤波器

  1. 读取该记录的采样频率

  1. 获取该记录的 EEG 数据

数据获取到了,然后呢?

按照正常来说,数据到这里就获取完毕了。 MNE 库也提供了较为全面的 Plot API,可以为解析出来的文件进行绘图。
但由于脑电设备采集的频率只有256Hz,导致使用 NiDAQ 产生信号时,数据点与数据点之间间隔较长,如果继续用 250Hz 采样频率的脑电采集设备进行采集,有可能不能对数据进行有效采集。
故需要对原始数据进行重采样,重采样涉及到的数据处理库是 Scipy 。
这里使用的API是 resample_poly ,它的使用方法与和 resample 的区别
重采样前,我们使用 savgol_filter 对数据进行降噪平滑处理
此时,重采样的频率也是需要讲究的,当 重采样频率 不能整除 原采样率,就可能会导致插值错误和频谱失真。所以重采样的频率需要是 256 的倍数,同时也要考虑数据重采样后,尖刺现象是否突出?是否需要降低重采样倍率?

数据有了,该产生了

使用公司内部的工具库 xNidaq ,控制 NiDAQ ,将上述数据转置后转换成 `dataframe` ,从而让 NiDAQ 按顺序产生对应通道的数据。

还有一些信息

  1. 本文观点局限于本人理解与应用范围的水平上,尤其是信号与处理部分,如有错漏,烦请指正。
  1. 该工具可以读取的数据格式有非常多种,详见这里
  1. 该工具对于生成功率谱密度、数据模拟、数据可视化等需求都有较为完整的 API
    1. notion image
  1. 该工具可以使用其提供的开源数据集,来自06年的一位患者的数据,数据属性详见此处
  1. savgol_filter 提供多种平滑方式,其实就是对所插的值的估计方法的不同,详见这里Ext 列是通过 Input 值估算出来的值。
    1. notion image
  1. 使用该库可能比较难以使用 Pyinstaller 对程序进行打包 Problem creating app with pyinstaller and mne 0.24 Pyinstaller issue while building the .exe of a script using MNE - 💬 Support & Discussions - MNE Forum
  1. 参考资料:MNE-Python处理脑电教程汇总 - 知乎 (zhihu.com)
STM23 SPI 基于 LL 的 DMA 使用随笔无法在其他模块调用 PyQt 的组件问题定位与解决
Loading...