shanks-university

Проект разделён на две независимые части: 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)   │  │
│  └──────────────┘  └────────────┘  │
└────────────────────────────────────┘

Технологический стэк

Backend

Слой Технология Назначение
C++ Core C++20, GMP, MPFR, Eigen3 Вычислительное ядро
Bindings pybind11 Python/C++ interoperability
Runner Python 3.13+ Оркестрация экспериментов

Frontend

Компонент Технология Назначение
Web UI React 19, TypeScript Веб-интерфейс
API FastAPI REST API для результатов
Vizr PyQt6, PyQtGraph, Polars Desktop визуализация

Компоненты системы

1. C++ вычислительное ядро

Расположение: backend/core/include

Header-only библиотека, реализующая математические ряды, алгоритмы ускорения ряда, функционал зашумления ряда, функционал фильтрации (сглаживания) ряда.

Поддерживает вычисления в контексте разных типов данных (float, double, long double, arbitrary precision, и комплексные варианты).

Содержит единый реестр рядов и ускорений, значительно упрощая добавление новых.

2. pyshanks (Python Bindings)

Расположение: backend/bindings/

Тонкий слой связывания C++ и Python через pybind11, реализующий автоматическую обёртку всех добавленных рядов и методов ускорения, предоставлении прямого Python-интерфейса для взаимодействия с библиотекой.

3. Python Runner (оркестратор, запуск экспериментов)

Расположение: backend/runner/

Оркестрация вычислительных экспериментов. Считывает заданную конфигуацию экспериментов и выполняет их в параллельном режиме, сохраняя результаты в JSON/CSV.

Функционал:

4. Vizr

Расположение: frontend/vizr/

Инструмент визуализации результатов Runner. Предоставляет интерактивный GUI на базе PyQt6. Позволяет фильтровать результаты, отображает ряды, их отклонения, события.

5. FastAPI Client

Расположение: frontend/client/

REST API для доступа к результатам экспериментовю

6. Web Frontend

Расположение: frontend/web/

React TypeScript приложение для визуализации: