Как сохранить время реакции на визуальный стимул в CSV-файл - PullRequest
1 голос
/ 26 марта 2019

Я ОЧЕНЬ новичок и неопытен в Python / кодировании в целом. Я создаю задачу Stroop в психопатии Python. Я создал функциональный код для представления визуальных стимулов, которые мне нужны, мне просто нужно разобраться, как сохранить время реакции участника на каждый из стимулов. Я попробовал какой-то код, который нашел в Интернете, и он дал мне время реакции относительно начала эксперимента, а не с точки зрения каждой презентации стимула (это то, что я хочу). Любая помощь в этом будет принята с благодарностью. Кроме того, мне также необходимо записать пробный номер, цвет текста, название цветного слова, цвет, на который участник ответил, и были ли они правильными или нет в файле csv. Любая помощь по этому вопросу выходит за рамки моего первоначального вопроса, но также ОЧЕНЬ полезна! :)

filename = 'stroop3data.csv'

f = open(filename, 'w')
csvfile = DictWriter(f, fieldnames = ['RT'])
csvfile.writeheader()

congruent_pairs = 15 * [('red', 'red'), ('blue', 'blue'), ('green',      'green'), ('yellow', 'yellow')]
incongruent_pairs = 5 * [('red', 'blue'), ('red', 'green'), ('red',   'yellow'), ('blue', 'red'), ('blue', 'green'), ('blue', 'yellow'), ('green', 'red'), ('green', 'blue'), ('green', 'yellow'), ('yellow', 'red'), ('yellow', 'blue'), ('yellow', 'green')]

pairs = congruent_pairs + incongruent_pairs



shuffle(congruent_pairs)
shuffle(incongruent_pairs)
shuffle(pairs)

answer_keys = {'f': 'red', 'g': 'blue', 'h': 'green', 'j': 'yellow'}

rts = []



win = visual.Window([1024, 768], fullscr = False, \
                allowGUI=True, units="pix", color = (-1, -1, -1))

stim = visual.TextStim(win)

instructionText = visual.TextStim(win, "Thank you for choosing to   participate in this experiment. You will be presented with different names of colours. In some trials the colour of the word will match the name of the colour, in some the colour of the word \
                              will be different to the name of the colour. Your task is to identify the colour of the word, ignoring the word itself. Coloured stickers on the keyboard in front of you correspond to the key you should press to indicate your response.\
                              \
                              \
                              PRESS 'ENTER' TO CONTINUE", color=(1,   1, 1))
instructionText.draw()

win.flip()

event.waitKeys(keyList=['return'])

readyText = visual.TextStim(win, "Ready?", color=(1, 1, 1))

readyText.draw()


win.flip()


event.waitKeys(keyList=['return'])



for pair in pairs:



    stim.text = pair[0]
    stim.color = pair[1]



    stim.draw()
    event.clearEvents()

    displaytime = win.flip()





    keys, rt = event.waitKeys(keyList=answer_keys.keys(), timeStamped=True)[0] 
    key, keytime = keys [0]
    rts.append(keytime - displaytime)




    score = answer_keys[key] == pair[1]#means that the correct answer corresponds to the colour of the word



    stim.text = 'CORRECT!' if score else 'INCORRECT'
    stim.text += '\nRT=%i ms' %(rt*1000)
    stim.draw()
    win.flip()
    event.waitKeys()

    csvfile.writerow({'RT': rts})

Я уже пытался изменить разные имена в разделе, где я сохраняю ключи и время реакции. Все комбинации, которые я пробовал, вызывают много разных ошибок ... например: 'объект с плавающей точкой не повторяемый', 'объект кортежа не повторяемый' - для строки 93 (время ключа - время отображения), недостаточно аргументов для строки выше этой и т. д. и т. д.

Я бы хотел, чтобы время реакции было сохранено в виде числа с плавающей запятой в секундах для моего CSV-файла.

...