【问题标题】:Pyedflib error reading signalPyedflib 错误读取信号
【发布时间】:2017-09-26 16:48:55
【问题描述】:

我有一组包含 EEG 信号数据的 EDF 文件。我正在使用pyedflib 访问文件,但是我经常难以从某些文件中读取信号。基本上,当我尝试读取信号值时,有许多文件会得到全为 0 的数组。给定:

def get_sig(fname):
  import pyedflib
  f=pyedflib.EdfReader(fname)
  file_dur=f.getFileDuration()
  fs=int(inFile.getSignalHeader(0)['sample_rate'])
  chan_names=f.getSignalLabels()
  #note... channel names and file duration are captured correctly

  sig=f.readSignal(4)
  return sig

这将返回一个长度为 'file_dur' * 'fs' 的数组,但结果是一个全为 0 的数组并显示以下警告:

read -1, less than 8965120 requested!!!

有没有人知道什么会导致这样的问题?不幸的是,我不能分享任何数据,因为它是 PHI,但如果有任何其他信息可能会有所帮助,请尽管询问。

一些额外的注意事项:

  1. 我还尝试了sig=f.readSignal(4,start=0,n=100) 以确保文件开头或任何类似的东西都没有问题,它返回一个长度为 100 的全 0 数组。
  2. 当我在 Matlab 中检查它们时,这些值是正确的(即非零)。
  3. 问题似乎是特定于文件的(有些处理正确,而其他处理不正确),但是除了实际信号值之外,我找不到文件之间的任何差异
  4. f.readSignal(4) 中使用的索引 4 在我的完整应用程序中没有硬编码,这只是为了演示目的(在我的示例文件中,4 对应于 EEG 通道 F4)。

谢谢!

附:我也将其添加到 pyedflib wiki。

【问题讨论】:

    标签: python signals signal-processing european-data-format


    【解决方案1】:

    如果使用相同的句柄,pyedflib 不会在文件之间进行清理。上面的代码可以正常运行,但是当作为驱动程序内部的循环实现时,我没有明确关闭 pyedflib 文件句柄。一旦我在每个文件后添加f.close(),它就可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多