PsychoPy 刺激和掩模之间的不精确同步

问题描述 投票:0回答:1

我正在设计一个实验,在每个试验循环中,从文件夹中的一组约 200 张照片(每张约 140kb)中随机抽取一个 ImageStim。 ImageStim 将从 0.0 本地试用时间开始,持续 150 毫秒。在+0.1(100ms)本地试验时间,绘制一个ImageMask来覆盖ImageStim并持续200ms。我们只用了一张照片作为面具。结果将是持续时间为 100 毫秒的 ImageStim 和具有相同持续时间的 ImageMask。

试用后,我注意到一些奇怪的同步问题,在少量试验中,ImageStim 似乎持续时间很短,而我的眼睛无法很好地感知它们。所以我计算了ImageStim持续时间(Mask onset - Stim onset)等,但意外地发现我们的ImageStim在所有试验中平均仅出现约75ms。 StimDuration & StimOnset

我还根据之前没有 ImageMask 的实验版本计算了刺激持续时间,发现它们非常准确。

我意识到这是由于每次试验开始时 ImageStim 启动有大约 25 毫秒的延迟,可能主要是因为从 200 张图像中随机选择一张图像来呈现所花费的时间。PsychoPy 的默认计时系统也只允许我设置相对于试验开始时间的 ImageMask 起始时间,因此它没有考虑 ImageStim 的实际起始时间。

我最终编写了自定义代码,将 ImageMask 的启动时间设置为在 ImageStim 之后正好 100 毫秒,但现在 ImageMask 的启动时间有延迟,因此 ImageStim 的平均持续时间约为 113 毫秒(SD = 0.3)。

我想知道是否有其他人正在/已经在 PsychoPy 上做过类似的实验面临这个问题,是否有其他方法可以解决它,或者您是否知道有任何文章报告实际刺激持续时间与目标持续时间不同他们的方法部分。我发誓我不久前看到了几篇文章,谁这样做了,但现在我很难找到它们。

python timing psychopy
1个回答
0
投票

作为一般性评论 - PsychoPy 在 https://discourse.psychopy.org 有一个专门的同行支持论坛,并且成员对系统有更直接的了解。堆栈溢出更适合“一般”编程问题,而不是特定领域的问题

也就是说,答案是,是的,如果每次试验都加载图像,您的刺激可能会由于从磁盘加载图像的时间而开始较晚,因此您需要仔细考虑何时加载图像。

PsychoPy 支持一种处理此问题的方法,允许您在静态组件中的特定时间加载刺激(在这段时间内您知道屏幕不会像试验间间隔那样发生变化,因此 PsychoPy 可以并执行其他任务而不会错过刺激更新)。 https://www.psychopy.org/builder/components/static.html

如果您在试验之间没有任何空白期,其他解决方案是:

  • 将刺激设置为固定的持续时间而不是固定的结束时间(因此PsychoPy将考虑实际的开始时间)。启动将延迟加载图像所需的时间,但会“持续”正确的时间。然后将掩模刺激设置为以 stim.status==FINISHED 的条件开始,以便它也在刺激后的正确时间开始
    提前预加载所有图像(但这需要一个代码片段,并且只有当您知道它们都适合您的显卡内存时才应该这样做)
© www.soinside.com 2019 - 2024. All rights reserved.