2017-09-26 166 views
1

我收集了包含EEG信號數據的EDF文件。我使用pyedflib來訪問這些文件,但是我經常很難從某些文件讀取信號。基本上,當我嘗試讀取信號值時,有許多文件可以獲得所有0的數組。鑑於:Pyedflib錯誤讀取信號

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 

這將返回長*「FS」的「file_dur」的數組,但結果是全0的數組,並顯示以下警告:

read -1, less than 8965120 requested!!! 

沒有人有任何想法可能會導致這樣的問題?不幸的是,我不能分享任何數據,因爲它是PHI,但是如果有任何其他信息可能會有所幫助,請問。

一對額外的注意事項:

  1. 我也試圖sig=f.readSignal(4,start=0,n=100),以確保它不與排序的文件或任何的開頭問題,它返回的全0數組長度爲100.
  2. 當我在Matlab中檢查它們時,這些值是正確的(即非零)。
  3. 這個問題似乎是文件中的特定(部分被正確地處理,而其它的是不),但是我不能找到比實際信號以外的文件之間的任何差異值
  4. f.readSignal(4)使用的索引4不硬編碼在我的完整應用程序中,這僅僅用於演示目的(在我的示例文件中,4對應於EEG通道F4)。

謝謝!

P.S.我也將其添加到pyedflib wiki中。

回答

1

如果使用相同的句柄,則pyedflib不會在文件之間清除。上面的代碼運行良好,但是當作爲驅動程序內部的循環實現時,我並沒有明確地關閉pyedflib文件句柄。一旦我添加f.close()後每個文件工作正常。