2017-09-26 2 views
1

나는 EEG 신호 데이터가 들어있는 EDF 파일 모음을 가지고 있습니다. 파일에 액세스하려면 pyedflib을 사용하고 있지만 일부 파일에서 신호를 읽는 데 자주 문제가 있습니다. 기본적으로, 신호 값을 읽으려고 할 때 모든 0의 배열을 얻는 여러 파일이 있습니다. 을 감안할 때 :Pyedflib 오류 읽기 신호

read -1, less than 8965120 requested!!! 

는 사람이 어떤이 있습니까 : 이것은 그러나 결과는 모두 0의 배열이며, 다음과 같은 경고가 표시됩니다 * '의 FS' 'file_dur'길이의 배열을 돌려

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 

이런 문제가 발생할 수있는 아이디어는 무엇입니까? 유감스럽게도 PHI처럼 데이터를 공유 할 수는 없지만 도움이 될만한 추가 정보가 있으면 요청하십시오.

몇 가지 추가 사항 :

  1. 나는 또한 종류의 파일 또는 아무것도의 시작 부분에 문제가되지 않습니다 있는지 확인 sig=f.readSignal(4,start=0,n=100)을 시도하고 모든 0의 배열을 반환 길이 100입니다.
  2. Matlab에서 값을 검사 할 때 값이 정확합니다 (즉, 0이 아닌 값).
  3. 문제는 하드 코딩되지 않는 파일의 특정은 (다른 아니지만 일부가 올바르게 처리)하지만 난
  4. f.readSignal(4)에 사용되는 인덱스 (4)은 실제 신호 이외의 파일 간의 차이를 찾을 수있을 것으로 보인다 내 전체 응용 프로그램에서 이것은 데모 목적을위한 것입니다 (예제 파일에서 4는 EEG 채널 F4에 해당).

고마워요!

P. 나는 이것을 pyedflib 위키에 추가하고있다.

답변

1

같은 핸들을 사용하면 파일 사이에서 pyedflib이 정리되지 않습니다. 위의 코드는 잘 실행되지만 드라이버 프로그램 내부에서 루프로 구현 될 때 pyedflib 파일 핸들을 명시 적으로 닫지는 않았습니다. 일단 각 파일 이후에 f.close()을 추가하면 정상적으로 작동합니다.