Визуализация
Rust-крейт ns-viz и Python-подмодуль nextstat.viz создают 18 типов графиков публикационного качества — полный паритет с каждым выводом TRExFitter. Все графики генерируются как сериализуемые JSON-артефакты в Rust; Python-обёртки рендерят через matplotlib.
Установка
pip install "nextstat[viz]"Каталог графиков (18 типов)
| Тип графика | CLI / Python | Rust-артефакт |
|---|---|---|
| Prefit-распределения | viz distributions | DistributionArtifact |
| Postfit-распределения | viz distributions --fit | DistributionArtifact |
| NP pull-диаграмма | viz pulls | PullArtifact |
| Корреляционная матрица | viz corr | CorrelationArtifact |
| Ранжирование NP (impact) | viz ranking | RankingArtifact |
| Brazil band (CLs vs μ) | viz cls | ClsCurveArtifact |
| Профильное правдоподобие | viz profile | ProfileCurveArtifact |
| Таблицы выходов | report | YieldTableArtifact |
| Разбивка неопределённостей | viz uncertainty | UncertaintyArtifact |
| Гаммы (стат. NP) | viz gammas | GammaArtifact |
| Summary (μ мульти-фит) | viz summary | SummaryArtifact |
| Разделение (S vs B) | viz separation | SeparationArtifact |
| Круговая диаграмма | viz pie | PieArtifact |
| Скан значимости | viz significance | SignificanceScanArtifact |
| 2D контуры правдоподобия | viz contour | ContourArtifact |
| Развёртка (unfolding) | viz unfolding | ResponseMatrixArtifact / UnfoldedSpectrumArtifact |
| Валидация морфинга | viz morphing | MorphingArtifact |
| Signal injection | viz injection | InjectionArtifact |
Подсвеченные строки — пять новых модулей, добавленных в v0.9.4.
Brazil band для CLs
import nextstat scan = np.linspace(0.0, 5.0, 101) cls_art = nextstat.viz.cls_curve(model, scan, alpha=0.05) nextstat.viz.plot_cls_curve(cls_art, title="CLs Brazil band")
Скан значимости
Графики p₀ или Z (значимость открытия) как функция массы или параметра силы сигнала. Поддерживает однорабочее-пространство и multi-mass-point сканы. Аналог TRExFitter шага s (GetSignificance).
sig_art = nextstat.viz.significance_scan(model, masses, workspaces) nextstat.viz.plot_significance_scan(sig_art, title="Значимость открытия")
2D контуры правдоподобия
Контуры Δ(2NLL) для двух POI на уровнях 68% и 95% CL. Используется алгоритм marching squares для извлечения гладких контуров из сетки профильного правдоподобия. Аналог TRExFitter GetContour.
contour_art = nextstat.viz.contour_2d(
model, poi_x="mu_sig", poi_y="mu_bkg",
x_range=(0.0, 3.0), y_range=(0.5, 1.5), grid=50,
)
nextstat.viz.plot_contour(contour_art, title="2D контур")Графики развёртки
Два типа артефактов: ResponseMatrixArtifact (матрица миграции с метриками чистоты/стабильности, опциональная нормировка по столбцам) и UnfoldedSpectrumArtifact(развёрнутое дифференциальное распределение со стат./сист. ошибками и наложением истинного спектра). Аналог TRExFitter шага x.
resp = nextstat.viz.response_matrix(truth_bins, reco_bins, migration) nextstat.viz.plot_response_matrix(resp, title="Матрица миграции") unf = nextstat.viz.unfolded_spectrum(bins, unfolded, stat_err, syst_err, truth) nextstat.viz.plot_unfolded_spectrum(unf, title="Развёрнутое pT")
Валидация морфинга
Визуализация интерполяции шаблонов между anchor-точками. Показывает дискретные шаблоны наряду с интерполированным результатом при произвольном значении параметра.
morph_art = nextstat.viz.morphing(anchors, interp_value=0.7) nextstat.viz.plot_morphing(morph_art, title="Морфинг шаблонов")
Signal injection / линейность
Тест линейности μ̂ vs μinj с pull-статистикой для каждой точки и автоматическим fit наклона/смещения методом наименьших квадратов. Проверяет, что анализ корректно восстанавливает введённую силу сигнала.
inj_art = nextstat.viz.signal_injection(
model, mu_inj=[0.0, 0.5, 1.0, 1.5, 2.0], n_toys=200,
)
nextstat.viz.plot_injection(inj_art, title="Линейность signal injection")Рендерер отдельных артефактов (viz render)
Рендеринг одного JSON viz артефакта напрямую в изображение без генерации полного отчёта. Поддерживает типы pulls, corr и ranking.
# Рендеринг pulls nextstat viz render --kind pulls --input pulls.json --output pulls.png # Корреляционная матрица с фильтрами nextstat viz render --kind corr --input corr.json --output corr.png \ --corr-top-n 40 --corr-exclude "gamma_*" # Ранжирование с заголовком и DPI nextstat viz render --kind ranking --input ranking.json --output ranking.png \ --title "NP Impact on mu" --dpi 220
| Флаг | Описание |
|---|---|
| --kind | Тип артефакта: pulls, corr или ranking |
| --input | Путь к JSON-файлу артефакта |
| --output | Путь к выходному изображению (.png) |
| --title | Пользовательский заголовок графика |
| --dpi | Разрешение вывода (по умолчанию 220) |
| --corr-include / --corr-exclude | Фильтрация параметров корреляционной матрицы по glob-паттерну |
| --corr-top-n | Показать только top N параметров по макс. абсолютной корреляции |
Архитектура Rust-артефактов
Каждый тип графика поддерживается сериализуемой Rust-структурой в крейте ns-viz. Артефакты сериализуются в JSON через serde, их можно использовать из любого языка или передать в собственные рендереры. Python-обёртки nextstat.viz вызывают эти Rust-типы и рендерят через matplotlib.
