NextStatNextStat

Архитектура

NextStat следует принципам «чистой архитектуры»: вывод зависит от стабильных абстракций, а не от конкретных бэкендов. Высокоуровневая логика (MLE, профильное правдоподобие, проверки гипотез) отделена от вычислительного слоя (SIMD, CUDA, Metal).

Диаграмма слоёв

┌─────────────────────────────────────────────────────────────────┐
│                   ВЫСОКОУРОВНЕВАЯ ЛОГИКА                       │
│  ns-inference (MLE, профильное правдоподобие, проверки, ...)   │
│  - зависит от типов ядра и интерфейсов моделей                 │
└─────────────────────────┬──────────────────────────────────────┘
                          │ зависит от абстракций
┌─────────────────────────┴──────────────────────────────────────┐
│                      ns-core (interfaces)                      │
│  - error types, FitResult, traits                              │
└─────────────────────────┬──────────────────────────────────────┘
                          │ реализуется в
┌─────────────────────────┴──────────────────────────────────────┐
│                НИЗКОУРОВНЕВЫЕ РЕАЛИЗАЦИИ                        │
│  ns-translate    ns-compute    ns-ad    ns-root                │
│  (pyhf/ntuple)   (SIMD/GPU)   (AD)    (ROOT I/O)             │
└────────────────────────────────────────────────────────────────┘

Карта крейтов

КрейтНазначение
ns-coreКлючевые типы, трейты, обработка ошибок
ns-computeSIMD-ядра, Apple Accelerate, CUDA/Metal батч NLL+градиент
ns-adАвтоматическое дифференцирование (двойные числа / лента)
ns-rootНативный чтец ROOT-файлов (TH1, TTree, выражения, filler)
ns-translateТрансляторы форматов (pyhf JSON, HistFactory XML, ntuple builder)
ns-inferenceMLE, NUTS, CLs, GLM, time series, PK/NLME
ns-vizАртефакты визуализации (Brazil bands, профильные сканы)
ns-cliКомандная строка
ns-probРаспределения вероятностей

Вычислительные бэкенды

Крейт ns-computeабстрагирует несколько бэкендов. Слой вывода выбирает лучший доступный вариант во время выполнения:

  • CPU (по умолчанию) — SIMD автовекторизация + пул потоков Rayon
  • Apple Accelerate — vDSP/vForce для векторизованной математики на macOS
  • CUDA — ядра NVIDIA GPU для батч NLL + градиент (f64)
  • Metal — шейдеры Apple Silicon GPU (f32)

Python-привязки

Крейт ns-pybindings/ns-py/) экспортирует Rust API в Python через PyO3. Сборка выполняется через maturin. Имя Python-пакета:nextstat.