ho22joshua Claude Opus 5.5 commited on
Commit
2f04f23
·
1 Parent(s): 973bea8

chore: move test fixtures into tests/, flatten scripts/, drop paper source

Browse files
.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
- venv/
17
- htmlcov/
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/raw/*
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; fixtures in data/fixtures/testing
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/slurm/train.sh train.fast=true
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/slurm/train_ddp.sh` launches all GPUs of
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/slurm/train.sh``). The standard deviation
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/slurm/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
 
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/slurm/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
 
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 / "data/fixtures/testing"
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