将眼动追踪 .edf 文件转换为 ASC/CSV 格式
Posted
技术标签:
【中文标题】将眼动追踪 .edf 文件转换为 ASC/CSV 格式【英文标题】:convert eye-tracking .edf file to ASC/CSV format 【发布时间】:2018-07-24 20:28:39 【问题描述】:我有一份 .edf 格式的跟踪数据记录 (SR-RESEARCH eyelink)。我想在 python 中将其转换为 ASC/CSV 格式。我有 GUI 应用程序,但我想以编程方式(在 Python 中)进行。 我找到了 pyEDFlib 包,但找不到如何将眼动追踪 .edf 文件转换为 .asc 或 .csv 的示例。
最好的方法是什么?
谢谢
【问题讨论】:
.edf 文件中的数据是什么格式的?是文本还是二进制? 除非您只是为了学习目的而这样做,否则您将花费大量时间重新发明***。只需使用 sr-research 的转换器程序,然后将您的 python 编程时间花在解析 asc 文件上,您可以更轻松地看到您在做什么。您仍然可以从您的 python 脚本中调用转换脚本。如果没有,这里是他们程序的链接:download.sr-support.com/dispdoc/page25.html @oren 你解决了吗? @Bentaye 我自己编写了一些解析器,应该足以满足我的需求,谢谢! pyEDFlib 适用于“欧洲数据格式”(脑电图数据文件)......您正在寻找“Eyelink 数据格式”(眼动追踪数据文件)。 pyEDFlib 不会帮助你。 【参考方案1】:如果我信任这里的页面: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
【讨论】:
EyeLink / SR Research EDF 文件与edfplus.info/specs/index.html 不兼容【参考方案2】:根据您的回答,我创建了这个 python3 脚本来将所有信号导出到多个 .csv 文件https://github.com/folkien/pyEdfToCsv
【讨论】:
@paszko 你能在自述文件中添加一些文档或示例吗? 添加示例到 repo。以上是关于将眼动追踪 .edf 文件转换为 ASC/CSV 格式的主要内容,如果未能解决你的问题,请参考以下文章