Я пытаюсь провести эксперимент, в котором размер стимула может непрерывно (кадр за кадром) изменяться участником (например, нажатие/удержание клавиши ВВЕРХ увеличивает размер, клавиша ВНИЗ уменьшает размер) и подтверждается нажатием клавиши ВВОД- ключ. Я обнаружил, что использование Key.StateHandle() из pyglet полезно, и в основном мой код работает так, как предполагалось. Однако я обнаружил, что некоторые «испытания» пропускаются.
Вот мой код:
from psychopy import visual, core, event
from pyglet.window import key
win = visual.Window([1280,1024], fullscr=False, units='deg',monitor='testMonitor',winType='pyglet')
keyState=key.KeyStateHandler()
win.winHandle.push_handlers(keyState)
myCircle = visual.Circle(win,edges=128,radius=2.5,lineColor='black',fillColor='black',units='deg')
myCircle2 = visual.Circle(win,edges=128,radius=2.5,lineColor='black',fillColor='black',units='deg')
response=0
for i in range(5):
sizeIni=1.0
myCircle2.setRadius(sizeIni)
myCircle2.setPos([0.0, -10.0])
event.clearEvents()
response=0
while response <> 1:
response=None
if keyState[key.UP]:
sizeIni=sizeIni+0.03333
if sizeIni>=10.0:
sizeIni=10.0
myCircle2.setRadius(sizeIni)
response=0
elif keyState[key.DOWN]:
sizeIni=sizeIni-0.03333
if sizeIni<=1.0:
sizeIni=1.0
myCircle2.setRadius(sizeIni)
response=0
elif keyState[key.ENTER]:
size=sizeIni
print size
response=1
elif keyState[key.ESCAPE]:
core.quit()
size=sizeIni
myCircle.draw()
myCircle2.draw()
win.flip()
Эта процедура должна привести к 5 испытаниям, но некоторые испытания пропущены. Вот прототипный вывод:
1.36663
1.0 # this trial is skipped
1.6666
2.23321
1.0 # this trial is skipped
Там порядок пропущенных испытаний также является переменным. Я столкнулся с проблемой на двух разных компьютерах (Ubuntu/Windows 7). Есть ли в моем коде явные ошибки или есть совет, как закодировать эксперимент по-другому?