Как я могу прочитать файл edf.event с python?

У меня есть файл.edf, который я могу прочитать с помощью "pyedflib" с кодом, приведенным ниже. Код в основном берет файл.edf и преобразует его в массив numpy. Форма массива составляет 65*20000.

file = pyedflib.EdfReader(file_name)
n = file.signals_in_file
signal_labels = file.getSignalLabels()
sigbufs = np.zeros((n,file.getNSamples()[0]))
for i in np.arange(n):
    sigbufs[i,:]=file.readSignal(i)

return sigbufs

А также у меня есть файл.edf.event, который соответствует информации о файле.edf. Файл текстового содержимого приведен ниже.

"" "Xü ## временное разрешение: 160 мкс Длительность XüT0: 4.2 Длительность ZüT2: 4.1 Длительность ZüT0: 4.2 Длительность ZüT1: 4.1 Длительность ZüT0: 4.2 Длительность ZüT1: 4.1 Длительность ZüT0: 4.2 Длительность ZüT2: 4.1 Длительность ZüT0: 4.2 Длительность ZüT2: Продолжительность 4.1ZüT0: 4.2 Продолжительность ZüT1: 4.1 Продолжительность ZüT0: 4.2 Продолжительность ZüT1: 4.1 Продолжительность ZüT0: 4.2 Продолжительность ZüT2: Продолжительность 4.1ZüT0: 4.2 Продолжительность ZüT1: 4.1 Продолжительность ZüT0: 4.2 Продолжительность ZüT2: 4.1Z Продолжительность: 4.2 Длительность ZüT2: 4.1ZüT0 продолжительность: 4.2 ZüT1 продолжительность: 4.1ZüT0 продолжительность: 4.2 ZüT1 продолжительность: 4.1ZüT0 продолжительность: 4.2 ZüT2 продолжительность: 4.1ZüT0 продолжительность: 4.2 ZüT1 продолжительность: 4.1 "" "

T0, T1 и T2 являются типами экспериментов, и этот файл дает продолжительность экспериментов.

Моя цель состоит в том, чтобы извлечь эту информацию, чтобы использовать для вышеуказанных данных. Я могу сделать это с помощью некоторой техники регулярных выражений. Но так как для моих будущих реализаций имеется много данных, поиск шаблона действительно требует много времени.

Поэтому мой вопрос: есть ли какая-либо библиотека или инструмент, который может читать файл.edf.event?

Также, если вы хотите увидеть файлы.edf.event, вы можете проверить ссылку ниже.

https://www.physionet.org/pn4/eegmmidb/S001/

2 ответа

Я столкнулся с этой проблемой также. Оказывается, файлы edf.event принадлежат к типу файлов, который совместим только с определенным программным обеспечением Physionet. К счастью, вся информация аннотации из файла событий доступна в предоставляемых ими файлах edf. Чтобы извлечь аннотации, используйте этот бит кода, который будет печатать все аннотации файла edf в виде массивов:

file = pyedflib.EdfReader(file_name)  
annotations = file.readAnnotations()  
print(annotations)  

РЕДАКТИРОВАТЬ: Чтобы назначить аннотированные коды для данных в каждом файле для вашего конкретного набора данных (плюс удалить последнюю половину секунды из 0 значений), используйте следующий скрипт:

import urllib.request
import numpy as np
import pyedflib

timeArray = np.array([round(x,5) for x in np.arange(0,124.5,.00625)])
timeArray = timeArray.reshape(19920,1)
reader = pyedflib.EdfReader('your/path/here/S001R05.edf')
annotations = reader.readAnnotations()
intervals = np.append(annotations[0],[124.5])
codes = annotations[2]
codeArray = []     
counter = 1
for timeVal in timeArray:
    if timeVal == 124.5:
        break
    elif timeVal / intervals[counter] == 1.0:
        counter += 1

    codeArray.append(codes[counter - 1])

invertCodeArray = np.array(codeArray).reshape(19920,1)
numSignals = reader.signals_in_file
signal_labels = reader.getSignalLabels()
dataset = np.zeros((numSignals, reader.getNSamples()[0]))
for signal in np.arange(numSignals):
    dataset[signal, :] = reader.readSignal(signal)

dataset = dataset[:,:-80].transpose()
masterSet = np.concatenate((timeArray,invertCodeArray,dataset),axis=1)
      import wfdb

path='staffiii/data/'
#location of file on physionet server. This corresponds to STAFF III database

filename='001c'
#patient file name

sig, fields = wfdb.rdsamp(filename, pn_dir=path)

ann_ref = wfdb.rdann(filename,'event',pn_dir=path)

Используйте это в параметре передачи rdann как «событие» для чтения файлов *.event и «atr» для чтения файлов *.atr.

Другие вопросы по тегам