# WP18 — reproducible pipeline. Targets: setup / test / simulate / figures / tables / paper / all / clean PY ?= .venv/bin/python PIP ?= .venv/bin/pip WORKERS ?= 6 .PHONY: all setup test test-fast simulate simulate-force simulate-quick robustness figures tables paper paper-inputs clean clean-results # simulate is skipped when results/data/diagnostics.json exists (60-min run); `make clean-results` first to redo it all: test simulate figures tables paper setup: python3 -m venv .venv $(PIP) install --upgrade pip $(PIP) install -r requirements.txt test: $(PY) -m pytest tests/ -q test-fast: $(PY) -m pytest tests/ -q -m "not slow" # Full run: baseline + all scenario groups + transitions + welfare (about 60 min on 18 cores). # Skipped if results/data/diagnostics.json is present; `make clean-results` (or `make simulate-force`) reruns it. simulate: @if [ -f results/data/diagnostics.json ]; then \ echo "simulate: results/data/diagnostics.json present -> skipping the 60-min run (make clean-results to redo)"; \ else $(MAKE) simulate-force; fi simulate-force: mkdir -p results/data results/logs results/figures results/tables $(PY) -m src.simulation --workers $(WORKERS) 2>&1 | tee results/logs/simulate.log $(PY) -m src.robustness # Smoke test of the whole pipeline (small panel, subset of scenarios, ~10 min) simulate-quick: mkdir -p results/data results/logs $(PY) -m src.simulation --quick --workers $(WORKERS) 2>&1 | tee results/logs/simulate_quick.log $(PY) -m src.robustness robustness: $(PY) -m src.robustness figures: $(PY) -m src.figures tables: $(PY) -m src.tables # Copy the generated exhibits into paper/ (HARMONISATION: paper/figures, paper/tables are what main.tex includes) paper-inputs: mkdir -p paper/figures paper/tables cp results/figures/fig*.pdf paper/figures/ cp results/tables/*.tex paper/tables/ paper: paper-inputs cd paper && latexmk -pdf main.tex clean: find . -name "__pycache__" -type d -prune -exec rm -rf {} + rm -rf .pytest_cache cd paper && latexmk -c 2>/dev/null || true cd paper && latexmk -c appendix_proofs_standalone.tex 2>/dev/null || true rm -f paper/appendix_proofs_standalone.pdf clean-results: rm -rf results/data/* results/figures/* results/tables/* results/logs/*