Commit ·
2f04f23
1
Parent(s): 973bea8
chore: move test fixtures into tests/, flatten scripts/, drop paper source
Browse files- .gitignore +5 -21
- AGENTS.md +1 -1
- data/raw/.gitkeep +0 -1
- docs/paper/paper.tar.gz +0 -3
- docs/usage.md +2 -2
- scripts/summarize_ensemble.py +1 -1
- scripts/{slurm/train.sh → train.sh} +1 -1
- scripts/{slurm/train_ddp.sh → train_ddp.sh} +1 -1
- tests/conftest.py +1 -1
- {data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_341081.ttH125_gamgam_64.root +0 -0
- {data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_343981.ggH125_gamgam_64.root +0 -0
- {data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_345041.VBFH125_gamgam_64.root +0 -0
- {data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_345318.WpH125J_Wincl_gamgam_64.root +0 -0
- {data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_345319.ZH125J_Zincl_gamgam_64.root +0 -0
- {data/fixtures/testing → tests/fixtures}/ttH_NLO_64.root +0 -0
.gitignore
CHANGED
|
@@ -1,32 +1,16 @@
|
|
| 1 |
-
__pycache__/
|
| 2 |
-
*.onnx
|
| 3 |
-
|
| 4 |
-
# Legacy run directories at the repository root
|
| 5 |
-
/trainings/
|
| 6 |
-
/scores/
|
| 7 |
-
/slurm/
|
| 8 |
-
|
| 9 |
# Python tooling
|
|
|
|
| 10 |
*.py[cod]
|
| 11 |
-
.pytest_cache/
|
| 12 |
-
.ruff_cache/
|
| 13 |
-
.mypy_cache/
|
| 14 |
*.egg-info/
|
| 15 |
.venv/
|
| 16 |
-
|
| 17 |
-
|
| 18 |
.coverage
|
| 19 |
-
profiles/
|
| 20 |
-
*.trace.json
|
| 21 |
dist/
|
| 22 |
build/
|
| 23 |
-
benchmark-results/
|
| 24 |
-
validation_output/
|
| 25 |
|
| 26 |
# Local data and generated outputs
|
| 27 |
-
data/
|
| 28 |
-
!data/raw/.gitkeep
|
| 29 |
-
data/processed/
|
| 30 |
outputs/
|
| 31 |
-
checkpoints/
|
| 32 |
logs/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
# Python tooling
|
| 2 |
+
__pycache__/
|
| 3 |
*.py[cod]
|
|
|
|
|
|
|
|
|
|
| 4 |
*.egg-info/
|
| 5 |
.venv/
|
| 6 |
+
.pytest_cache/
|
| 7 |
+
.ruff_cache/
|
| 8 |
.coverage
|
|
|
|
|
|
|
| 9 |
dist/
|
| 10 |
build/
|
|
|
|
|
|
|
| 11 |
|
| 12 |
# Local data and generated outputs
|
| 13 |
+
data/
|
|
|
|
|
|
|
| 14 |
outputs/
|
|
|
|
| 15 |
logs/
|
| 16 |
+
*.onnx
|
AGENTS.md
CHANGED
|
@@ -11,7 +11,7 @@ run from `cli.py` to the model in a few files.
|
|
| 11 |
src/gnn4colliders/ flat modules; see docs/design.md for what each holds
|
| 12 |
configs/ one self-contained YAML file per experiment
|
| 13 |
scripts/ Slurm wrappers and small helpers (no core logic)
|
| 14 |
-
tests/ pytest
|
| 15 |
Pretrained_GNN/ the published pretrained checkpoints (Git LFS)
|
| 16 |
```
|
| 17 |
|
|
|
|
| 11 |
src/gnn4colliders/ flat modules; see docs/design.md for what each holds
|
| 12 |
configs/ one self-contained YAML file per experiment
|
| 13 |
scripts/ Slurm wrappers and small helpers (no core logic)
|
| 14 |
+
tests/ pytest, with small ROOT fixtures in tests/fixtures
|
| 15 |
Pretrained_GNN/ the published pretrained checkpoints (Git LFS)
|
| 16 |
```
|
| 17 |
|
data/raw/.gitkeep
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
|
|
|
|
|
|
docs/paper/paper.tar.gz
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:9587a5b67b73dfc0f88b2a641b98410623a592d47cedd8fc71b35d28e9e1dfbc
|
| 3 |
-
size 142839
|
|
|
|
|
|
|
|
|
|
|
|
docs/usage.md
CHANGED
|
@@ -101,7 +101,7 @@ allocation and, on Perlmutter compute nodes, `UV_CACHE_DIR=$SCRATCH/.cache/uv`
|
|
| 101 |
```bash
|
| 102 |
# One training per seed, each followed by test-split evaluation:
|
| 103 |
for seed in 1 2 3 4 5; do
|
| 104 |
-
sbatch -A <account> --export=ALL,SEED=$seed scripts/
|
| 105 |
done
|
| 106 |
uv run python scripts/summarize_ensemble.py outputs/gamgam/seed* # mean +- std
|
| 107 |
```
|
|
@@ -110,5 +110,5 @@ Under `torchrun` with more than one process, training is data parallel:
|
|
| 110 |
`data.batch_size` is per process, training events are sharded over ranks
|
| 111 |
(padded to equal length) and metrics are computed over all ranks' events.
|
| 112 |
CUDA graphs need a single process (so `train.fast=true` does too; DDP is
|
| 113 |
-
tested in float32 eager). `scripts/
|
| 114 |
one or more nodes.
|
|
|
|
| 101 |
```bash
|
| 102 |
# One training per seed, each followed by test-split evaluation:
|
| 103 |
for seed in 1 2 3 4 5; do
|
| 104 |
+
sbatch -A <account> --export=ALL,SEED=$seed scripts/train.sh train.fast=true
|
| 105 |
done
|
| 106 |
uv run python scripts/summarize_ensemble.py outputs/gamgam/seed* # mean +- std
|
| 107 |
```
|
|
|
|
| 110 |
`data.batch_size` is per process, training events are sharded over ranks
|
| 111 |
(padded to equal length) and metrics are computed over all ranks' events.
|
| 112 |
CUDA graphs need a single process (so `train.fast=true` does too; DDP is
|
| 113 |
+
tested in float32 eager). `scripts/train_ddp.sh` launches all GPUs of
|
| 114 |
one or more nodes.
|
scripts/summarize_ensemble.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
"""Summarize an ensemble of training runs as mean +- standard deviation.
|
| 2 |
|
| 3 |
Each run directory must contain ``history.jsonl`` and ``test_metrics.json``
|
| 4 |
-
(written by ``scripts/
|
| 5 |
is over runs, as in Table 3 of Ho et al. (2026).
|
| 6 |
"""
|
| 7 |
|
|
|
|
| 1 |
"""Summarize an ensemble of training runs as mean +- standard deviation.
|
| 2 |
|
| 3 |
Each run directory must contain ``history.jsonl`` and ``test_metrics.json``
|
| 4 |
+
(written by ``scripts/train.sh``). The standard deviation
|
| 5 |
is over runs, as in Table 3 of Ho et al. (2026).
|
| 6 |
"""
|
| 7 |
|
scripts/{slurm/train.sh → train.sh}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
#!/bin/bash
|
| 2 |
# Train CONFIG on one GPU, then evaluate its best epoch on the test split.
|
| 3 |
-
# sbatch -A <account> --export=ALL,SEED=1 scripts/
|
| 4 |
# The paper's ensembles vary only the seed (SEED=1..5). Prepare the event
|
| 5 |
# cache first: uv run gnn4colliders prepare configs/gamgam.yaml
|
| 6 |
#SBATCH -N 1
|
|
|
|
| 1 |
#!/bin/bash
|
| 2 |
# Train CONFIG on one GPU, then evaluate its best epoch on the test split.
|
| 3 |
+
# sbatch -A <account> --export=ALL,SEED=1 scripts/train.sh [key=value ...]
|
| 4 |
# The paper's ensembles vary only the seed (SEED=1..5). Prepare the event
|
| 5 |
# cache first: uv run gnn4colliders prepare configs/gamgam.yaml
|
| 6 |
#SBATCH -N 1
|
scripts/{slurm/train_ddp.sh → train_ddp.sh}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
#!/bin/bash
|
| 2 |
# Data-parallel training on all GPUs of one or more nodes:
|
| 3 |
-
# sbatch -A <account> -N 2 scripts/
|
| 4 |
# data.batch_size is per GPU. CUDA graphs need a single process.
|
| 5 |
#SBATCH -N 1
|
| 6 |
#SBATCH -C gpu
|
|
|
|
| 1 |
#!/bin/bash
|
| 2 |
# Data-parallel training on all GPUs of one or more nodes:
|
| 3 |
+
# sbatch -A <account> -N 2 scripts/train_ddp.sh [key=value ...]
|
| 4 |
# data.batch_size is per GPU. CUDA graphs need a single process.
|
| 5 |
#SBATCH -N 1
|
| 6 |
#SBATCH -C gpu
|
tests/conftest.py
CHANGED
|
@@ -9,7 +9,7 @@ from gnn4colliders.config import Config, load_config
|
|
| 9 |
from gnn4colliders.data import PackedEvents, pack_events, prepare
|
| 10 |
|
| 11 |
ROOT = Path(__file__).resolve().parents[1]
|
| 12 |
-
FIXTURES = ROOT / "
|
| 13 |
#: 64-event fixtures of the five GamGam samples, labels 0..4 (ttH..ZH).
|
| 14 |
GAMGAM_FIXTURES = sorted((FIXTURES / "atlas_opendata_gamgam").glob("mc_*_64.root"))
|
| 15 |
TTH_FIXTURE = FIXTURES / "ttH_NLO_64.root"
|
|
|
|
| 9 |
from gnn4colliders.data import PackedEvents, pack_events, prepare
|
| 10 |
|
| 11 |
ROOT = Path(__file__).resolve().parents[1]
|
| 12 |
+
FIXTURES = ROOT / "tests/fixtures"
|
| 13 |
#: 64-event fixtures of the five GamGam samples, labels 0..4 (ttH..ZH).
|
| 14 |
GAMGAM_FIXTURES = sorted((FIXTURES / "atlas_opendata_gamgam").glob("mc_*_64.root"))
|
| 15 |
TTH_FIXTURE = FIXTURES / "ttH_NLO_64.root"
|
{data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_341081.ttH125_gamgam_64.root
RENAMED
|
File without changes
|
{data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_343981.ggH125_gamgam_64.root
RENAMED
|
File without changes
|
{data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_345041.VBFH125_gamgam_64.root
RENAMED
|
File without changes
|
{data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_345318.WpH125J_Wincl_gamgam_64.root
RENAMED
|
File without changes
|
{data/fixtures/testing → tests/fixtures}/atlas_opendata_gamgam/mc_345319.ZH125J_Zincl_gamgam_64.root
RENAMED
|
File without changes
|
{data/fixtures/testing → tests/fixtures}/ttH_NLO_64.root
RENAMED
|
File without changes
|