This is the minimal workflow for a new student taking over the project.
cd multi-level
python3 --version
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip setuptools wheel
python3 -m pip install -e . -r requirements.txt
python3 -m pip install -r requirements-torch.txt
pytest -q
PYTHONPATH=src python3 -m multilevel.cli smoke --out runs/smokeIf this prints Python 3.9 or older, install Python 3.10+ first and recreate the venv.
For a lightweight install, omit requirements-torch.txt; the base tests still
pass, and the transformer-specific test is skipped.
If pytest is missing:
python3 -m pip install pytestRead these files in order:
docs/EXPERIMENT_MATRIX.mddocs/RESULTS.mddocs/manuscript/patternboost_experiment_report.pdfdocs/PATTERNBOOST_EXPERIMENT_REPORT.mddocs/EXPLORATORY_RESULTS.mddocs/HPC_JUBAIL.mddocs/archive/STRATEGY_STUDY_2026-06-30.md
The main paper table scope is misr, unit_square, and guillotine.
epsilon_net and graph_separation are implemented and have an audited
exploratory snapshot, but keep them in a separate appendix/results section. Do
not count discarded square-stabbing-14-9 evidence in current paper tables.
The final submission artifacts are preserved at:
docs/assets/final_submission_20260708_131302/
Use docs/RESULTS.md and
docs/manuscript/patternboost_experiment_report.pdf as the authoritative
snapshot for manuscript tables. The fresh final-array values are MISR 1.5,
unit_square 1.5, and guillotine 0.25. A reverified previous-best
guillotine certificate with score 0.3 is preserved separately and must be
cited with that provenance.
scripts/make_main_matrix.sh
PYTHONPATH=src python3 -m multilevel.cli patternboost-cell \
--matrix runs/main_81_matrix.jsonl \
--index 0 \
--out-root runs/local_test \
--iterations 20 \
--population 16 \
--elite 4 \
--exact-every 5 \
--train-every 5 \
--model-samples 4 \
--model-kind ngram \
--checkpoint-every 1 \
--n 8 \
--grid 8Check the output:
find runs/local_test -name summary.json -print
PYTHONPATH=src python3 -m multilevel.cli audit --root runs/local_test --out runs/local_test/audit/audit.json --csv runs/local_test/audit/audit.csvUse docs/HPC_JUBAIL.md. Always run a small smoke/slice before a full array.
Recommended first HPC sequence:
scripts/sync_to_hpc.sh
ssh sg9396@jubail.abudhabi.nyu.edu
cd ~/patternboost/multi-level
scripts/prepare_hpc_scratch_venv.sh
PYTHONPATH=src python3 -m multilevel.cli smoke --out runs/hpc_smoke
scripts/make_main_matrix.shFor the exploratory appendix tasks, generate a separate matrix and Slurm script:
scripts/make_exploratory_matrix.sh runs/explore_overnight_matrix.jsonl
PYTHONPATH=src python3 -m multilevel.cli make-slurm \
--matrix runs/explore_overnight_matrix.jsonl \
--out scripts/explore_overnight_array.slurm \
--project-dir "$PWD" \
--results-dir runs/explore_overnight_$(date +%Y%m%d_%H%M%S) \
--time 09:00:00 \
--partition compute \
--cpus-per-task 1 \
--mem 8G \
--runner exploreDo not use a hand-written exploratory Slurm script; generate it from the CLI so the array range matches the matrix.
Only report a candidate when all three are true:
- It appears in
summary.json. - Its
best_certificate_pathexists. multilevel verifyormultilevel auditrecomputes the same value.
For wall-time-killed jobs, use checkpoint values only as live progress, not as final paper-table rows.
--timein Slurm is a wall limit. A row can finish earlier if it reaches--iterations.budget_secondsis the internal stop condition checked by the Python runner.--resumeonly works if the same output cell directory already containscheckpoint.json.runs/is ignored by git. Copy final certificates or summaries into a documented artifact directory only when they are meant to be preserved.