68fb99bed8
Adds model.conditioning = "physical" | "embedding": physical mode routes particle mass/charge and material Z_eff/A_eff/density/X0/lambda_int through small MLPs to replace the learned PDG/material embedding tables, so the surrogate generalizes to PDG codes/materials outside the training vocab instead of memorizing it. "embedding" stays available as the comparison baseline (old checkpoints without the key default to it). Stage 2 now regresses a secondary's mass/charge directly against a fixed physics-derived target instead of a learned/snapped embedding, and uses no snapping at inference — the model's raw predicted (mass, charge) is the secondary's physical identity, including for its own further rollout steps. A separate reporting-only nearest-known-PDG lookup (never fed back into the model) populates output pdg columns / the embedding-mode rollout fallback. giant/materials.py's table is populated with Geant4's own built-in NIST constants (Z_eff, A_eff, density, X0, lambda_int), extracted directly from the Geant4 11.4.1 build vendored in minicalosim via G4NistManager rather than hand-typed literature values. G4_LYSO is left unfilled: confirmed (both by runtime lookup and by searching minicalosim's history) that it's never actually a constructed Geant4 material there, only documentation/UI color-map text. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
78 lines
1.4 KiB
TOML
78 lines
1.4 KiB
TOML
[project]
|
|
name = "giant"
|
|
version = "0.1.0"
|
|
description = "Geant4 step-function surrogate via conditional flow matching"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"numpy>=1.26,<3",
|
|
"pandas>=2.2,<4",
|
|
"pyarrow>=16,<25",
|
|
"tqdm>=4.60,<5",
|
|
"typer>=0.12,<1",
|
|
"pyyaml>=6,<7",
|
|
"particle>=1.0,<2",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
cpu = [
|
|
"torch>=2.3,<2.4",
|
|
]
|
|
cuda = [
|
|
"torch>=2.3,<2.4",
|
|
]
|
|
dev = [
|
|
"pytest>=8,<10",
|
|
"ruff>=0.15,<1",
|
|
"ty>=0.0.50,<0.1",
|
|
"giant[convert,analysis,geometry]",
|
|
]
|
|
geometry = [
|
|
"scikit-learn>=1.4,<2",
|
|
]
|
|
convert = [
|
|
"uproot>=5.3,<6",
|
|
"awkward>=2.6,<3",
|
|
"polars>=1.0,<2",
|
|
]
|
|
analysis = [
|
|
"matplotlib>=3.8,<4",
|
|
"polars>=1.0,<2",
|
|
"ipykernel>=7.3.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
giant = "giant.cli:app"
|
|
dwarf = "scripts.dwarf:app"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["giant", "scripts"]
|
|
|
|
[tool.uv]
|
|
conflicts = [
|
|
[
|
|
{ extra = "cpu" },
|
|
{ extra = "cuda" },
|
|
],
|
|
]
|
|
|
|
[tool.uv.sources]
|
|
torch = [
|
|
{ index = "pytorch-cpu", extra = "cpu" },
|
|
{ index = "pytorch-cu118", extra = "cuda" },
|
|
]
|
|
|
|
[[tool.uv.index]]
|
|
name = "pytorch-cpu"
|
|
url = "https://download.pytorch.org/whl/cpu"
|
|
explicit = true
|
|
|
|
[[tool.uv.index]]
|
|
name = "pytorch-cu118"
|
|
url = "https://download.pytorch.org/whl/cu118"
|
|
explicit = true
|