Я хочу автоматизировать тестирование моего эксперимента PsychoPy Builder, чтобы охватить сочетание правильных и неправильных ответов.
Я не могу найти ничего в справке по этой области.
У кого-нибудь есть предложения?
Я хочу автоматизировать тестирование моего эксперимента PsychoPy Builder, чтобы охватить сочетание правильных и неправильных ответов.
Я не могу найти ничего в справке по этой области.
У кого-нибудь есть предложения?
Существует встроенная, но плохо задокументированная поддержка тестирования с помощью клавиатуры, но не мыши:
Я думаю, это будет примерно так:
from psychopy.hardware.emulator import ResponseEmulator
simulated_responses = [(2.3, 'a'), (7.5, 'b')]
responder = ResponseEmulator(simulated_responses)
responder.start()
и вы получите клавишу «a» через 2,3 секунды после .start(), затем «b» через 7,5 секунд после .start(), точно так же, как если бы человек нажал эту клавишу в это время (возможно, не кадр -точно, но очень близко).
Для справки, немного покопавшись и поэкспериментировав, я пришел к следующему варианту, который подходил мне по всем параметрам. 1/добавьте блок кода для импорта следующих библиотек:
import win32api
import win32con
import time
Затем определите коды клавиш для ввода, который вы ищете, например:
VK_CODE = {
'enter':0x0D,
'esc':0x1B,
'spacebar':0x20,
'pageup':0x21,
'pagedown':0x22,
'end':0x23,
'home':0x24,
'left':0x25,
'up':0x26,
'right':0x27,
'down':0x28,
'0':0x30,
'1':0x31,
'2':0x32,
'3':0x33,
'4':0x34,
'5':0x35,
'6':0x36,
'7':0x37,
'8':0x38,
'9':0x39,
'a':0x41,
'b':0x42,
'c':0x43,
'd':0x44,
'e':0x45,
'f':0x46,
'g':0x47,
'h':0x48,
'i':0x49,
'j':0x4A,
'k':0x4B,
'l':0x4C,
'm':0x4D,
'n':0x4E,
'o':0x4F,
'p':0x50,
'q':0x51,
'r':0x52,
's':0x53,
't':0x54,
'u':0x55,
'v':0x56,
'w':0x57,
'x':0x58,
'y':0x59,
'z':0x5A,
'numpad_0':0x60,
'numpad_1':0x61,
'numpad_2':0x62,
'numpad_3':0x63,
'numpad_4':0x64,
'numpad_5':0x65,
'numpad_6':0x66,
'numpad_7':0x67,
'numpad_8':0x68,
'numpad_9':0x69,
'multiply':0x6A,
'add':0x6B,
'separator':0x6C,
'subtract':0x6D,
'decimal':0x6E,
'divide':0x6F,
'f1':0x70,
'f2':0x71,
'f3':0x72,
'f4':0x73,
'f5':0x74,
'f6':0x75,
'f7':0x76,
'f8':0x77,
'f9':0x78,
'f10':0x79,
'f11':0x7A,
'f12':0x7B
}
затем в блоке кода где-то в пробном цикле на вкладке «Начать процедуру» добавьте:
frame_counter = 0
и на вкладке "каждый кадр" добавьте это
frame_counter +=1
# usually at 60 frames per second , so below we wait for ~1 second
# 'autoResp' below is the column name in your excel results file
# you can change this to whatever you want
#
# *IMPORTANT* Below,
# -replace 'thisTrial' with the name you gave to your trial loop
# -'autoResp' is the column namein the csv file with the desired AUTOMATIC
# keyboard responses in
if frame_counter > 60:
this_resp = VK_CODE[thisTrial['autoResp']]
win32api.keybd_event( this_resp, 0, 0, 0)
time.sleep(.05) # wait a while before doing the key_up ...
win32api.keybd_event( this_resp,0 ,win32con.KEYEVENTF_KEYUP ,0)
frame_counter=0
См. комментарии к коду во фрагменте выше.
Затем это извлекает «автоматические» нажатия клавиш из вашего CSV-файла (в данном случае столбец с именем «autoResp». Nb вы можете использовать это для проверки правильных и неправильных сценариев).
unittest
? или что-то вроде Sikuli, которое напрямую взаимодействует с вашим графическим интерфейсом. - person meatspace   schedule 09.02.2015