2015-09-23 3 views
1

Я использую комбинацию кодера и построителя и, похоже, сталкивается с проблемой сбора времени отклика на нажатия клавиш. Я относительно незнакома с кодированием. Я все еще на стадии тестирования, и он еще не в финальной форме. Вкратце, эксперимент должен представить список слов в случайном порядке, участники получат инструкции для теста распознавания для слов, а затем снова просмотрят список, нажав y или n, увидев предыдущие слова.Эксперимент не записывает время реакции во время цикла

У меня есть 3 процедуры, в порядке: пробная версия, напоминание, инструкции и напоминания. У пробных и повторных паролей есть один цикл итераций вокруг них. studylista - это список, содержащий 4 слова, которые я ввел под вкладкой beginexperiment в кодере под пробной процедурой. Для 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 рутины У меня также есть ключевой элемент ответа в строитель наборе для хранения последнего ключа. Программа работает правильно в том смысле, что все отображается. Он не распечатывает файл csv, который включает ответы во время цикла выше, но он дает это в текстовом файле. Я также хочу иметь время отклика с начала слова, представленного в цикле for, когда участник нажимает клавишу, записанную в файле где-нибудь, и я полагаю, что timestamped позаботится. Благодарю.

Отредактировано, что бы добавить необходимую информацию о studylista.

ответ

2

Ваш существующий код нарушает цикл построения Builder: Builder в основном работает на непрерывном цикле, который обновляет стимулы, собирает нажатия клавиш и т. Д., Так же, как экран обновляется (например, 60 Гц). Таким образом, любой код, который вы помещаете в компонент кода (если он не выполняется в периоды в начале или в конце эксперимента), должен быть способен соответствовать одному периоду обновления экрана (например, < 16,7 мс). Таким образом, пауза в течение 5 секунд вызовет 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]) 
+0

Отлично! Получил это, чтобы работать для презентаций, посвященных изучению и распознаванию, и теперь дает мне время ответа. Благодарю. – Anchises