我正在使用编码器和构建器的组合,似乎在收集按键响应时间方面存在问题。我对编码比较陌生。我还处于实验的测试阶段,还没有进入最终形式。简而言之,该实验应该以随机顺序呈现单词列表,参与者获得单词识别测试的指令,然后在按y或n时看到再次显示的列表以查看前面的单词。
我有3个例程,依次为:trial,recallinstructions和remwords。 Trial和Recallwords围绕它们进行一次迭代循环。 studylista是一个列表,其中包含我在试用程序下编码器的beginexperiment选项卡下输入的4个单词。对于开始例程选项卡中的重新调用词,我有编码器:
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)
对于相同的召回字例程,我在构建器集中也有一个用于存储最后一个密钥的密钥响应项。该程序在所有内容都显示的意义上正常工作。它不打印出包含上述for循环中的响应的csv文件,但它确实在文本文件中提供了这个。我还希望从for循环中出现的单词开始到参与者按下某个文件中记录的密钥的响应时间,我相信时间戳会照顾。感谢。
编辑添加有关studylista的请求信息。
答案 0 :(得分:2)
您现有的代码打破了构建器的绘制周期:构建器基本上以连续循环运行,以与屏幕刷新相同的速率(例如60 Hz)更新刺激,收集按键等。因此,您放入代码组件的任何代码(除非它在实验开始或结束时执行)必须能够适合单个屏幕刷新周期(例如,<16.7 ms)。因此暂停5秒将导致Builder出现各种问题。
此外,您在每次迭代时都会对列表进行重新洗牌,这意味着您可能会获得重复的单词显示/缺少某些单词。所以这应该只发生一次。您还在代码中收集按键,这将与图形键盘组件冲突,需要明确保存在数据中。
所以不要与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])