如何成对调用两个不同列表中的值,以指定Python中两个顺序刺激的参数?

时间:2018-12-04 16:14:02

标签: python psychopy

我对Pyhon相当陌生,因此如果这是一件非常简单或显而易见的事情,或者如果发现问题太长,我会向您道歉。

我正在尝试通过PsychoPy编写一个实验代码,其中在每个试验中,我都会在给定的持续时间内呈现两个连续的刺激,每个刺激之间均以“间隔刺激间隔”分隔。现在,为了指定持续时间,我使用了wait()函数,并且在单刺激试验中已经成功地做到了这一点,方法是从列表中调用值,但是,这次我正在使用每种刺激都有不同的列表:

FSTIMDUR = [0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2]
SSTIMDUR = [1.5, 2.25, 3.0, 3.75, 4.5, 5.25, 6]

也就是说,我要做的是使第一刺激出现的时间与FSTIMDUR列表的第一个元素相对应(0.5秒),然后允许ISI通过,然后显示第二个刺激的持续时间对应于SSTIMDUR列表的第一个元素(1.5秒),用于一个试验。在随后的试验中,我想以相同的方式呈现其余的刺激,依次按两个列表中的对来称呼每个刺激的持续时间(第二次试验为0.75和2.25,第三次试验为1.0和3.0,依此类推。

作为示例,下面的代码可以完成我想做的事情,但是这样做很不方便,并且要求我为每个持续时间组合写一个类似的位,因为它不依赖于从列表中调用值:

# TOTAL STIMULUS DURATION (2s, 0.5:1.5)

# draw the fixation stimulus
fixstim.draw()
fixonset = disp.flip()
wait(FIXTIME)
# draw the sample stimulus 1
probstim.draw()
probonset = disp.flip()
wait(0.5)
# allow for an ISI to pass
isi = disp.flip()
wait(ISI)
# draw the sample stimulus 2
probstim.draw()
probonset = disp.flip()
wait(1.5)

1 个答案:

答案 0 :(得分:2)

 for ftime, stime in zip(FSTIMDUR,SSTIMDUR):
    fixstim.draw()
    fixonset = disp.flip()
    wait(FIXTIME)
    # draw the sample stimulus 1
    probstim.draw()
    probonset = disp.flip()
    wait(ftime)
    # allow for an ISI to pass
    isi = disp.flip()
    wait(ISI)
    # draw the sample stimulus 2
    probstim.draw()
    probonset = disp.flip()
    wait(stime)

如果我正确解决了问题,这应该可以按您希望的方式工作。