История изменений
Формат: Keep a Changelog · Semantic Versioning
[Не выпущено]
ICH M15 регуляторный репортинг
- Замороженные артефакты ICH M15 —
assessment-table,MAP,MAR,profile-diff,bundleс профилями юрисдикций (ich_core,ema_step5_2026,fda_draft_2024), ролями подписантов, интеграцией в validation-pack. - Публикуемые M15 отчёты — детерминистические
m15_report.md,m15_report.pdf,m15_report.docxиз замороженных артефактов.
Реклама и маркетинговая аналитика
- Нативное моделирование конверсий —
BetaBinomialModel,DelayCorrectionModel,hill(),adstock_geometric()+ Pythonnextstat.adsмодуль. Недельные Калман-билдеры (local_level_weekly,local_linear_trend_weekly). - Ads stable-surface gate — локальный/CI gate, бенчмарк-харнесс, удалённый раннер, документация релизного управления.
GVM (Глобальный вектор измерений)
- GVM stable-first верификационная линия — gate-скрипт, GitHub Actions воркфлоу, make-таргет для защиты скалярного GVM подмножества.
- GVM табличный + манифест ингресс —
combine-measurements-build-spec,build_measurement_combination_spec()для CSV/TSV/YAML/JSON входа. - GVM golden path runner —
make gvm-stable-first-exampleдля сквозного запуска. - Adoption playbook Route D — фикстуры внешней валидации для скалярных комбинаций измерений.
Калькулятор размера выборки A/B теста
- Калькулятор размера выборки — анализ мощности, секвенциальное тестирование (O'Brien-Fleming, Pocock), CUPED редукция дисперсии. Rust + WASM/JS + Python.
[0.9.9] — 2026-03-04
Добавлено
- TRExFitter template morphing (ghost samples) —
Type: GHOSTсTemplate: POI:value, полиномиальные сигнальные шаблоны через интерполяцию Лагранжа.
Исправлено
- Рендеринг viz PNG/PDF —
render_to_file()для PNG/PDF был сломан с 0.9.8: фичиpng/pdfне пробрасывались черезnative-renderfeature gate.
[0.9.8] — 2026-03-04
Добавлено
- ns-cli-py пакет — самостоятельный CLI Python-пакет
nextstatсpyproject.tomlи__main__.py. - nextstat-nlp remote workflow runner —
scripts/nlp/nlp_workflow_remote.shдля воспроизводимой верификации NLP-пайплайна на удалённых хостах. - Тесты fallback режимов nextstat-nlp — грациозная деградация при недоступности бэкенда.
Исправлено
- Детерминизм фарма-валидации — PQ-референсы стабилизированы для воспроизводимости.
- pip extras — добавлен отсутствующий
[all]extra, задокументированы все extras.
[0.9.7] — 2026-02-24
Фарма и популяционная ФК
- PD модели Python API —
emax_predict(),emax_nll(),sigmoid_emax_predict(),sigmoid_emax_nll(),idr_simulate(),idr_nll()доступны из Python. Emax и Sigmoid-Emax для доза-ответ, IDR типов I–IV для непрямого ответа. - FO / ITS / IMP методы оценки —
nlme_foce(method="fo"|"its"|"imp")добавляет First Order, Iterative Two-Stage и Importance Sampling MC-EM для всех ФК моделей (1/2/3-комп × IV/oral). IMP использует IS-EM с MAP + importance sampling, взвешенный Ω M-шаг, ESS/max-weight диагностику. - SAEM ковариационный шаг —
nlme_saem()теперь автоматически вычисляет R/S матрицы, сэндвич SE, RSE% и число обусловленности. - NPDE диагностика —
pk_npde()Python API для симуляционных нормализованных ошибок предсказания. Возвращает per-observation NPDE/PD, сводную статистику, тест Шапиро–Уилка. - 3-компартментные ФК модели — IV болюс и оральная абсорбция с аналитическими градиентами. Мультидозовая суперпозиция через
DosingRegimen::conc_3cpt_iv()иconc_3cpt_oral()с разложением собственных значений. - 3-компартментный SAEM —
nlme_saem(model="3cpt_iv")иnlme_saem(model="3cpt_oral")для 6- и 7-параметрической популяционной ФК оценки. - Per-subject дозирование для FOCE/SAEM/VPC/GoF — все функции популяционной ФК теперь принимают
doses(вектор доз по субъектам) вместо единого скаляра. Python:doses=[4.0](broadcast) илиdoses=[4.0, 3.5, 5.0](per-subject). - FOCE
omega_fixed/diagonal_omega—nlme_foce(omega_fixed=[False, False, True])фиксирует отдельные случайные эффекты;diagonal_omega=Trueфорсирует диагональную Ω матрицу. - SAEM ковариатное моделирование —
nlme_saem(covariates=[...])принимает словари ковариат с power, exponential, proportional и categorical отношениями. - SAEM диагностика сходимости —
return_theta_trace=Trueсохраняет per-iteration θ трассу, z-оценки Гевеке и относительное изменение параметров. - Bootstrap NLME —
bootstrap_nlme()вычисляет непараметрический bootstrap SE и percentile/BCa доверительные интервалы для SAEM популяционных ФК параметров. - Демпфирование сигма в FOCE Phase 1 M-step — улучшена численная стабильность популяционной ФК оценки.
- Биоэквивалентность — TOST (средняя БЭ), reference-scaled (RSABE), анализ мощности и расчёт размера выборки.
- MAP оценка — Maximum A Posteriori с SE на основе гессиана.
- Монте-Карло симуляция клинических испытаний — движок симуляции с PTA (вероятность достижения целевой концентрации).
- Оптимизация дозы через PTA grid search — систематический подбор дозы по PTA целевым сеткам.
- ODE-based ФК модели — транзитные компартменты, элиминация Михаэлиса–Ментен и TMDD.
- Аллометрическое масштабирование для FOCE — аллометрические экспоненты по массе тела и ковариатные эффекты.
- SCM Python API —
nextstat.scm()для пошагового ковариатного моделирования (прямой отбор + обратная элиминация). Возвращает полный аудит-трейс с ΔOFV, p-значениями и коэффициентами. - CDISC .xpt ридер/райтер —
read_xpt()/write_xpt()для SDTM/ADaM датасетов FDA, pure Rust с IBM 370 конвертацией.xpt_to_nonmem()автодетектирует SDTM/ADaM колонки. - NONMEM parity whitepaper + бенчмарки — формальная валидация FOCE/FOCEI и SAEM против референсных значений NONMEM на Theophylline, Warfarin и Phase I IV bolus. SAEM восстанавливает все параметры в пределах 7% от референса.
- IQ/OQ/PQ протокол валидации v2 — 85 тест-кейсов по 11 OQ подсекциям. Соответствие 21 CFR Part 11 / EU Annex 11 / ICH E6(R3).
- Авто-раннер IQ/OQ/PQ —
python tests/pharma_validation/runner.pyавтовыполняет 84 тест-кейса (5 IQ, 54 OQ, 25 PQ). Интегрирован вrender_validation_pack.sh. - Фарма-туториалы — гайд по ФК моделированию, миграция с NONMEM, анализ выживаемости.
nextstat-nlp (GLiNER2 текст-в-статистику)
- nextstat-nlp 0.2.0 — GLiNER2-based плагин для извлечения структурированных данных из клинического текста. Три пайплайна: survival (
extract_survival_records), информативные априоры (extract_prior_candidates), режимы дозирования (extract_regimens). Три бэкенда: GLiNER2 Torch, GLiNER2 ONNX и heuristic (regex). Детерминированные парсеры с нормализацией единиц. Frozen dataclasses с SHA-256 хешами иProvenanceBundle. 57 golden-file тестов. - nextstat-nlp 0.2.1 — Добавлен опциональный
mlxбэкенд (Apple Silicon) через GLiNER2Swift (MLX/Metal). Пассртdevice=(Torch) иproviders=/num_threads=(ONNX Runtime). Бенчмарк-харнесс переиспользует один инстанс бэкенда.
EGARCH / GJR-GARCH
- EGARCH Python API —
nextstat.volatility.egarch()для EGARCH(1,1) MLE с условной дисперсией и сигмой. - GJR-GARCH Python API —
nextstat.volatility.gjr_garch()для GJR-GARCH(1,1) MLE с рычажным эффектом.
LAPS GPU-сэмплер
- Расширение GLM моделей LAPS — GPU-сэмплер теперь поддерживает
"glm_linear","glm_poisson","glm_negbin"и"glm_composed_logistic"помимо"glm_logistic". Полная поддержка CUDA (f64) и Metal (f32). Poisson/NegBin принимают опциональныйoffset. NegBin оценивает дисперсиюlog_alpha. ComposedGlm использует NCP для групповых случайных intercept. - 4-фазная настройка warmup LAPS — улучшенное расписание warmup для лучшей сходимости.
Улучшения NUTS
- Плотная метрика Pathfinder —
init_strategy="pathfinder"сmetric="dense"использует полную MLE ковариационную матрицу для инициализацииDenseCholeskyметрики. Fallback на диагональную при неудаче Cholesky. - Репортинг плотной метрики —
sample()теперь возвращаетmetric_type,mass_diagиinv_mass_matrixвsample_stats. - NUTS vs CmdStan бенчмарк — сравнение ESS/s, R-hat и частоты дивергенций на StdNormal 10D, Eight Schools и GLM Logistic.
Бенчмарк-сьюты
- Новые бенчмарк-сьюты — competing_risks, ode_pk, gamma_tweedie, ic_survival, lmm, ordinal, pd_models, pk_3cpt, garch_family.
- Полная перезапись CHANGELOG — полная история от 0.1.0 до 0.9.9.
- Канонические артефакты V100/EPYC/A100 — 3-платформенный аудит бенчмарков с воспроизводимыми снапшотами.
[0.9.6] — 2026-02-17
Добавлено
- Pure Rust движок визуализации (
ns-viz-render) — субмиллисекундная генерация SVG для всех 17 типов графиков (pulls, ranking, корреляционная матрица, profile scan, CLs curve, distributions, gammas, separation, summary, uncertainty, significance, contour, pie, yields, unfolding, morphing, injection). Заменяет зависимость от Python matplotlib. Вывод: SVG, PDF (svg2pdf), PNG (resvg). Встроенный шрифт Inter. Четыре темы:nextstat2026,atlas,cms,minimal. - Читатель конфигов Cabinetry — парсинг cabinetry YAML и конвертация в pyhf JSON workspace. CLI:
nextstat import cabinetry. - Туториал-ноутбук (
tutorials/nextstat_example.ipynb) — end-to-end HistFactory workflow: конструирование workspace, инспекция модели, MLE fit, pulls, ranking, корреляция, distributions, profile scan, CLs, темы и экспорт в SVG/PDF/PNG. - Унифицированное Python API — объединены варианты по типу модели и устройству в единые функции с runtime-диспатчем:
ranking(),hypotest()/hypotest_toys(),profile_scan(),fit_toys(),upper_limit(). Все принимаютdevice="cpu"|"cuda"|"metal". Старыеunbinned_*,*_gpu,*_batch_gpuудалены. - TypedDict возвращаемые типы — ~25 структурированных
TypedDictопределений вместо непрозрачныхDict[str, Any]. Автодополнение IDE работает для всех функций. profile_scan(return_curve=True)— объединяет бывшийprofile_curve()с массивами для графиков.upper_limit(method="root")— объединяет бывшийupper_limits_root()сmethod="bisect"|"root".- LAPS Metal backend — GPU-ускоренный MAMS-сэмплер на Apple Silicon (M1–M5) через Metal Shading Language. Встроенные модели (
StdNormal,EightSchools,NealFunnel,NealFunnelNcp,NealFunnelRiemannian,GlmLogistic) с f32 вычислениями, fused multi-step ядро и SIMD-group cooperative ядро для тяжёлых GLM. - LAPS оконная адаптация масс — warmup фазы 2+3 используют Stan-style удвоенные окна для оценки
inv_mass, улучшая сходимость. - LAPS Neal Funnel NCP — нецентрированная параметризация (
model="neal_funnel_ncp"). R-hat < 1.02, ESS/s > 40,000 на M5 GPU (4096 цепей). - LAPS римановский MAMS — экспериментальная модель
neal_funnel_riemannianс гибридной позиционно-зависимой метрикой Фишера. 19× улучшение ESS/s для x-измерений. - BCa доверительные интервалы — переиспользуемые bootstrap CI утилиты (
percentile+bca) с диагностикой. - Рендерер визуализаций —
nextstat viz renderдля прямого рендеринга JSON артефактов в SVG/PDF/PNG. - Конкурирующие риски — оценщик CIF Аалена–Йоханнсена, K-sample тест Грея, регрессия субдистрибуционных рисков Файна–Грея.
- EGARCH(1,1) и GJR-GARCH(1,1) — модели волатильности Нельсона (1991) и Глостена–Джаганнатана–Ранкла (1993) с MLE через L-BFGS-B.
- Групповое секвенциальное тестирование — границы О’Брайена–Флеминга и Покока, Лан–ДеМетс функции расходования альфа.
- Интервально-цензурированная Weibull AFT — модель ускоренного времени отказа с exact, right, left и interval цензурированием.
Исправлено
- Metal unbinned batch toy fitting — исправлен lockstep L-BFGS-B optimizer stall (замедление 80–100×). Также применён f32-подходящий tolerance floor и retry-with-jitter для Metal.
- Порядок параметров
panel_fe()— изменён на(y, x, entity_ids, p)для соответствия конвенции эконометрического модуля. - Arrow/Parquet
from_arrowсовместимость — исправлено чтениеUtf8/LargeUtf8иList<Float64>/LargeList<Float64>. - Робастность градиента NB GLM — защита от неконечных промежуточных значений в производной дисперсии.
- LAPS первый вызов ядра — исправлен баг CUDA ядра, где все цепи отвергались на первой итерации.
- LAPS data-aware инициализация — цепи теперь стартуют в ~2σ от типичного множества через
init_scale = L / (π√dim). - LAPS warmup cold-start collapse — исправлена адаптация шага из случайной инициализации. GLM logistic (n=200, p=6): 288s → 31s.
[0.9.5] — 2026-02-15
Исправлено
- Покрытие PyPI wheel —
pip install nextstatтеперь работает из коробки на всех основных платформах. Предсобранные wheels для Linux x86_64/aarch64, macOS arm64/x86_64, Windows x86_64 (Python 3.11–3.13). - Совместимость Linux x86_64 glibc — wheels теперь таргетируют manylinux_2_17 (glibc 2.17+) вместо manylinux_2_35, что исправляет установку на CentOS 7/8, RHEL 7+, Ubuntu 18.04+.
- Поддержка macOS Intel — добавлен таргет
x86_64-apple-darwinв матрицу релиза. Пользователям Intel Mac больше не нужна сборка из исходников. - Multi-interpreter wheel сборки — Linux wheels собираются внутри manylinux Docker-контейнера; macOS/Windows используют явный
setup-pythonс 3.11/3.12/3.13.
Добавлено
- HEP Full Workflow Tutorial — исчерпывающий туториал на 1200 строк: конструирование workspace, все типы модификаторов, MLE фит, CLs гипотезное тестирование, верхние лимиты (Brazil band), ранжирование NP, pulls, корреляционная матрица, профильные сканы, комбинация workspace, mass scans, GPU-ускорение, препроцессинг и автоматические отчёты.
- Детальные гайды по установке и быстрому старту — переписаны с пошаговыми инструкциями, ожидаемыми выводами, секциями устранения неполадок и флагами GPU-ускорения.
[0.9.4] — 2026-02-15
Нативный ROOT I/O
- LRU-кеш baskets — декомпрессированные payload baskets TTree кешируются per-
RootFileс LRU-вытеснением по объёму (256 MiB по умолчанию). Убирает повторную декомпрессию при последовательных чтениях ветки.RootFile::basket_cache()для статистики,RootFile::set_cache_config()для настройки. - Lazy branch reader —
RootFile::lazy_branch_reader()декомпрессирует только baskets, необходимые для запрошенных записей.read_f64_at(entry)затрагивает один basket;read_f64_range(start, end)— только пересекающиеся. - ChainedSlice — zero-copy конкатенация нескольких декомпрессированных payload через
Arc. O(log n) random access по несмежным сегментам. - Парсинг ROOT leaflist —
ns-rootтеперь парсит составные leaf-list ветки (несколько скаляров в одной записи).
Производительность ns-zstd
- Оптимизации hot-path энкодера — 20+ целевых улучшений pure-Rust Zstd-энкодера: ускорение FSE-переходов, упаковка бит последовательностей, снижение коллизий hash-chain через head-теги и u64-reject, сравнение common-prefix через u128, fast-path для depth-1, эвристика no-match skip.
zstd-shim— крейт прозрачного выбора бэкенда: нативныйlibzstdна десктопе для максимальной скорости, pure-Rustns-zstdна WASM и embedded.
Ускорение на GPU
- Многоканальные GPU batch toys (Metal + CUDA) — батч-фиттер тоев теперь поддерживает workspaces с несколькими каналами на обоих GPU-бэкендах.
- Unbinned CUDA multi-GPU batch toys (
--gpu-devices) —nextstat unbinned-fit-toysиnextstat unbinned-hypotest-toysмогут шардить хост-сэмплированные тои по нескольким CUDA-устройствам. - Unbinned CUDA device-resident shard orchestration (
--gpu-shards) — шардированное выполнение--gpu-sample-toysс round-robin распределением по устройствам. Эмуляция на одном GPU через--gpu-shards N. - Unbinned CUDA host-toy shard orchestration — CUDA toy workflows поддерживают шардированное выполнение host-тоев (
pipeline: cuda_host_sharded) с shard plan в метриках. - Unbinned CUDA sharded toy-path метрики/тесты — интеграционное покрытие для
--gpu-sample-toys --gpu-shardsс проверкой контрактовpipeline: cuda_device_shardedиdevice_shard_plan. - Metal
--gpu-sample-toys— device-resident сэмплирование тоев на Apple Silicon (ранее только CUDA). - Parquet observed data для unbinned
--gpu— unbinned GPU-путь теперь может загружать наблюдаемые данные напрямую из Parquet-файлов. - TensorRT execution provider для нейронных PDF —
--features neural-tensorrtвключает TensorRT EP с FP16-инференсом, кэшированием движков (~/.cache/nextstat/tensorrt/) и динамическими профилями оптимизации батча. Цепочка fallback: TensorRT → CUDA EP → CPU.FlowGpuConfigдля настройки TRT; конструкторFlowPdf::from_manifest_with_config();FlowPdf::gpu_ep_kind()для интроспекции. - Аналитические якобиан-градиенты для flow PDF — если манифест включает ONNX-модель
log_prob_grad,FlowPdf::log_prob_grad_batch()вычисляет точный ∂ log p / ∂ context за один forward pass вместо 2 × n_context конечно-разностных вычислений. Fused CUDA-ядроflow_nll_grad_reduceсчитает NLL + промежуточные градиенты за один запуск;GpuFlowSession::nll_grad_analytical()собирает полный градиент на CPU. - Multi-GPU батч-фиттинг тоев для flow PDF —
fit_flow_toys_batch_cuda()запускает lockstep L-BFGS-B по тысячам тоев через ядроflow_batch_nll_reduce(1 блок = 1 той).shard_flow_toys()равномерно распределяет тои по устройствам;fit_flow_toys_batch_multi_gpu()управляет всеми GPU и объединяет результаты. - CUDA EP f32 zero-copy NLL —
GpuFlowSession::nll_device_ptr_f32()принимает raw CUDA device pointer на float log-probs от ONNX Runtime CUDA EP, исключая host-to-device memcpy. До 57× быстрее f64 host-upload пути на типичных объёмах событий (~1K). Python:GpuFlowSession.nll_device_ptr_f32(ptr, params). - PF3.1-OPT2: Параллельный device-resident multi-GPU — пайплайн
cuda_device_shardedзапускает каждый шард в своём потоке с отдельным CUDA-контекстом черезstd::thread::scope. Валидировано на 4× A40: 2 GPU = 1.97× (почти линейно), 3 GPU = 2.9×. До фикса: 1.00×. - PF3.1 2× H100 бенчмарк-снапшот — полная unbinned toy матрица (10k/50k/100k) для CPU, 1-GPU/2-GPU host-toy и device-resident sharded путей.
- PF3.1 single-GPU снапшот (RTX 4000 Ada) — 10k/20k валидационные артефакты для worker-per-device оркестрации.
- CLI
--gpu cudaдля flow PDF (G2-R1) —nextstat unbinned-fit-toys --gpu cudaподдерживает flow/conditional_flow/dcr_surrogate PDF. CPU сэмплинг → CPU logp → CUDA NLL редукция через ядроflow_batch_nll_reduce→ lockstep L-BFGS-B. - Кэш сетки нормализации —
QuadratureGrid::auto()выбирает Gauss-Legendre (1–3D), тензорное произведение (4–5D) или Halton квази-Монте-Карло (6D+).NormalizationCacheисключает повторные вычисления при неизменённых параметрах.
Гибридное правдоподобие (Phase 4)
HybridLikelihood<A, B>— обобщённое комбинированное правдоподобие, суммирующее NLL двухLogDensityModelс общими параметрами. РеализуетLogDensityModel,PoiModelиFixedParamModel.SharedParameterMap— объединяет вектора параметров двух моделей по имени. Общие параметры получают пересечение границ.- CLI
nextstat hybrid-fit—--binned(pyhf/HS3 JSON) +--unbinned(YAML/JSON spec). MLE черезHybridLikelihood. WeightSummaryдиагностика —EventStore::weight_summary()возвращает ESS, sum/min/max/mean весов, n_zero.- HS3 unbinned расширение —
Hs3UnbinnedDistрасширяет HS3 v0.2 схему event-level каналами. - Fused single-pass CPU NLL ядро —
fused_gauss_exp_nllвычисляет per-event log-likelihood инлайн для Gaussian+Exponential топологии, устраняя промежуточные аллокации. Адаптивный параллелизм: последовательно для N < 8k, rayonpar_chunks(1024)для N ≥ 8k. - SIMD-векторизованное fused-ядро (
wide::f64x4) — 4 события за итерацию (AVX2 на x86, NEON на ARM). 4–12× ускорение над generic-путём на x86; 2–5× на ARM. ~770 M events/s NLL на x86. - Unbinned бенчмарки — Criterion бенчмарки: ~770 M events/s NLL на x86 (fused+SIMD); полный 5-параметровый fit за 637 µs при 10k событиях.
- Fused CrystalBall+Exponential ядро —
fused_cb_exp_nllрасширяет fused single-pass путь на CB+Exp топологию. Scalar event loop с rayon адаптивным параллелизмом; аналитические градиенты для 5 shape-параметров. 2.7–5.8× ускорение над generic на M5. - Unbinned fused-vs-generic бенчмарк —
UnbinnedModel::nll_generic()/grad_nll_generic()форсируют generic multi-pass путь для честного сравнения с дефолтным fused-путём.
Кросс-вертикальные статистические фичи
- Gamma GLM (
GammaRegressionModel) — гамма-распределение с log-связкой, общий параметр формы α. Аналитический NLL и градиент. Для страховых выплат, стоимости госпитализации, строго положительных непрерывных откликов. - Tweedie GLM (
TweedieRegressionModel) — составная Пуассон-Гамма со степеньюp ∈ (1, 2), log-связка. Приближение NLL через седловую точку (Dunn & Smyth 2005). Обрабатывает точные нули. Для агрегатных страховых требований, осадков, zero-inflated данных. - GEV-распределение (
GevModel) — обобщённое распределение экстремальных значений для блочных максимумов (Fréchet ξ>0, Gumbel ξ≈0, Weibull ξ<0). MLE через L-BFGS-B с аналитическим градиентом.return_level(T)для T-блочных уровней возврата. Для перестрахования, гидрологии, климатических экстремумов. - GPD-распределение (
GpdModel) — обобщённое Парето для пиков над порогом. MLE с аналитическим градиентом.quantile(p)для квантилей превышения (VaR/ES). Для хвостового риска в финансах, тарификации перестрахования. - Мета-анализ (
meta_fixed,meta_random) — фиксированные эффекты (inverse-variance) и случайные эффекты (DerSimonian–Laird). Гетерогенность: Q Кохрана, I², H², τ². Данные для forest plot с весами и ДИ по исследованиям. Для фармы, эпидемиологии, социальных наук.
WASM-песочница
- Компактный бинарник 454 KB — убран Arrow/Parquet из WASM-сборки, кастомный
[profile.release-wasm]сopt-level = "z",lto = "fat",strip = true, плюсwasm-opt -Oz. Уменьшение с 5.7 MB до 454 KB. - UI-полировка — стандартный хэдер сайта с логотипом, компактный layout на один экран, спиннер на Run,
⌘+Enter, автозагрузка примера, бейджи converged/failed в MLE Fit, fade-in анимации. - Управляемые примеры — 4 HistFactory + 3 GLM примера с описаниями. Dropdown фильтруется по активному табу — показываются только совместимые примеры.
- Автозапуск при смене таба — переключение между workspace-операциями автоматически запускает вычисление. Переход GLM ↔ workspace очищает редактор.
- GLM Regression таб —
run_glm()WASM endpoint: линейная, логистическая, пуассоновская регрессия через L-BFGS-B. - Mass Scan (Type B Brazil Band) — ATLAS/CMS exclusion plot: 95% CL верхний предел на μ vs позиция пика сигнала с ±1σ/±2σ полосами.
Сервер инференса (ns-server)
- Аутентификация по API-ключу —
--api-keys <file>или переменнаяNS_API_KEYS. Валидация Bearer-токена на всех эндпоинтах кромеGET /v1/health. - Rate limiting по IP —
--rate-limit <N>(запросы/сек/IP). Token-bucket с ленивой очисткой. POST /v1/unbinned/fit— эндпоинт unbinned MLE фита.POST /v1/nlme/fit— эндпоинт NLME / PK популяционного фита. Поддерживаетpk_1cptиnlme_1cpt. Политики LLOQ: ignore, replace_half, censored.- Асинхронная система задач —
POST /v1/jobs/submit,GET /v1/jobs/{id},DELETE /v1/jobs/{id}. In-memory хранилище с TTL-очисткой и токенами отмены. GET /v1/openapi.json— OpenAPI 3.1 спецификация для всех 16 эндпоинтов.
Анализ выживаемости (непараметрический)
- Оценка Каплана-Мейера —
nextstat.kaplan_meier(times, events, conf_level): непараметрическая кривая выживаемости с дисперсией Гринвуда, log-log ДИ, медиана выживаемости, таблица at-risk. - Лог-ранк тест —
nextstat.log_rank_test(times, events, groups): хи-квадрат тест Мантеля-Кокса для 2+ групп. - CLI:
nextstat survival km,nextstat survival log-rank-test.
Подписки / Отток (Churn)
- Синтетический SaaS churn датасет —
nextstat.churn_generate_data(): детерминированные когортные данные с правоцензурированным временем оттока, ковариатами плана/региона/использования и назначением воздействия. - Когортный retention —
nextstat.churn_retention(): стратифицированные KM-кривые по группам + лог-ранк сравнение. - Модель риска оттока —
nextstat.churn_risk_model(): hazard ratios Кокса с ДИ. - Каузальный uplift —
nextstat.churn_uplift(): AIPW-оценка эффекта вмешательства с анализом чувствительности Розенбаума. - CLI:
nextstat churn generate-data,nextstat churn retention,nextstat churn risk-model,nextstat churn uplift. - Диагностика (trust gate) —
nextstat.churn_diagnostics(): доля цензурирования по сегментам, баланс ковариат (SMD), перекрытие propensity, достаточность выборки. - Когортная матрица удержания —
nextstat.churn_cohort_matrix(): life-table по когортам с периодами, кумулятивное удержание. - Сравнение сегментов —
nextstat.churn_compare(): попарный лог-ранк + HR proxy + коррекция Бенджамини-Хохберга / Бонферрони. - Survival-native uplift —
nextstat.churn_uplift_survival(): RMST, IPW-взвешенный КМ, ΔS(t) по горизонтам. - Бутстрап hazard ratios —
nextstat.churn_bootstrap_hr(): параллельный бутстрап Cox PH с перцентильными ДИ. - Инъекция данных —
nextstat.churn_ingest(): валидация и очистка массивов клиентов, цензурирование по observation_end.
CLI
nextstat mass-scan— батч асимптотических CLs верхних пределов по множеству workspace (Type B Brazil Band).nextstat significance— significance открытия (p₀ и Z-значение).nextstat goodness-of-fit— saturated-model тест качества подгонки (χ²/ndof и p-value).nextstat combine— объединение нескольких pyhf JSON workspace в единый с автокорреляцией систематик.nextstat fit --asimov— слепой фит на Asimov (ожидаемых) данных.nextstat viz gammas— постфитовые γ параметры с prefit/postfit неопределённостями.nextstat viz summary— мульти-фит μ summary из нескольких fit-результатов.nextstat viz pie— круговая диаграмма состава выборок по каналам.nextstat viz separation— сравнение форм сигнала и фона с метрикой разделения.nextstat preprocess smooth— нативное Rust 353QH,twice сглаживание для HistoSys шаблонов.nextstat preprocess prune— нативная Rust обрезка незначительных систематик.
pyhf-паритет
Workspace::prune()— удаление каналов, сэмплов, модификаторов или measurement POI по имени.Workspace::rename()— переименование каналов, сэмплов, модификаторов.Workspace::sorted()— отсортированный workspace.Workspace::digest()— SHA-256 дайджест канонического workspace JSON.Workspace::combine()— объединение двух workspace с настраиваемой семантикой каналов.pyhf::simplemodels—uncorrelated_background()иcorrelated_background().pyhf::xml_export— экспорт pyhf workspace в HistFactory XML формат.- HistoSys interpolation code2 — квадратичная интерполяция с линейной экстраполяцией.
- Тест-статистики
t_μиt̃_μ— Eq. 8 и Eq. 11 arXiv:1007.1727. OptimizerStrategyпресеты — Default, MinuitLike, HighPrecision.docs/pyhf-parity.md— полная матрица совместимости.
Эконометрика и каузальный вывод (Phase 12)
- Panel fixed-effects регрессия — entity-demeaned OLS с Liang–Zeger cluster-robust SE.
panel_fe_fit()в Rust,nextstat.panel_fe()в Python. - Разность-в-разностях (DiD) — канонический 2×2 оценщик и multi-period event-study с leads/lags. Python:
nextstat.did(),nextstat.event_study(). - Инструментальные переменные / 2SLS — двухшаговый МНК с F-статистикой первого этапа, partial R², тест Стока–Його. Python:
nextstat.iv_2sls(). - AIPW (дважды робастный) — Augmented IPW для ATE. Influence-function SE, тримминг propensity score. Python:
nextstat.aipw_ate(). - Анализ чувствительности Розенбаума — границы Wilcoxon signed-rank для matched-pair чувствительности к ненаблюдаемым конфаундерам. Python:
nextstat.rosenbaum_bounds(). docs/references/econometrics.md— справочная документация с примерами кода, таблицей assumptions и limitations.
Стабилизация API
- ns-core ре-экспорты —
LogDensityModel,PoiModel,FixedParamModel,PreparedNll,PreparedModelRefиз корня крейта. - Deprecated
Modeltrait — заменён наLogDensityModel. Будет удалён в 1.0. - ns-inference ре-экспорты — добавлены
scan,scan_metal,NegativeBinomialRegressionModel,QualityGates,compute_diagnostics,quality_summaryв корень крейта. nextstat.unbinned.UnbinnedAnalysis— высокоуровневая обёртка надUnbinnedModel:.from_config(),.fit(),.scan(),.hypotest(),.hypotest_toys(),.ranking(),.summary().- Python
__all__— добавленыvolatility,UnbinnedModel,HybridModelи ещё 9 вnextstat.__all__.
Исправлено
- L-BFGS steepest-descent fallback — оптимизатор теперь корректно переключается на steepest descent, когда L-BFGS update не даёт направления спуска.
[0.9.0] — 2026-02-09
Мажорный релиз
Нейронная оценка плотности
- Flow PDF — ONNX-backed normalizing flow как unbinned PDF. Загружает предобученные потоки из
flow_manifest.json+ ONNX-модели. Поддерживает безусловные и условные потоки с мешающими параметрами как контекст. Спецификация YAML:type: flow/type: conditional_flow. Feature gate:--features neural. - DCR Surrogate — нейронный DCR (Direct Classifier Ratio) суррогат, заменяющий бинированный морфинг шаблонов. Drop-in замена для морфинг-гистограмм — гладкий, непрерывный, безбинный морфинг систематик по протоколу FAIR-HUC. Спецификация YAML:
type: dcr_surrogate. - Unbinned-спецификация YAML поддерживает типы PDF
flow,conditional_flowиdcr_surrogateс автоматическим feature gating. - Верификация нормировки — квадратура Гаусса–Лежандра (порядки 32–128) для проверки и коррекции нормировки нейронных PDF.
- Скрипты обучения — Python-скрипты для обучения потоков (zuko NSF + ONNX-экспорт), дистилляции DCR из шаблонов HistFactory и валидации (нормировка, PIT/KS, closure checks).
- Python-привязки FlowPdf / DcrSurrogate — классы
nextstat.FlowPdfиnextstat.DcrSurrogateвns-pyза--features neural. Вычисление ONNX-flow из Python:from_manifest(),log_prob_batch(),update_normalization(),validate_nominal_normalization().
Документация
- Справочник unbinned-спецификации —
docs/references/unbinned-spec.md: полный человекочитаемый справочник поnextstat_unbinned_spec_v0: все 13 типов PDF, yield-выражения, rate modifiers (NormSys + WeightSys), per-event систематики, нейронные PDF, ограничения GPU.
Ускорение на GPU
- CUDA (NVIDIA, f64) - fused-ядро NLL+градиент, покрывающее все 7 типов модификаторов HistFactory за один запуск. Lockstep batch-оптимизатор фитит тысячи тоев параллельно. Динамическая загрузка через cudarc: бинарник работает без установленной CUDA.
- Metal (Apple Silicon, f32) - то же fused-ядро на MSL. Unified memory без копирования. Паритет NLL относительно CPU f64: относительная разница 1.27e-6.
- Apple Accelerate - векторизованный NLL на macOS через vDSP/vForce. Оверхед <5% относительно наивного суммирования.
- GPU-resident toy pipeline (CUDA) —
--gpu-sample-toysтеперь хранит сгенерированные события на GPU, исключая round-trip D2H+H2D для буфераobs_flatмежду сэмплером и батч-фиттером. - Unbinned GPU WeightSys — модификатор
weightsysтеперь lowered в CUDA/Metal ядра (интерполяция code0/code4p). В YAML-спецификации:type: weightsys,param,lo,hi, опциональныйinterp_code. - CPU batch toys — Rayon-параллельный фит с переиспользованием tape по потокам и воспроизводимостью через seed.
- Reverse-mode tape — более быстрый градиент при меньшем числе аллокаций.
- CLI:
--gpu cuda,--gpu metal· Python:device="cuda",device="metal"
Дифференцируемый анализ (PyTorch)
- Zero-copy CUDA-ядро читает сигнальную гистограмму из PyTorch-тензора и записывает dNLL/dsignal напрямую в буфер градиентов, без device-host roundtrip.
DifferentiableSession: NLL + градиент по сигналу при фиксированных мешающих параметрах.ProfiledDifferentiableSession: профильные тестовые статистики с градиентами по теореме об огибающей. Это позволяет строить цепочку NN → сигнальная гистограмма → профильный CLs → loss.- Модуль
nextstat.torch:NextStatNLLFunction,NextStatProfiledQ0Function(autograd),NextStatLayer(nn.Module). profiled_zmu_loss()— обёртка Zμ loss (sqrt(qμ) с численной устойчивостью) для оптимизации силы сигнала.SignificanceLoss(model)— ML-friendly класс, оборачивающий профилированную −Z₀. Инициализируется один раз и вызывается на каждом батче:loss_fn(signal_hist).backward().SoftHistogram— дифференцируемое биннингование (Gaussian KDE / sigmoid): scores классификатора → soft histogram →SignificanceLoss.batch_profiled_q0_loss()— профилированный q₀ для батча сигнальных гистограмм (ensemble training).signal_jacobian(),signal_jacobian_numpy()— прямой ∂q₀/∂signal без autograd для моста SciPy и быстрого прунинга.as_tensor()— DLPack array-API bridge: JAX, CuPy, Arrow, NumPy →torch.Tensor.nextstat.mlops— извлечение метрик фита для W&B / MLflow / Neptune:metrics_dict(result),significance_metrics(z0),StepTimer.nextstat.interpret— ranking impact систематик как аналог feature importance:rank_impact(model),rank_impact_df(),plot_rank_impact().nextstat.tools— определения tools для LLM (OpenAI function calling, LangChain, MCP) для 7 операций: fit, hypotest, upper_limit, ranking, significance, scan, workspace_audit.nextstat.distill— генератор набора данных для обучения суррогатов.generate_dataset(model, n_samples=100k, method="sobol")производит кортежи (params, NLL, gradient). Экспорт в PyTorchTensorDataset,.npzили Parquet. Встроенныйtrain_mlp_surrogate()с loss Соболева.- Проверка сходимости фита: возвращает ошибку, если GPU profile fit не сошелся.
RL-окружение Gymnasium
nextstat.gym— опциональная обертка Gymnasium/Gym, которая рассматривает HistFactory workspace как RL/DOE-окружение.- Предлагаете обновления номинальных yields для сэмпла и получаете метрику NextStat как reward (NLL, q₀, Z₀, qμ, Zμ).
make_histfactory_env()- фабрика с настраиваемымиreward_metric,action_mode,action_scale.- Совместимо с
gymnasium(предпочтительно) и устаревшимgym.
Детерминированная валидация
- EvalMode - process-wide флаг: Parity (суммирование Кахана, один поток, bit-exact) против Fast (по умолчанию: SIMD/GPU, многопоточно).
- CLI:
--parity· Python:nextstat.set_eval_mode("parity") - 7-уровневый контракт допусков относительно pyhf (per-bin до ~1e-14 в худшем случае).
Нативный ROOT I/O
- TTree reader - mmap-доступ к файлу, нативная бинарная десериализация, распаковка baskets (zlib/LZ4/ZSTD) с rayon-параллельным извлечением. 9 типов leaf + jagged-ветки.
- Expression engine - компиляция в байткод и векторизация. Полная грамматика: арифметика, сравнения, булева логика, тернарный оператор, builtins. Динамическая адресация jagged (
jet_pt[idx]) следует конвенции ROOT/TTreeFormula. Python-обертка:nextstat.analysis.expr_eval. - Histogram filler - один проход с selection cuts, весами и произвольным биннингом.
- Unsplit vector branch decoding - best-effort декодирование веток
std::vector<T>без таблиц смещений. - ~8.5× faster чем uproot+numpy на полном конвейере.
Пайплайн Ntuple → Workspace
NtupleWorkspaceBuilder: ROOT ntuples → HistFactoryWorkspaceчерез fluent Rust API.- Модификаторы на уровне сэмпла: NormFactor, NormSys, WeightSys, TreeSys, HistoSys, StatError.
- Создает тот же struct
Workspace, что и путь pyhf JSON, без зависимости от ROOT C++.
Интероперабельность с TRExFitter
nextstat import trex-config— импортирует.configTRExFitter в pyhf JSON workspace.nextstat build-hists— запускает NTUP-пайплайн и пишетworkspace.json.- HIST mode — читает заранее собранные ROOT-гистограммы (
ReadFrom: HIST) вместе с NTUP. - Analysis Spec v0 (YAML + JSON Schema) —
nextstat run <spec.yaml>оркестрирует import/fit/scan/report. - Поддержка jagged-колонок и совместимость выражений в стиле TRExFitter.
Препроцессинг систематик
- Smoothing: 353QH,twice algorithm (ROOT
TH1::Smoothequivalent) + Gaussian kernel. - Pruning: shape, norm и overall прунинг с аудиторским следом.
nextstat preprocessCLI с декларативной YAML-конфигурацией и кешированием по хешу контента.
Расширения HistFactory
- HS3 v0.2 ingestion - нативная загрузка HS3 JSON workspace (ROOT 6.37+). Формат (pyhf или HS3) автоопределяется при загрузке.
- HS3 roundtrip export - экспорт
HistFactoryModelобратно в HS3 JSON с точками bestfit параметров. - Python:
HistFactoryModel.from_workspace()(auto-detect),HistFactoryModel.from_hs3(json_str). CLI: автоопределение вnextstat fit,nextstat scan. - HS3-входы используют дефолты ROOT HistFactory (NormSys Code1, HistoSys Code0). Для pyhf JSON NextStat по умолчанию использует гладкую интерполяцию (NormSys Code4, HistoSys Code4p). Для строгих pyhf-дефолтов используйте
--interp-defaults pyhf(CLI) илиfrom_workspace_with_settings(Code1, Code0)(Rust). - Поддержка HEPData patchset:
nextstat import patchset, Pythonnextstat.apply_patchset(). - Arrow / Polars ingestion -
nextstat.from_arrow(table)создает HistFactoryModel из PyArrow Table, RecordBatch или любого Arrow-совместимого источника (Polars, DuckDB, Spark).nextstat.from_parquet(path)читает Parquet напрямую. - Arrow export -
nextstat.to_arrow(model, what="yields"|"params")экспортирует ожидаемые yields или метаданные параметров как PyArrow Table. - Семантика ConstraintTerm - альфа-преобразование LogNormal, Gamma-ограничение для ShapeSys, обработка Uniform и NoConstraint. Парсится из метаданных
<ConstraintTerm>в HistFactory XML.
Небинированное правдоподобие
- Product PDF — совместное правдоподобие по независимым наблюдаемым:
log p(x,y) = log p₁(x) + log p₂(y). Позволяет строить многомерные unbinned-фиты без ручной факторизации. - Spline PDF — монотонная кубическая Эрмитова (Fritsch–Carlson) интерполяция по узлам и значениям плотности. Аналитическая нормировка, inverse-CDF сэмплирование для тоев.
- Многомерная KDE — 2-D/3-D гауссов KDE с шириной Silverman, усечённый на ограниченной поддержке наблюдаемых.
- ARGUS PDF — форма фона ARGUS для спектроскопии B-мезонов. Нормировка Гаусса–Лежандра на ограниченной поддержке.
- Voigtian PDF — pseudo-Voigt (Thompson–Cox–Hastings) линия резонанса. Свёртка Гаусса ⊗ Брейт–Вигнер для моделирования резонанса + детекторного разрешения.
- Интегралы нормировки кешируются между итерациями оптимизатора, избегая повторной квадратуры при неизменных параметрах.
- GPU flow NLL reduction — CUDA-ядро для extended unbinned likelihood по внешне вычисленным log-prob (flow PDF). Поддерживает многопроцессный logsumexp, гауссовы ограничения, host-upload и device-resident (ONNX CUDA EP) пути.
- GPU flow session — оркестрация вычисления flow PDF (CPU или CUDA EP) с GPU NLL reduction. Градиент через центральные конечные разности, вычисление yields из вектора параметров.
Система отчетов
nextstat report— генерирует распределения, pulls, корреляции, yields (.json/.csv/.tex) и ранкинг неопределённостей.- Python-рендеринг: многостраничный PDF + SVG для каждого графика через matplotlib.
--blindмаскирует наблюдаемые данные в незаблайнденных регионах.--deterministicвключает стабильный порядок ключей JSON.nextstat validation-report— единый артефакт валидации, объединяющий результаты Apex2 и отпечатки workspace. Выводитvalidation_report.json(схемаvalidation_report_v1) с SHA-256 набора данных, спецификацией модели, окружением, заметками для регуляторного обзора и сводкой pass/fail по наборам. Опциональный--pdfрендерит 7-страничный PDF для аудита через matplotlib.--json-onlyдля validation-pack: генерировать JSON-артефакты без рендера PDF (без зависимости от matplotlib).- Валидация pack manifest —
validation_pack_manifest.jsonс SHA-256 хешами и размерами всех файлов пакета. Удобный индекс для репликации и подписания. - Опциональный signing —
--sign-openssl-key/--sign-openssl-pubфлаги создают Ed25519-подписи над дайджестом манифеста.
Анализ выживаемости
- Параметрические модели: Exponential, Weibull, LogNormal AFT (с правым цензурированием).
- Cox Proportional Hazards: Efron/Breslow ties, робастные sandwich SE, остатки Шенфельда.
- Python:
nextstat.survival.{exponential,weibull,lognormal_aft,cox_ph}.fit(...) - CLI:
nextstat survival fit,nextstat survival predict
Линейные смешанные модели
- Аналитическое маргинальное правдоподобие (random intercept, random intercept + slope).
- Аппроксимация Лапласа для приближенных posterior.
Порядковые модели
- Упорядоченный logit/probit со стабильной параметризацией cutpoints.
Эконометрика и каузальный вывод
- Panel FE с кластерными SE (1-way).
- DiD TWFE + хелперы event study.
- IV / 2SLS с диагностикой слабых инструментов (first-stage F, partial R²).
- AIPW для ATE/ATT + хелпер E-value. Propensity scores, IPW-веса, диагностика overlap. Python:
nextstat.causal.aipw(),nextstat.causal.propensity_scores(). - GARCH / Стохастическая волатильность — модели GARCH(1,1) и стохастической волатильности для финансовых временных рядов. CLI:
nextstat volatility fit,nextstat volatility forecast. Python:nextstat.volatility.garch(),nextstat.volatility.sv().
Фармакометрика
- Интегратор RK4 для линейных систем ОДУ.
- 1-компартментная пероральная PK-модель с цензурированием LLOQ.
- Расширение NLME со случайными эффектами на уровне субъекта.
- Перечисление моделей ошибок —
ErrorModel::Additive,Proportional,Combined(σ_add, σ_prop)с хелперами дисперсии, NLL и градиента. - 2-компартментные PK-модели —
TwoCompartmentIvPkModel(IV болюс, 4 парам.) иTwoCompartmentOralPkModel(перорально, 5 парам.). Аналитические би/три-экспоненциальные решения. - Режим дозирования —
DosingRegimen: IV болюс, пероральное, IV инфузия. Одно-/многократные дозы и смешанные схемы. Замкнутые решения инфузий. - Чтение NONMEM-датасетов —
NonmemDataset::from_csv()парсит стандартный NONMEM CSV. Автоматическое преобразование записей дозирования вDosingRegimenпо субъектам. - Оценка FOCE/FOCEI —
FoceEstimator: оптимизация ETA по субъектам (демпфированный Ньютон-Рафсон) + обновление популяционных параметров. Приближение Лапласа с ридж-регуляризованным гессианом. - Коррелированные случайные эффекты —
OmegaMatrixхранит полную Ω через факторизацию Холецкого (Ω = L·Lᵀ).FoceEstimator::fit_1cpt_oral_correlated()фитирует с полной Ω;FoceResultвключает поляomega_matrixиcorrelation. - Пошаговое ковариатное моделирование (SCM) —
ScmEstimator: прямой отбор + обратное исключение по ΔOFV (LRT χ²(1)). Степенные, пропорциональные и экспоненциальные связи для CL/V/Ka. Полный аудит-трейс. - Диагностика VPC и GOF —
vpc_1cpt_oral(): визуальные предсказательные проверки с квантильными интервалами предсказания.gof_1cpt_oral(): PRED, IPRED, IWRES, CWRES. - Фарма-бенчмарк — Варфарин (32 субъекта), Теофиллин (12), Фенобарбитал (40 новорождённых). Восстановление параметров, GOF, VPC. Включает вариант с коррелированной Ω.
cargo test --test pharma_benchmark. - Схема артефактов NLME (v2.0.0) —
NlmeArtifactоборачивает все результаты оценки в единую JSON-сериализуемую структуру. CSV-экспорт фиксированных эффектов, случайных эффектов, GOF, VPC, SCM-трейса. - Run bundle (провенанс) —
RunBundleфиксирует версию NextStat, git-ревизию, Rust toolchain, ОС/CPU, сиды, провенанс датасета. - Алгоритм SAEM —
SaemEstimator: стохастический аппроксимационный EM для NLME (класс Monolix). E-шаг Метрополиса-Гастингса с адаптивной дисперсией proposal, M-шаг в замкнутой форме. ВозвращаетSaemDiagnostics(acceptance rates, OFV trace). Поддерживает диагональную и коррелированную Ω. - PD-модели —
EmaxModel,SigmoidEmaxModel(уравнение Хилла),IndirectResponseModel(типы I–IV). ODE-IDR через адаптивный RK45.PkPdLinkдля интерполяции концентрации PK→PD. - Адаптивные ОДУ-солверы —
rk45()(Дорманд-Принс 4(5) с PI-управлением шага) для нежёстких систем иesdirk4()(L-устойчивый SDIRK2) для жёстких. Обобщённый трейтOdeSystem.
API прикладной статистики
- Парсинг формул + детерминированные design matrices (
nextstat.formula). from_formulaобёртки для всех GLM и иерархических билдеров.- Сводки Вальда + робастная ковариация (HC0–HC3, 1-way cluster).
- Адаптеры scikit-learn:
NextStatLinearRegression,NextStatLogisticRegression,NextStatPoissonRegressor. - Политики пропусков:
drop_rows,impute_mean.
WASM-песочница
- Браузерный инференс через
wasm-bindgen:fit_json(),hypotest_json(),upper_limit_json(). - Перетащите
workspace.jsonи получите асимптотические CLs Brazil bands. Без Python и без сервера.
Визуализация
plot_cls_curve(),plot_brazil_limits(),plot_profile_curve().- Подкоманды:
nextstat viz distributions,viz pulls,viz corr,viz ranking. - Калман:
plot_kalman_states(),plot_forecast_bands().
Pure-Rust Zstd кодек (ns-zstd)
- Крейт
ns-zstd— pure-Rust Zstd декомпрессор и компрессор для ROOT I/O. Без зависимости от C — работает на WASM и embedded. Уровни сжатия 1–19 с FSE (Finite State Entropy) и Huffman кодированием. Выход декодера совпадает сlibzstdбайт-в-байт (верифицировано fixture-тестами). Hash-chain match finder с настраиваемой глубиной поиска.
R-привязки
- Пакет
nextstatдля R — нативный R-интерфейс черезextendr(bindings/ns-r/). Предоставляетnextstat_fit(),nextstat_hypotest(),nextstat_upper_limit(),nextstat_scan(),nextstat_ranking()для HistFactory workspaces. Unbinned event Parquet I/O и нейронные PDF-привязки (FlowPdf,DcrSurrogate) также доступны. Установка:R CMD INSTALL bindings/ns-r.
CLI и инфраструктура
- Структурированное логирование (
--log-level) и воспроизводимые пакеты запуска (--bundle). fit()поддерживаетinit_pars=для warm-start MLE.- CI: pyhf parity gate на push/PR, ночное обновление эталона TREx, тесты workspaces с HEPData.
- Валидация Apex2: NLL parity, bias/pulls regression, SBC calibration, quality gates по NUTS.
nextstat-server— self-hosted REST API для общего GPU-инференса.POST /v1/fit,POST /v1/ranking,GET /v1/health. Флаги:--gpu cuda|metal,--port,--host,--threads.nextstat.remote— pure-Python thin client (httpx).client = nextstat.remote.connect("http://gpu-server:3742"), затемclient.fit(workspace),client.ranking(workspace),client.health().- Batch API —
POST /v1/batch/fitфитит до 100 workspaces одним запросом;POST /v1/batch/toysзапускает GPU-ускоренный toy fitting.client.batch_fit(workspaces),client.batch_toys(workspace, n_toys=1000). - Model cache —
POST /v1/modelsзагружает workspace и возвращаетmodel_id(SHA-256); дальнейшие вызовы/v1/fitи/v1/rankingпринимаютmodel_id=, чтобы пропустить повторный парсинг. Вытеснение LRU (64 модели). - Docker & Helm — многоступенчатый Dockerfile для CPU и CUDA сборок, Helm chart с health probes, GPU resource requests, настраиваемыми репликами.
Исправлено
- End-to-end discovery скрипт (
e2e_discovery.py): исправлена обработка флага--no-deterministic. Скрипт теперь корректно записываетsummary.jsonиsummary.md. - CUDA batch toys (
--gpu cuda) крэш, когда некоторые тои сходятся раньше других. - GPU profiled session (
ProfiledDifferentiableSession): сбой сходимости рядом с границами параметров. - Optimizer early-stop при отрицательном NLL (
target_cost(0.0)удален). kalman_simulate(): поддержкаinit="sample|mean"иx0=....- StatError: некорректное распространение
sqrt(sumw2)при нулевых номинальных счетах. - Metal GPU: переиспользование scratch buffer (~40% меньше оверхеда аллокаций).
- HistFactory XML: удаление деклараций
<!DOCTYPE>перед парсингом. - CUDA/Metal race condition градиента сигнала: некорректная аккумуляция, когда несколько сэмплов вносят вклад в один бин.
- 10 пропущенных Python re-export в
__init__.py:has_metal,read_root_histogram,workspace_audit,cls_curve,profile_curve,kalman_filter/smooth/em/forecast/simulate. - Распаковка ROOT TTree: ограничение выходного буфера, чтобы предотвратить OOM на битых/слишком больших baskets.
- HistFactory XML: fallback на абсолютный путь
InputFileи экранирование спецсимволов в ROOT C macro. - Metal GPU: ранкинг теперь явно отклоняется с понятной ошибкой (Metal пока не поддерживает ранкинг).
- StatError: неопределенности
HistoNameтеперь считаются относительными и конвертируются в абсолютные (sigma_abs = rel * nominal), в соответствии с семантикой ROOT/HistFactory.
[0.1.0] — 2026-02-05
Первый публичный релиз
Ядро
- Модель данных HistFactory workspace с полной совместимостью с pyhf JSON.
- Пуассоновский NLL со всеми типами модификаторов + Barlow-Beeston.
- SIMD-ускоренный NLL через
wide::f64x4. - Автоматическое дифференцирование: forward-mode (dual numbers) и reverse-mode (tape AD).
Частотный вывод
- MLE через L-BFGS-B с неопределенностями по гессиану.
- Асимптотический CLs: проверка гипотез (тестовая статистика q-tilde).
- Сканы профильного правдоподобия, верхние пределы CLs (bisection + linear scan), Brazil bands.
- Batch MLE, toy studies, ranking мешающих параметров.
Байесовское семплирование
- No-U-Turn Sampler (NUTS) с dual averaging.
- Диагностика HMC: divergences (расхождения), tree depth, step size, E-BFMI.
- Rank-normalized folded R-hat + улучшенный ESS.
- Python:
sample()возвращает ArviZ-совместимый dict.
Регрессия и GLM
- Линейная, логистическая, Пуассона и отрицательная биномиальная регрессия.
- Ridge regression (MAP/L2), детектирование separation, поддержка exposure/offset.
- Кросс-валидация и метрики (RMSE, log-loss, Poisson deviance).
Иерархические модели
- Random intercepts/slopes, коррелированные эффекты (LKJ + Cholesky), non-centered parameterization.
- Posterior predictive checks.
Временные ряды
- Линейно-гауссов фильтр Калмана + RTS smoother.
- Оценка параметров через EM, многопериодный прогноз с prediction intervals.
- Конструкторы local-level, local-trend, AR(1). Поддержка пропущенных наблюдений.
Распределения
- Normal, StudentT, Bernoulli, Binomial, Poisson, NegativeBinomial, Gamma, Exponential, Weibull, Beta.
- Bijector/transform слой: Identity, Exp, Softplus, Sigmoid, Affine.
Визуализация
- Кривые профильного правдоподобия и графики CLs Brazil band.
- CLI:
viz profile,viz cls. Python:viz_profile_curve(),viz_cls_curve().
Python-привязки и CLI
nextstatPython-пакет (PyO3/maturin) с классамиModelиFitResult.nextstatCLI:fit,hypotest,upper-limit,scan,version.- CI-воркфлоу и GitHub release pipeline (multi-arch wheels + CLI binary).
Валидация (Apex2)
- Агрегатор master report: NLL parity, GLM benchmarks, bias/pulls regression, SBC calibration, quality gates по NUTS.
- Ночной медленный CI workflow.
