在PsychoPy中可变刺激持续时间但两种固定的ISI

时间:2014-06-05 15:27:18

标签: python psychopy

我是PsychoPy的新手,我正在使用Builder。我根本不熟悉Python编码。

我有持续时间可变的音频刺激。在每次试验中,我希望第二次刺激在第一次刺激结束后500ms或1500ms开始。有没有办法在Builder中执行此操作?如果我必须在Coder上做,我该怎么办?

非常感谢!

2 个答案:

答案 0 :(得分:3)

绝对。将500ms和1500ms视为另外两种不同的条件。这两个条件与不同的持续时间交叉。

在你的条件文件中,你有不同的持续时间(或者你当然可以使用随机函数),为每个持续时间添加两行,其中包含“soa”列(或任何你想要调用的列)两个值分别为500ms和1500ms。在构建器界面中,您可以选择呈现顺序是顺序的,在块内随机化还是在所有试验中完全随机化(不仅仅在块内)。此外,如果您不希望它平衡(例如20%1500毫秒和80%500毫秒),您只需添加适当的行数即可实现此平衡(5个中的1个是1500毫秒)。

几乎所有的演示都以这种方式处理试验,所以看一下Builder - >演示,点击循环,看看它是如何完成的。另外,请阅读relevant section of the online documentation并查看a video tutorial also incorporating it

答案 1 :(得分:1)

具体而言,当您在Builder中添加Sound组件时,您只需要在" Start(time)"中添加一个表达式。考虑到第一次声音刺激的持续时间和该试验的ISI的字段。

因此,如果您在条件文件中有一个ISI列,就像Jonas所建议的那样(让我们说它被称为" ISI")和第一个听觉刺激的声音组件(称为,比如," sound1"),然后你可以把它放在第二个声音刺激的开始字段中:

$ sound1.getDuration()+ ISI

$符号表示此行将被解释为Python代码表达式,而不是文字持续时间。

这假设sound1在试验的最开始时开始。如果它开始,比如1秒进入试验,那么只需在表达式中添加一个常量:

$ 1.0 + sound1.getDuration()+ ISI

您的ISI列应包含以秒为单位的值。如果您更喜欢毫秒,请执行以下操作:

$ sound1.getDuration()+ ISI / 1000.0