ICT: платформа для обработки данных ионосферного зондирования
Обзор идеи и устройства ICT — набора контейнеризованных сервисов, которые проводят данные GNSS от архивов RINEX до полного электронного содержания, полос когерентности, карт и аналитики, делая весь путь воспроизводимым.
Данные глобальных навигационных систем (GPS, ГЛОНАСС) несут в себе не только координаты, но и информацию о состоянии ионосферы — среды, через которую проходит сигнал. Извлечь эту информацию из сырых наблюдений и довести её до пригодного для анализа вида — задача из множества разнородных шагов: распаковка архивов, конвертация форматов, расчёт электронного содержания, статистика, визуализация. ICT собирает эти шаги в единую платформу и делает весь путь воспроизводимым.
Цель
Исторически такая обработка складывалась из отдельных утилит, скриптов и ручных операций, связанных между собой через графический интерфейс и промежуточные файлы. Это работает, но плохо масштабируется и тяжело повторяется: чтобы получить тот же результат через полгода, нужно вручную воспроизвести всю цепочку.
ICT решает именно эту задачу — превращает разрозненный набор инструментов в связанный конвейер, где каждый этап изолирован, контейнеризован и вызывается единообразно. Цель не в новом методе обработки, а в том, чтобы существующие методы стали рутинно воспроизводимыми: один и тот же вход всегда даёт один и тот же выход, а запуск любого шага сводится к нажатию кнопки или вызову API.
Из чего состоит платформа
ICT устроена как набор небольших сервисов, каждый из которых отвечает за свой участок пути данных.
- Извлечение TEC. Базовый слой переводит архивы RINEX в значения наклонного полного электронного содержания (TEC) по каждой паре «станция — спутник», сохраняя геометрию наблюдения. Это вход для всего остального.
- Абсолютное электронное содержание. Отдельный сервис запускает расчёт абсолютного вертикального TEC из подготовленных данных, организуя вход и выход по схеме «год / день / станция».
- Колоночное хранение. Конвертер переводит текстовые
.dat-файлы в формат Parquet и обратно, сохраняя при этом служебные заголовки в метаданных. Колоночный формат на порядок ускоряет последующие выборки и аналитику. - Аналитический backend. Сервис на DuckDB выполняет запросы прямо по Parquet-файлам без промежуточных преобразований: временные ряды TEC и полос когерентности, статистика со студентовскими доверительными интервалами, готовые графики и экспорт в JSON, CSV или XLSX.
- Построение карт. Прототип формирует анимационные карты вертикального TEC по сети станций с интерполяцией в точки пересечения с ионосферой и подложкой OpenStreetMap.
- Веб-оркестратор. Поверх всего этого работает веб-интерфейс, который запускает контейнеры-конвертеры, передаёт им параметры, в реальном времени стримит логи и ведёт журнал запусков: кто, что и с какими флагами запускал и с каким результатом.
- Внутренний слой доступа. Обратный прокси на nginx обеспечивает доступ к сервисам внутри частной сети по понятным именам.
Полоса когерентности — параметр, описывающий состояние широкополосного радиоканала, — вычисляется здесь из абсолютного TEC и проходит через те же механизмы запросов, статистики и графиков, что и остальные величины.
Технологический стек
Платформа построена на Python 3.12. Веб-сервисы используют FastAPI; интерфейс оркестратора сделан на HTMX с потоковой передачей логов через Server-Sent Events — это даёт реактивный UI без тяжёлого JavaScript-фреймворка и без шага сборки. Аналитика опирается на DuckDB поверх Parquet (PyArrow), графика — на matplotlib и Plotly. Хранение метаданных запусков — в SQLite через SQLAlchemy. Всё упаковано в Docker и оркеструется через Docker Compose; внешний слой — nginx. Для запуска унаследованных расчётных программ под Windows в Linux-контейнере используется Wine. Каждый сервис снабжён собственным набором тестов на pytest.
Выбор инструментов подчинён одной идее — простоте эксплуатации. Колоночный Parquet вместо реляционной СУБД для тяжёлых выборок, DuckDB без отдельного сервера, HTMX вместо SPA, SSE вместо WebSocket там, где нужен лишь односторонний поток: каждое решение убирает лишнюю движущуюся часть.
Связь с исследованиями
Идея платформы выросла из практической работы с ионосферными радиоканалами. Ранние версии подобной обработки строились вокруг автоматизации графических утилит и реляционной базы — подход рабочий, но хрупкий и плохо воспроизводимый. ICT можно рассматривать как современное переосмысление того же конвейера: те же физические величины — TEC и полоса когерентности — но получаемые через программные интерфейсы, контейнеры и колоночное хранение вместо управления чужим GUI.
Что дальше
Текущая ценность ICT — в том, что разрозненные шаги обработки стали единым, повторяемым процессом. Заложенная структура — изолированные сервисы с общими форматами данных — позволяет наращивать платформу по частям: добавлять новые конвертеры одной записью в реестр, расширять аналитику новыми метриками и подключать дополнительные источники данных, не переписывая остальное.
Теги
Другие обновления по проекту
ICT: от наклонного TEC к картам ионосферы — методика IonMaps
Как модуль IonMaps в ICT превращает parquet-выгрузку TEC-suite в региональные карты вертикального электронного содержания: восстановление VTEC из наклонного TEC, интерполяция (л...