Неспособность добавить переменную в психопии - PullRequest
4 голосов
/ 14 марта 2019

Я создаю вероятностную задачу обучения.У него есть фаза обучения, которую я сейчас готовлю, используя интерфейс разработчика с пользовательским кодом в PsychoPy.Фаза обучения включает не менее 60 испытаний в цикле, называемом practice.

. Помимо правильного ответа, который используется для обратной связи с участниками, существует три условия, по которым можно решить, является ли фаза обученияможно закончитьКак только критерии будут достигнуты, этап обучения будет прекращен.

Мне нужно добавить три переменные и вести подсчет баллов.Я создал 3 переменные (напоминающие переменную resp.corr), рассчитанные специально для трех условий.Код помещен в раздел «конец процедуры», поскольку в предыдущих разделах resp еще не был определен.

Завершение процедуры

if (resp.keys == letterA):
    resp1 = 1
else:
    resp1 = 0

if (resp.keys == letterC):
    resp2 = 1
else:
    resp2 = 0

if (resp.keys == letterE):
    resp3 = 1
else:
    resp3 = 0

Это работаетхорошо.Я добавил переменные resp1, resp2 и resp3 в вывод Excel.Я проверил, и все они рассчитаны правильно.

Так что я знаю, что мне нужно добавить эти переменные в список, и я использовал следующий код:

Завершить процедуру

resplist1.append(resp1)
resplist2.append(resp2)
resplist3.append(resp3)

Я также сохранил эти списки в выводе Excel, чтобы проверить, правильно ли они рассчитаны.Я использовал следующий код:

Завершить процедуру

practice.addData('resplist1', resplist1)

practice.addData('resplist2', resplist2)

practice.addData('resplist3', resplist3)

К сожалению, replist1, replist2 и replist3 не могут добавить список.Вместо этого значения resp1, resp2 и resp3 печатаются в [].Изображение внизу:

imageimage.png1635 × 655 34,1 КБ

Я также проверил, можно ли рассчитать сумму replist1, replist2 и replist3 и, как вы можете догадаться, это не сработало,Рассчитанные значения были в точности такими же, как resp1, resp2 и resp3.

Я не уверен, почему список не добавляется правильно, и я буду признателен за любую помощь!Я застрял в этой задаче слишком долго и отчаянно хочу, чтобы она была закончена.

https://i.stack.imgur.com/aXW60.png

1 Ответ

1 голос
/ 15 марта 2019

Вы не показываете, как инициализируете свои списки resplist1 и т. Д. Я предполагаю, что вы делаете это на вкладке «Начать процедуру». Это будет постоянно сбрасывать их так, чтобы они никогда не содержали более одного значения.

Если это так, переместите их инициализацию на вкладку «Начать эксперимент», чтобы не терять вновь добавленные значения при каждом испытании.

Если у вас есть список, который на самом деле содержит несколько элементов, самый простой способ выполнить для него вычисления - это преобразовать его в массив numpy (импортированный как np), который допускает векторизованные операции, например:

sum_1 = np.array(resplist1).sum()
...