You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python WFDB库读取UCDDB数据库.rec文件报错:缺少.hea文件

解决UCDDB数据库EEG信号读取问题

问题原因

你用wfdb.rdrecord()报错,是因为该数据库的.rec文件并非标准WFDB格式——标准WFDB记录必须配套.hea头文件,但UCDDB的.rec是和EDF文件绑定的原始数据文件,无法被rdrecord()直接识别。

解决方案

以下提供两种可行的读取方式:

方法1:直接读取EDF文件(推荐)

UCDDB每个记录都有对应的.edf文件,WFDB原生支持EDF格式,无需额外头文件:

# 读取本地EDF文件(假设文件存储在/content目录下)
record = wfdb.rdrecord('/content/ucddb002', format='edf')

# 提取EEG信号数据(先通过record.sig_name确认EEG通道名称)
eeg_channel_indices = [i for i, name in enumerate(record.sig_name) if 'EEG' in name]
eeg_data = record.p_signal[:, eeg_channel_indices]
  • 执行后record对象会包含所有信号元数据(采样率、通道名称等)和原始信号矩阵p_signal
  • 可通过record.sig_name查看全通道列表,过滤出带"EEG"标识的通道即可提取目标数据

方法2:手动生成.hea文件读取.rec

如果必须读取.rec文件,需要借助数据库提供的.txt文件生成对应的.hea头文件:

  1. 打开ucddb002.txt,提取关键信息:
    • 信号通道总数、采样率(UCDDB统一为250Hz)
    • 每个通道的名称、物理单位、增益参数等
  2. 在.rec同目录下创建ucddb002.hea文件,写入符合WFDB规范的内容(示例):
    ucddb002 8 250 1000000
    EEG1 0 1 0 0 0 EEG1
    EEG2 0 1 0 0 0 EEG2
    ECG 0 1 0 0 0 ECG
    ... # 按txt文件中的通道顺序依次补充
    
    • 第一行格式:[记录名] [通道数] [采样率] [总采样点数]
    • 后续每行格式:[通道名] [增益] [偏移] [采样位数] [基准值] [单位] [注释]
  3. 执行读取代码:
    record = wfdb.rdrecord('/content/ucddb002')
    eeg_data = record.p_signal[:, [0,1]] # 假设前两个通道为EEG信号
    

注意事项

  • UCDDB的.txt文件包含了记录的完整通道详情,生成.hea时必须保证信息与实际通道一致
  • 优先选择EDF读取方式,可避免手动编写头文件的繁琐和出错概率

内容的提问来源于stack exchange,提问作者Daniel Dantas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:33:15