конвертировать файл .edf отслеживания глаз в формат ASC/CSV

У меня есть запись данных отслеживания в формате .edf (ссылка SR-RESEARCH). Я хочу преобразовать его в формат ASC/CSV в python. У меня есть приложение с графическим интерфейсом, но я хочу сделать это программно (на Python). Я нашел пакет pyEDFlib, но не смог найти пример того, как преобразовать файл .edf для отслеживания взгляда в .asc или .csv.

Как лучше всего это сделать?

Спасибо


person okuoub    schedule 14.02.2018    source источник
comment
в каком формате данные в файле .edf? это текст или бинарник?   -  person Bentaye    schedule 14.02.2018
comment
Если вы не делаете это исключительно в учебных целях, вы потратите много времени на изобретение велосипеда. Просто используйте программу-конвертер sr-research, а затем потратьте свое время на программирование на Python, разбирая файл asc, где вам будет легче увидеть, что вы делаете. Вы все еще можете вызвать скрипт преобразования из своего скрипта Python. Вот ссылка на их программу, если у вас ее нет: download.sr-support .com/dispdoc/page25.html   -  person brittAnderson    schedule 14.02.2018
comment
@oren Вам удалось разобраться?   -  person Bentaye    schedule 23.02.2018
comment
@Bentaye Я сам написал парсер, которого должно хватить для моих нужд, спасибо!   -  person okuoub    schedule 25.02.2018
comment
pyEDFlib предназначен для европейского формата данных (файлы данных электроэнцефалографии) ... вы ищете формат данных Eyelink (файлы данных отслеживания взгляда). pyEDFlib вам не поможет.   -  person S.A.    schedule 29.05.2020


Ответы (2)


Если я доверяю этой странице: http://pyedflib.readthedocs.io/en/latest , вы можете просмотреть все сигналы в файле следующим образом:

import pyedflib
import numpy as np

f = pyedflib.EdfReader("data/test_generator.edf")
n = f.signals_in_file
signal_labels = f.getSignalLabels()
sigbufs = np.zeros((n, f.getNSamples()[0]))
for i in np.arange(n):
    sigbufs[i, :] = f.readSignal(i)

Библиотека pyEDFlib просто считывает файл в объект EdfReader. Тогда вам просто нужно пройти и сделать строку для каждого.

Я предполагаю, что signal_labels (в приведенном выше коде) будет массивом со всеми метками, поэтому сделайте из них строку, разделенную запятыми.

signal_labels_row = ",".join(signal_labels)

Затем сделайте то же самое для каждого сигнала, 1 строка, разделенная запятой, для каждого

Затем просто запишите их в файл.

Я вижу, что они предоставляют пример того, как читать файл и извлекать все необходимые данные здесь https://github.com/holgern/pyedflib/blob/master/demo/readEDFFile.py

person Bentaye    schedule 14.02.2018
comment
EDF-файл EyeLink / SR Research несовместим с edfplus.info/specs/index.html - person Rots; 25.10.2019

Основываясь на ваших ответах, я создал этот скрипт python3 для экспорта всех сигналов в несколько файлов .csv https://github.com/folkien/pyEdfToCsv

person s.paszko    schedule 16.07.2020
comment
@paszko Можете ли вы добавить документацию или примеры в файл readme? - person okuoub; 04.08.2020
comment
Добавлен пример в репо. - person s.paszko; 04.08.2020