Я новичок в python и psychopy, однако у меня есть большой опыт программирования и проектирования экспериментов (с использованием Matlab и EPrime). Я запускаю эксперимент RSVP (быстрая визуальная последовательная презентация) с отображением различных визуальных стимулов каждые X ms (X - экспериментальная переменная, может составлять от 100 мс до 1000 мс). Поскольку это физиологический эксперимент, мне нужно отправить триггеры по параллельному порту точно на начало стимула. Я тестирую синхронизацию между триггерами и визуальным началом с помощью осциллографа и фотодатчика. Однако, когда я отправляю свой триггер до или после win.flip(), даже с параметром waitBlanking = False окна, я все равно получаю разницу между началом стимулов и началом кода.Как отправить код на параллельный порт в точную синхронизацию с визуальным стимулом в Psychopy
Прикрепленный мой код:
im=[]
for pic in picnames:
im.append(visual.ImageStim(myWin,image=pic,pos=[0,0],autoLog=True))
myWin.flip() # to get to the next vertical blank
while tm < and t < len(codes):
im[tm].draw()
parallel.setData(codes[t]) # before
myWin.flip()
#parallel.setData(codes[t]) # after
ttime.append(myClock.getTime())
core.wait(0.01)
parallel.setData(0)
dur=(myClock.getTime()-ttime[t])*1000
while dur < stimDur-frameDurAvg+1:
dur=(myClock.getTime()-ttime[t])*1000
t=t+1
tm=tm+1
myWin.flip()
Как я могу синхронизировать мой стимул начало с триггером? Я не уверен, что это проблема с видеокартой (я использую экран LCD ACER с встроенной графической картой Intel). Большое спасибо,
Шани
ли вы установили фотодатчик в верхней части экрана и какие задержки вы видите? Фотодатчик в середине экрана часто дает задержку на стороне монитора 5-8 мс. –
Кстати, поскольку вопросы синхронизации важны, не контролируйте время, используя секунды и время. Используйте win.flip(), так как визуальное время дискретно заблокировано для кадров в любом случае. Таким образом, в течение 0,5 сек перерыв на мониторе 60 Гц, петля 0,5 * 60 раз по win.flip(). –
Привет, Йонас, я проверил фотодатчик в верхней части экрана, но также и в центре, это дает аналогичные задержки. Задержки, о которых я говорю, являются большими - больше, чем обновление экрана -20-40 мс. Что касается времени с использованием флип, так как у меня есть код между дисплеями (отправка триггеров, проверка ответов), я обнаружил, что использование только флип обычно приводит к одному дополнительному фрейму. Время, которое я получаю, если измерять внутри психопата (не используя осциллограф) при программировании, как я сделал выше (ttime [t] -ttime [t-1] идеально, потому что я жду один кадр меньше, затем выполняю свой код, а затем жду следующий флип. –