Проект разделён на две независимые части: backend и frontend.
Backend полностью функционален без frontend. Все вычислительные эксперименты могут быть запущены через CLI с использованием конфигурационных файлов. Frontend служит исключительно для визуализации уже полученных результатов.
┌────────────────────────────────────────────────────────────────┐
│ BACKEND │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
│ │ C++ Core │->│ pyshanks │->│ Python Runner │ │
│ │ │ │ (bindings) │ │(запуск экспериментов)│ │
│ └──────────────┘ └──────────────┘ └──────────────────────┘ │
└────────────────────────────────────────────────────────────────┘
│
v
┌─────────────────────┐
│ Output │
│ JSON │
│ Parquet (optional) │
└─────────────────────┘
│
v
┌────────────────────────────────────┐
│ FRONTEND │
│ ┌──────────────────────────────┐ │
│ │ Vizr (PyQt6) │ │
│ │ Визуализация на Python │ │
│ └──────────────────────────────┘ │
| ---------------------------------- |
│ ┌──────────────┐ ┌────────────┐ │
│ │ Web │<─│ FastAPI │ │
│ │ (React) │ │ (REST) │ │
│ └──────────────┘ └────────────┘ │
└────────────────────────────────────┘
| Слой | Технология | Назначение |
|---|---|---|
| C++ Core | C++20, GMP, MPFR, Eigen3 | Вычислительное ядро |
| Bindings | pybind11 | Python/C++ interoperability |
| Runner | Python 3.13+ | Оркестрация экспериментов |
| Компонент | Технология | Назначение |
|---|---|---|
| Web UI | React 19, TypeScript | Веб-интерфейс |
| API | FastAPI | REST API для результатов |
| Vizr | PyQt6, PyQtGraph, Polars | Desktop визуализация |
Расположение: backend/core/include
Header-only библиотека, реализующая математические ряды, алгоритмы ускорения ряда, функционал зашумления ряда, функционал фильтрации (сглаживания) ряда.
Поддерживает вычисления в контексте разных типов данных (float, double, long double, arbitrary precision, и комплексные варианты).
Содержит единый реестр рядов и ускорений, значительно упрощая добавление новых.
Расположение: backend/bindings/
Тонкий слой связывания C++ и Python через pybind11, реализующий автоматическую обёртку всех добавленных рядов и методов ускорения, предоставлении прямого Python-интерфейса для взаимодействия с библиотекой.
Расположение: backend/runner/
Оркестрация вычислительных экспериментов. Считывает заданную конфигуацию экспериментов и выполняет их в параллельном режиме, сохраняя результаты в JSON/CSV.
Функционал:
Расположение: frontend/vizr/
Инструмент визуализации результатов Runner. Предоставляет интерактивный GUI на базе PyQt6. Позволяет фильтровать результаты, отображает ряды, их отклонения, события.
Расположение: frontend/client/
REST API для доступа к результатам экспериментовю
GET /api/results — запрос результатов с фильтрацией и сортировкойРасположение: frontend/web/
React TypeScript приложение для визуализации: