Название продукта: Программная система организации и проведения психофизиологических исследований «Аметист».
Область применения: исследовательские системы, анализ данных, проведение комплексных исследований с применением мультимодальных стимулов и устройств записи.
Назначение ПО - создание программно-аппаратных комплексов психологического тестирования для решения задач:
- обеспечения надежности деятельности персонала опасных объектов - диспетчеров, пилотов, машинистов, водителей;
- контроля психологической готовности специалистов экстремальных профессий (военнослужащих, сотрудников МЧС и т. п.) к выполнению служебных обязанностей;
- подбора кандидатов на замещение ответственных должностей, текущего контроля их отношения к выполнению обязанностей;
- предсменного контроля психологического состояния лиц, которым по служебной необходимости выдается оружие, другие средства повышенной опасности;
- оценки информации, сообщаемой свидетелями, потерпевшими, другими участниками событий.
Общая характеристика
«Аметист» — распределённая программная система, предназначенная для организации и проведения исследований с использованием различных стимулов (видео, текст, сенсомоторные и психологические тесты) и синхронной записи данных с нескольких устройств (взгляд, эмоции, голос, курсор и др.).
Система реализует полный цикл работы с данными: от проектирования исследований и сбора информации до обработки, синхронизации и анализа результатов.
Система поддерживает работу с аппаратными средствами:
- Телевизоры/мониторы (предъявление тестовых стимулов)
- Видеокамеры (считывание эмоций, траекторий движения глаз)
- Тепловизоры (регистрация мимических движений, температурных градиентов)
- Айтрекеры (параметры движения глаз)
- Полиграфические комплексы (параметры физиологических реакций)
- Клавиатуры, манипуляторы (параметры мелкой моторики, скорость реакций)
- Микрофоны (речевые параметры)
Система имеет встроенную универсальную систему синхронизации для работы со всем совместимым оборудованием
Архитектура проекта построена на взаимодействии трёх ключевых частей:
- Исследовательская часть
- Респондентская часть
- Серверная часть
Исследовательская часть
Веб-интерфейс, позволяющий:
- формировать конфигурации отдельных исследований или батарей исследований;
- направлять их на респондентскую часть для проведения;
- просматривать базу метаданных (через подписку на Redis), описывающую файлы в озере данных и скачивать их оттуда.
- просматривать и скачивать файлы из озера данных.
Дополнительный функционал:
конструкторы стимульного материала (сенсомоторные, ассоциативные, психологические тесты, видео).
Респондентская часть
Представлена двумя кластерами сервисов, оркестрируемыми системой «Система проведения»:
- Кластер предъявления — сервисы, отвечающие за демонстрацию стимулов (видео, текст, тесты различных типов).
- Кластер записи — сервисы, фиксирующие реакции и данные с устройств (эмоции, взгляд, голос и др.).
Система проведения принимает конфигурации исследований из исследовательской части, инициирует и синхронно запускает выбранные сервисы из обоих кластеров, обеспечивая синхронизацию предъявления и записи.
Серверная часть
Состоит из служебных сервисов, системы хранения и кластера воркеров.
Служебные сервисы:
- Сервис БД — взаимодействует с основной БД (PostgreSQL).
- Сервис «Распределитель» — сохраняет полученные от устройств файлы в озеро данных и делает запись в БД.
- Сервис «Смотритель» — отслеживает новые записи в БД (через Redis) и направляет данные на обработку воркерам.
- Система хранения:
- PostgreSQL (метаданные, реестры);
- Озеро данных реализовано через файловую систему (FS) на серверной части: файлы классифицируются по слоям: bronze (исходные файлы), silver (обработанные), gold (синхронизованные файлы по исследованию).
Кластер воркеров:
- Воркер курсора;
- Воркер эмоций;
- Воркер взгляда;
- Воркер голоса;
- Другие специализированные воркеры;
- Воркер-вычислитель (синхронизация, предобработка и комплексный анализ).
Принцип работы:
Во время проведения респондентская часть генерирует файлы/потоки с устройств → Распределитель сохраняет файлы в озере (bronze) и делает запись в БД.
Сервис БД публикует уведомление через Redis → Смотритель получает уведомление и отправляет бронзовые файлы соответствующим воркерам.
Воркеры обрабатывают raw-данные → записывают silver файлы обратно через Распределитель (сохранение в озере + запись в БД).
При появлении silver-файлов Смотритель инициирует воркер-вычислитель, который синхронизирует данные разных сервисов и формирует gold-файл для анализа.
Исследовательская часть подписывается на метаданные (через Redis) и отображает/позволяет скачивать файлы из bronze/silver/gold.
Технологический стек
- Язык программирования: Python 3.11
- Фреймворк для сервисов: FastAPI
- Фронтенд: JavaScript + React
- Базы данных: PostgreSQL
- Система подписки и уведомлений: Redis (pub/sub)
- Обработка: воркеры на Python; в некоторых воркерах используются нейронные сети и вычисления на CUDA (GPU) с соответствующими библиотеками— PyTorch / TensorFlow / CUDA-toolkit
- Хранение данных: озеро данных на файловой системе (FS)