как установить ориентацию стимула для каждой попытки в психопсии

Я довольно новичок в языке python и психотипе. Я практикую это, создавая фиктивные эксперименты. Здесь я пытаюсь провести эксперимент с байесовским мозгом. Участнику будут представлены невертикальные линии, в то время как от участников не ожидается ответа, только экспозиция. Затем для последнего испытания (оно остается на мониторе в течение более длительного периода времени для ответа) ожидается, что участник оценит, является ли последнее испытание вертикальной линией или нет? (после воздействия невертикальных линий я ожидаю увидеть изменение в восприятии вертикальности).

Тем не менее, есть так много вещей, которые я не мог узнать из Интернета. Я почти уверен, что вы, ребята, можете помочь мне легко.

Моя основная проблема; как настроить ориентацию линии? Я узнал о stim.ori, но не знаю, как использовать его на «линейных» стимулах. Ниже я прикрепил коды, которые я сделал до сих пор. Кроме того, я добавил несколько дополнительных вопросов с #.

Я старался быть ясным настолько, насколько мог. Извините за мой плохой английский. Благодарю вас!

from psychopy import visual, core, event #import some libraries from PsychoPy
import random

#create a window
mywin = visual.Window([800,600],monitor="testMonitor", units="deg")

#stimuli
lineo = visual.Line(mywin, start=(-5, -1), end=(-5, 1))
fixation = visual.GratingStim(mywin, size=0.2, pos=[0,0], color = 'black')

#draw the stimuli and update the window
n = 5 # trial number
i = 0
while i < n:
    #fixation
    fixation.draw()
    mywin.flip()
    presses = event.waitKeys(1)
    # stimulus
    orientationlist = [20,30,40,50,60] # I want to draw the orientation info from this list
    x = random.choice(orientationlist)
    lineo.ori((x)) #
    lineo.draw()
    mywin.flip()
    presses= event.waitKeys(2)
    i +=1
    if i == 5: # how do I change the number into the length of the trial; len(int(n) didnt work.
        lineo.draw()
        mywin.flip()
        presses = event.waitKeys(4)
    #quiting
    # I dont know how to command psychopy for quiting the
    # experiment when 'escape' is pressed.

#cleanup
mywin.close()
core.quit()

person Err    schedule 23.12.2015    source источник


Ответы (1)


Есть несколько вещей, которые вы хотели бы сделать по-другому. Я обновил ваш код и пометил изменения комментарием «ИЗМЕНИТЬ». Изменение ориентации стимула довольно часто встречается при психопсии, поэтому для Line это ничем не отличается от любого другого типа визуального стимула.

from psychopy import visual, core, event #import some libraries from PsychoPy
import random

#create a window
mywin = visual.Window([800,600],monitor="testMonitor", units="deg")

#stimuli
lineo = visual.Line(mywin, start=(-5, -1), end=(-5, 1))
fixation = visual.GratingStim(mywin, size=0.2, pos=[0,0], color = 'black')

orientationlist = [20,30,40,50,60] # CHANGED. No need to redefine on every iteration of the while-loop.
#draw the stimuli and update the window
n = 5 # trial number

for i in range(n):  # CHANGED. This is much neater in your case than a while loop. No need to "manually" increment i.
    #fixation
    fixation.draw()
    mywin.flip()
    event.waitKeys(1)  # CHANGED. No need to assign output to anything if it isn't used.
    # stimulus

    lineo.ori = random.choice(orientationlist)  # CHANGED. Alternative: lineo.setOri(random.choice(orientationlist)).
    lineo.draw()
    mywin.flip()
    event.waitKeys(2)

# At this point, all the stimuli have been shown. So no need to do an if-statement within the loop. The following code will run at the appropriate time
lineo.draw()
mywin.flip()
event.waitKeys(keyList=['escape'])  # CHANGED. Listen for escape, do not assign to variable
# CHANGED. No need to call core.quit() or myWin.close() here since python automatically cleans everything up on script end.
person Jonas Lindeløv    schedule 23.12.2015