Смотрел я как-то софт доступный в центре приложений Ubuntu и наткнулся на штуку под названием «PsychoPy — программа для создания экспериментов по неврологии и эскпериментальной психологии». В строке поиска habrahabr ввёл «PsychoPy» и ничего интересного поиск мне не сказал. Решил погуглить и рассказать заодно сообществу о том, что же эта за штука.
Итак встречайте. PsychoPy.
PsyсhoPy — софт написанный на Python и использующий OpenGL для генерации различных раздражителей на ПК. Программа расчитана для создания экспериментов по неврологии и психологии. Пользователь может создавать различные визуальные и аудиальные раздражители(стимуляторы) и взаимодействовать с внешними устройствами (электроэнцефалография, MEG, image brain activity и прочими интересными девайсами ). Структура скриптов проста и понятна. PsychoPy также позволяет генерировать муви и последовательность изображений которые могут помочь в симуляции эскпериментов по неврологии.
Введение.
Большинство эскпериментов в современной неврологии не проходят без представления аудиальных или визуальных раздражителей, чтобы проследить активность ГМ/изучить влияние раздражителей и тд… Поэтому и был придуман PsychoPy дабы облегчить жизнь при проведении продобного рода эскпериментов. PsychoPy — это мощь языка Python и нескольких кросс-платформенных библиотек для Python. PsyhoPy полностью платформонезависимый и может быть использован на Windows, Mac OS X и Linux.
Особенности:
Язык моделирования — Python.
Hardware Accelerated Graphics (OpenGL)
Платформонезависиммый софт
Модульная структура (для примера стрка импортирует модули для визуальных раздражителей и событий от субъекта эскперимента):
from psychopy import visual, core, event
Встроенный редактор кода (PsychoPyIDE), поддерживающий code-completion, code-folding.
Раздражители:
PathStim — один из наиболее часто используемых. Используется для контроля виузального участка на экране. Может состоять из bitmap-данных, текстур, фотографий. Поддерживает alpha-маски. Ими можно манипулировать в режиме реального времени разными способами: вращать, сдвигать по фазе, менять число циклов и т. д. Ипсользуется для изучения влияния графической информации.
TextStim — текстовые раздражители(приказы, текстовая информация). Поддержка Unicode. Цвет, вращение.
Sound — аудиальные раздражители. Поддерживает файлы mpg, wav, задание звука с помощью ноты и октавы и т. д. Поддержка Stereo.
DotStim — шаблон случайных точек(aka Random Dot Kinematogram) — представляет собой массив точек или массив других раздражителей(например PathStim).
MovieStim — раздражитель видеоряд. Поддержка разных форматов (Mpeg, DivX, avi, Quicktime). Поддерживает трансформацию (вращение, растяжение и т. д.)
PsychoPy предоставляет простой и полный доступ к устройствам ввода/вывода через serial и parallel ports (включая USB serial/parallel emulators)
Ну и напоследок пример скрипта (проигрыватель видеоряда):
from psychopy import core, visual, event
from numpy import ceil
#устанавливаем окно для мувика
myWin=visual.Window((1000,1000), allowGUI=False)
#наш мувик
mov=visual.MovieStim(myWin, 'stimulus_movie.mp4', flipVert=False)
#выставляем fps
fps=60
#количество кадров
total_frames=ceil(fps*mov.duration)
#movie duration в секундах
print mov.duration
#высота ширина мувика
print mov.format.width, mov.format.height
#инициализация счётчика
t=0
#показываем первый кадр
mov.draw()
#бежим по всем кадрам
while t < total_frames:
#к следующему кадру
myWin.flip()
#показывае следующий кадр
mov.draw()
#инкремент счётчика
t=t+1
Полезные ссылки:
Официальный сайт
Generating stimuli for neurosince using PsychoPy by J.W.Peirce
PsyhoPy на Neural Wiki
Автор: modestguy