实验不记录循环过程中的反应时间

Experiment not recording reaction time during loop

我正在结合使用编码器和构建器,但似乎在收集按键响应时间方面遇到了问题。我对编码比较陌生。我仍处于实验的测试阶段,还没有达到最终形式。简而言之,该实验应该以随机顺序呈现一个单词列表,参与者获得对单词进行识别测试的说明,然后在按 y 或 n 再次查看呈现的列表时表示已经看过前面的单词。

我有 3 个例程,顺序为:试用、回忆说明和回忆单词。 Trial 和 Recallwords 有一个围绕它们的迭代循环。 studylista 是一个包含 4 个单词的列表,这些单词是我在试用例程下的编码器的 beginexperiment 选项卡下输入的。对于 begin routine 选项卡中的 recallwords,我在编码器中有:

    studylista = ['balls','dingy','bear','shoe'];    
    import random
    random.shuffle(studylista)
    studylista

    import time
    for i in studylista:
        text.setText(i)  # Prepare stim
        text.pos = (0, 0)
        text.draw()  # Draw to buffer
        win.flip()  # Display on monitor
        response = event.getKeys(timeStamped=True)
        time.sleep(5.0)

对于相同的 recallwords 例程,我在构建器集中也有一个键响应项来存储最后一个键。从显示所有内容的意义上来说,该程序可以正常工作。它不会打印出包含上述 for 循环期间的响应的 csv 文件,但它确实在文本文件中提供了响应。我还希望从 for 循环中出现的单词开始到参与者按下某个文件中某处记录的键的响应时间,我相信时间戳会处理。谢谢

编辑以添加有关 studylista 的请求信息。

您现有的代码打破了 Builder 的绘图周期:Builder 从根本上说是在一个连续的循环中运行,该循环以与屏幕刷新相同的速率(例如 60 Hz)更新刺激、收集按键等。因此,您放入代码组件中的任何代码(除非它在实验开始或结束期间执行)必须能够适应单个屏幕刷新周期(例如 < 16.7 毫秒)。所以暂停 5 秒会导致 Builder 出现各种问题。

此外,您在每次迭代时都会重新洗牌列表,这意味着您可能会丢失重复的单词 presentation/some 个单词。所以这应该只发生一次。你也在代码中收集按键,这会与图形键盘组件冲突,需要在数据中显式保存。

所以不要与 Builder 作对,让它为您完成大部分艰苦的工作。指定一个持续 5 秒的文本刺激,仅使用键盘组件收集响应(然后将自动保存在您的数据文件中)。

这样您就可以拥有这个极简代码:

# what iteration is this? (0 through 3)
wordNumber = yourLoopName.thisN # insert the actual loop name here

# only on the first iteration, shuffle the words:
if wordNumber == 0:
    shuffle(studylista) 

# on each iteration, get current word and update the stimulus with it:
yourTextStimulus.setText(studylista[wordNumber])