25718f175e
Removes unused imports and an ambiguous variable name, narrows Optional types before use so ty's flow analysis is satisfied, swaps sum() over polars expressions for pl.sum_horizontal to avoid the Literal[0] fallback type, and converts numpy bin edges to plain lists before passing to matplotlib's hist (whose stub only accepts Sequence[float]). Also applies ruff format across the repo, which had drifted out of sync with the formatter. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
77 lines
1.8 KiB
Python
77 lines
1.8 KiB
Python
"""Zoomed-in real-vs-generated edep histogram for photons only (pdg=22),
|
|
to characterize the KL spike flagged by plot_kl_bars_pl(group_by='pdg')."""
|
|
|
|
from pathlib import Path
|
|
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
|
|
import giant.analysis as a
|
|
|
|
FILE = "/home/lars/Programming/giant/pbwo4_10k_9_predicted_local.parquet"
|
|
OUT = Path("/home/lars/knowledge-base/meta/attachments")
|
|
|
|
samples = a.load_predicted_local(FILE, sample_frac=0.15)
|
|
mask = samples.pdg == 22
|
|
edep_idx = a.RAW_TARGET_NAMES.index("edep")
|
|
real = samples.real_raw[mask, edep_idx]
|
|
gen = samples.gen_raw[mask, edep_idx]
|
|
print("n photon rows:", mask.sum())
|
|
print(
|
|
"real: mean",
|
|
real.mean(),
|
|
"std",
|
|
real.std(),
|
|
"max",
|
|
real.max(),
|
|
"frac==0",
|
|
(real == 0).mean(),
|
|
)
|
|
print(
|
|
"gen: mean",
|
|
gen.mean(),
|
|
"std",
|
|
gen.std(),
|
|
"max",
|
|
gen.max(),
|
|
"frac==0",
|
|
(gen == 0).mean(),
|
|
)
|
|
for q in [0.5, 0.9, 0.99, 0.999]:
|
|
print(f"q={q}: real={np.quantile(real, q):.4f} gen={np.quantile(gen, q):.4f}")
|
|
|
|
fig, axes = plt.subplots(1, 2, figsize=(10, 4))
|
|
bins = np.linspace(0, np.quantile(real, 0.999), 80)
|
|
axes[0].hist(real, bins=bins, alpha=0.6, label="real", density=True)
|
|
axes[0].hist(gen, bins=bins, alpha=0.6, label="gen", density=True)
|
|
axes[0].set_yscale("log")
|
|
axes[0].set_xlabel("edep (photons, pdg=22)")
|
|
axes[0].legend()
|
|
|
|
axes[1].hist(
|
|
real,
|
|
bins=bins,
|
|
alpha=0.6,
|
|
label="real",
|
|
density=True,
|
|
cumulative=True,
|
|
histtype="step",
|
|
)
|
|
axes[1].hist(
|
|
gen,
|
|
bins=bins,
|
|
alpha=0.6,
|
|
label="gen",
|
|
density=True,
|
|
cumulative=True,
|
|
histtype="step",
|
|
)
|
|
axes[1].set_xlabel("edep (photons, pdg=22) - CDF")
|
|
axes[1].legend()
|
|
|
|
fig.tight_layout()
|
|
fig.savefig(
|
|
OUT / "giant-h1024n8d0.1lr3e-4-photon-edep-zoom.png", dpi=150, bbox_inches="tight"
|
|
)
|
|
print("saved photon-edep-zoom")
|