我对蟒蛇和科学实验装置都很陌生。我的实验设置包括,实验对象将显示一些视觉刺激,这是用Python编程的。当受试者观察这些视觉刺激时,他们的眼睛数据将被用眼追踪器(瞳孔实验室)记录下来。瞳孔实验室是一个开源平台,它还提供了使用TCP套接字将数据(即凝视或眼动)广播给服务器的便利。
现在我计划记录所有的数据,比如当某个特定的刺激被显示时,以及记录从服务器接收到的眼球运动的数据。问题是要同步这两件事,比如在特定的时间,一些“xyz”刺激被显示出来,我想记录在那个特定的时间眼睛数据到底是什么。
我正在用Python编写代码,到目前为止,有一个主程序显示了使用精神病学库刺激的情况。在那个主程序中有一个从服务器接收数据的线程。
我想知道如何同步这个任务。我对这样的任务并不熟悉,我也不知道在互联网上应该寻找什么。我将感谢你的帮助。
发布于 2016-05-22 17:32:39
从博士的角度来看,瞳孔实验室的眼睛跟踪事件有一个由计算机上的系统时钟设置的时间戳,相对于某个划时代的时间(1970年1月1日在unix系统上)。类似地,您可以在py筷子中找到事件的时间戳,这些时间戳将显示在您的实验日志中。
收集数据后,读取瞳孔数据并将其转换为numpy数组(pupil_time、pupil_x和pupil_y)。下一次加载您的pyschopy数据。pyschopy中的时间戳可能相对于实验开始时存储,在这种情况下,您必须将实验开始时间添加到刺激演示时间中(开始时间应该在存储的数据中的某个地方可用)。
给定pupil_time、pupil_x、pupil_y数组,您可以在实验期间绘制瞳孔运动图:
import matplotlib.pyplot as plt
import numpy as np
# time since stimulus presentation, in seconds
t = np.linspace(0, 4, 400)
# time since stimulus presentation, relative to pupil data time
abs_t = t + stimulus_presentation_timestamp
# plot interpolated eye position from pupil data
px, py = np.interp(abs_t, pupil_time, pupil_x), np.interp(abs_t, pupil_time, pupil_y)
plt.plot(px, py)
plt.show()
如果瞳孔实验室软件只记录每次扫视后的位置,则可能不想插值数据,然后使用searchsorted
在t时间之前找到最后记录的瞳孔位置可能更合适。
更新2016-05-23:使用t_abs内插眼位
https://stackoverflow.com/questions/37376444
复制相似问题