Как я могу вызвать значения из двух разных списков, в парах, чтобы указать параметры двух последовательных стимулов в Python? - PullRequest
0 голосов
/ 04 декабря 2018

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

Я пытаюсьзакодируйте эксперимент через PsychoPy, в котором в каждом испытании я представляю два последовательных стимула для определенной продолжительности каждый, каждый из которых разделен интервалом между стимулами.Теперь, чтобы указать длительность, я использую функцию wait() и успешно делал это раньше, в испытаниях с одним стимулом, вызывая значения из списка, однако на этот раз я использую другойсписок для каждого стимула:

FSTIMDUR = [0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2]
SSTIMDUR = [1.5, 2.25, 3.0, 3.75, 4.5, 5.25, 6]

При этом я хочу сделать так, чтобы первый стимул появлялся на время, соответствующее первому элементу списка FSTIMDUR (то есть 0,5 секунды),затем разрешите прохождение ISI, а затем представьте второй стимул на время, соответствующее первому элементу списка SSTIMDUR (1,5 секунды), для одного испытания.В последующих испытаниях я хотел бы представить остальные стимулы таким же образом, называя длительность каждого из пар, приходящих из обоих списков в порядке (0,75 и 2,25 для второго испытания, 1,0 и 3,0 для третьего и так далее).

В качестве примера, здесь приведен фрагмент кода, который выполняет то, что я хочу, но делает это неудобным способом и требует, чтобы я записывал аналогичный бит для каждой комбинации длительностей, поскольку он не полагается на вызовзначения из списков:

# TOTAL STIMULUS DURATION (2s, 0.5:1.5)

# draw the fixation stimulus
fixstim.draw()
fixonset = disp.flip()
wait(FIXTIME)
# draw the sample stimulus 1
probstim.draw()
probonset = disp.flip()
wait(0.5)
# allow for an ISI to pass
isi = disp.flip()
wait(ISI)
# draw the sample stimulus 2
probstim.draw()
probonset = disp.flip()
wait(1.5)

1 Ответ

0 голосов
/ 04 декабря 2018
 for ftime, stime in zip(FSTIMDUR,SSTIMDUR):
    fixstim.draw()
    fixonset = disp.flip()
    wait(FIXTIME)
    # draw the sample stimulus 1
    probstim.draw()
    probonset = disp.flip()
    wait(ftime)
    # allow for an ISI to pass
    isi = disp.flip()
    wait(ISI)
    # draw the sample stimulus 2
    probstim.draw()
    probonset = disp.flip()
    wait(stime)

Это должно работать так, как вы хотите, если я правильно понял вашу проблему.

...