将眼动追踪 .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 格式的主要内容,如果未能解决你的问题,请参考以下文章

瞳孔中心在实时眼动追踪中表现出色

需要眼动追踪,注视追踪方法

affdex SDK 可以用于眼动追踪吗? [关闭]

Pupil Labs 眼动追踪摄像头已设置,我的视频输入是不是倒置?

Javascript 中的多重凝视检测(眼动追踪)

网站运营中5个源于眼动追踪的启发