Психопия не получает все ответы
Я использую психопию для построения познавательной задачи. У меня есть 5 кругов на экране, и участник должен нажать на хороший круг. Мой код:
if mouse.isPressedIn(cercle_1):
continueRoutine = False
# save data if you like:
thisExp.addData('correct', 1)
thisExp.addData('RT', t)
elif mouse.isPressedIn(cercle_2):
# save data if you like:
thisExp.addData('correct', 0)
thisExp.addData('RT', t)
continueRoutine = True
elif mouse.isPressedIn(cercle_3):
# save data if you like:
thisExp.addData('correct', 0)
thisExp.addData('RT', t)
continueRoutine = True
elif mouse.isPressedIn(cercle_4):
# save data if you like:
thisExp.addData('correct', 0)
thisExp.addData('RT', t)
continueRoutine = True
elif mouse.isPressedIn(cercle_5):
# save data if you like:
thisExp.addData('correct', 0)
thisExp.addData('RT', t)
continueRoutine = True
Проблема в том, что мой файл данных содержит только время отклика (RT) и информацию о circle_1. Я понятия не имею, если участник попробовал другой круг, прежде чем нажать на круг_1.
Вопрос: Как я могу получить в моем файле csv информацию о том, сколько раз участник нажимал на кнопку мыши. Возможно, прежде чем нажать cercle_1, он нажал cercle_3. Прямо сейчас у меня есть только сколько времени, чтобы получить правильный ответ.
1 ответ
Похоже, вы хотите записать последовательность событий в суде. Это может быть трудно найти подходящую структуру данных, но в вашем случае я могу придумать два решения.
Запишите количество неправильных ответов
Есть столбец (например, n_wrong
) и подсчитайте количество ответов, не являющихся кружком_1. В начало рутины добавь
n_wrong = 0
Затем в каждом кадре добавьте:
if mouse.isPressedIn(cercle_1):
thisExp.addData('correct', 1)
thisExp.addData('RT', t)
continueRoutine = False
elif mouse.isPressedIn(cercle_2) or mouse.isPressedIn(cercle_3) or mouse.isPressedIn(cercle_4) or mouse.isPressedIn(cercle_5):
thisExp.addData('correct', 0)
thisExp.addData('RT', t)
n_wrong += 1 # One more error recorded!
# Now wait until the mouse release to prevent recording 60 wrong clicks per second!
while any(mouse.getPressed()):
pass
Затем под конец рутины добавьте:
thisExp.addData('n_wrong', n_wrong)
Запишите, какие круги были нажаты
Другой состоит в том, чтобы иметь столбцы для каждого круга и сдвигать их с "не нажатых" на "нажатые" при их нажатии. Тогда колонна cercle1
будет соответствовать тому, что вы в настоящее время называете correct
колонка. Итак под началом рутины:
# Mark all non-target cirlces as unpressed
thisExp.addData('cercle1', 0)
thisExp.addData('cercle2', 0)
thisExp.addData('cercle3', 0)
thisExp.addData('cercle4', 0)
thisExp.addData('cercle5', 0)
Затем под каждым кадром я бы сделал это:
if mouse.isPressedIn(cercle_1):
thisExp.addData('cercle1', 1)
continueRoutine = False
if mouse.isPressedIn(cercle_2):
thisExp.addData('cercle2', 1)
if mouse.isPressedIn(cercle_3):
thisExp.addData('cercle3', 1)
if mouse.isPressedIn(cercle_4):
thisExp.addData('cercle4', 1)
if mouse.isPressedIn(cercle_5):
thisExp.addData('cercle5', 1)
Последний подход может быть расширен за счет времени реакции путем добавления столбцов, называемых cercle1_rt
и т.д., но тогда вам также нужно сделать while any(mouse.getPressed()): pass
трюк, чтобы записать начало, а не только релиз.