Brite, OctaMon, OxyMon, PortaLite
Представим, что Вы подготовили NIRS систему и уже подумали о протоколе измерений для вашего следующего эксперимента. У вас есть четкое представление об этом в своей голове: вы представили пациента с подсоединённым к нему NIRS и монитор, показывающий каждую из инструкций и стимулов в тот момент времени, который вам необходим. Метки времени для каждого события автоматически сохраняются, и после окончания сеанса вы готовы приступить к анализу данных… Звучит хорошо, правда? Насколько это просто? Оказывается, все очень прост! Вам всего лишь нужны правильные инструменты для анализа, поэтому комбинация программного обеспечения PsychoPy и Oxysoft для этого подходит идеально!
Что такое PsychoPy?
PsychoPy — это библиотека Python с открытым исходным кодом, специально разработанная для отображения стимулов в экспериментах в области нейронауки и психофизики. Она позволяет исследователю создавать и представлять слуховые и зрительные стимулы испытуемым, одновременно собирая их поведенческие реакции, а также мозговую активность или любую другую физиологическую активность. Основной интерес к использованию PsychoPy заключается в возможности генерировать стимулы в режиме реального времени. Стимулы могут быть не только обновлены и представлены объекту по кадрам без потери временной точности, но также могут быть изменены в режиме реального времени на основе реакции испытуемого пациента.
PsychoPy предлагает пользователю различные модули для настройки хода эксперимента, среди которых стоит упомянуть: визуальный модуль, с помощью которого можно создать одно или несколько окон для представления инструкций и визуальных стимулов; звуковой модуль для слуховых стимулов; и модуль событий, для сбора ответных реакций объекта посредством взаимодействия с мышью, клавиатурой или джойстика при реагировании на стимул
Среди многих преимуществ использования PsychoPy, безусловно, наиболее привлекательным является его точность по времени. Точность до миллисекунды может быть достигнута при условии, что эксперимент реализован на соответствующем прецизионном оборудовании. Дополнительную информацию о влиянии мониторов, драйверов, операционных систем, клавиатур и аудио можно найти в разделе «Вопросы синхронизации». Полагаясь на использование очень точных часов на центральном процессоре, доступ к портам быстрой связи и метод двойной буферизации для рендеринга, PyschoPy достигает очень точного механизма синхронизации, основанного на кадровой разверстке. Таким образом, пользователь может выбрать необходимый точно заданный момент, когда новый кадр обновится на мониторе, и сохранить его в точный момент времени.
Несмотря на то, что PsychoPy разработан на библиотеке Python, аналогичный набор инструментов под названием Psychtoolbox доступен для приложений Matlab и GNU Octave.
Пример генерации стимулов с использованием PsychoPy
Итак, возможно вы подумываете, как настроить PsychoPy в ходе эксперимента. Официальный сайт PsychoPy предлагает множество учебных примеров (tutorials), которые проведут вас по различным модулям и их функциям, позволяя реализовать экспериментальный дизайн таким образом, каким вы этого хотите использовать. В качестве примера мы выбрали простой демонстрационный пример. Более подробную информацию вы можете найти в https://www.psychopy.org/coder/tutorial1.html. В этом примере создается элемент окна, в котором будут отображаться визуальные стимулы. Стимулирующие и фиксирующие стимулы генерируются и отрисовываются, однако они будут отображаться только после момента обновления кадра с помощью команды flip (). Чтобы закончить наш эксперимент, мы должны дождаться, когда субъект нажмет любую клавишу и закроет окно. Вуаля!
Синхронизация событий PsychoPy при анализе данных NIRS: триггеры OxySoft
После окончания эксперимента с использованием PsychoPy, единственное, что нам осталось — это обработать данные с помощью OxySoft, программного обеспечения для записи и анализа. OxySoft позволяет добавлять временные метки для представленных стимулов и ответов подопытных пациентов. После того, как мы настроили Python для доступа к интерфейсу DCOM, мы можем легко отправить триггеры в OxySoft. Это позволяет нам синхронизировать события, происходящие в нашем эксперименте, с потоками данных, которые мы собираем. Это значительно упрощает последующий анализ данных.
Все, что нам нужно сделать в нашем скрипте, это лишь импортировать метод Dispatch из библиотеки Win32com Python [1], подключиться к OxySoft и создать COM-объект, который мы назовем «OxySoft». Как только это будет сделано, остается только выбрать временные отрезки нашего эксперимента, в которые мы хотим отправить триггеры. Для примера это могут быть отрезки начала и конца эксперимента. Для этого мы вызываем созданный нами объект OxySoft и далее используем метод WriteEvent с ключом события и дискрипшеном в качестве аргументов. Эти события при запуске эксперимента будут автоматически добавлены к нашим измерениям в OxySoft.
Наконец, как только ваш скрипт будет готов, запустить эксперимент будет так же просто, как отправить показания в OxySoft и выполнить запуск на консоли Python. Дальше PsychoPy и OxySoft позаботятся обо всем остальном!
[1] Чтобы установить метод, введите «pip install pywin32» или «pip install pypiwin32» в командном окне или в командной строке Anaconda. Если у вас разные версии Python, то вместо этого наберите команду «py -3.7 -m pip install pywin32» или «py -3.7 -m pip install pypiwin32» (или укажите свой номер версии).
Литература:
Peirce, Jonathan W. «Generating stimuli for neuroscience using PsychoPy.» Frontiers in neuroinformatics 2 (2009): 10.
Peirce, Jonathan. “Timing Issues and Synchronization.” PsychoPy. University of Nottingham. Accessed June 9, 2020. https://www.psychopy.org/index.html.