Removed from main (all preserved on the dev branch): the arXiv build and
its sources, design documents (blueprint, results summary, review responses,
essay drafts), tasks/ and CLAUDE.md, the cover letter and reference tooling,
two unused manuscript figures, and every experiment that feeds no figure or
number in the paper: the collapse null, the sexual-vs-asexual lineage, the
NK speciation variant, the 0.5B single-seed LLM prototypes, the compose and
society experiments with their calibration and pilot runs, and their
configs, runners, tests, figure scripts and PBS jobs. Their result bundles
are moved to results/_archive/ (ignored) so the parquets stay on disk.
Also: plot_llm_speciation reads the s{seed}/ layout; the mating-breadth
plot writes under its bundle name; Makefile targets reduced to the kept
experiments; REPRODUCING.md and README point to dev for the rest.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y64o8FKP7rCuXzC48pxpMm
72 lines
3.9 KiB
Makefile
72 lines
3.9 KiB
Makefile
# Repository automation (inheritance, neural and language-model tiers). The uv venv (built from the committed uv.lock) is the
|
|
# reproducibility source of truth; every target runs inside it via `uv run`.
|
|
|
|
.PHONY: env env-neural env-mnist env-llm env-notebooks test inheritance neural mnist llm \
|
|
llm-speciation llm-epistasis figures paper-figures paper notebooks clean
|
|
|
|
env: ## build .venv from the committed lockfile
|
|
uv sync --extra dev
|
|
|
|
env-neural: ## add the torch stack for the trained-network tier (GPU)
|
|
uv sync --extra dev --extra neural
|
|
|
|
env-mnist: ## add torchvision for the real-MNIST confirmation tier
|
|
uv sync --extra dev --extra neural --extra mnist
|
|
|
|
test: ## correctness tests + scientific-validation tests (the spine of trust)
|
|
uv run pytest
|
|
|
|
inheritance: ## run every inheritance-model experiment (analytic; bitwise reproducible)
|
|
for c in configs/inheritance/*.yaml; do uv run python -m inheritance.experiment "$$c"; done
|
|
|
|
neural: ## run the synthetic trained-network experiments (excludes the MNIST/torchvision tiers)
|
|
for c in configs/neural/*.yaml; do case "$$c" in *mnist*|*speciation_real*) ;; \
|
|
*) uv run python -m neural.experiment "$$c" ;; esac; done
|
|
|
|
mnist: ## run the torchvision tiers: MNIST collapse + real-weight speciation (needs env-mnist)
|
|
uv run python -m neural.experiment configs/neural/fig2_mnist_collapse.yaml
|
|
uv run python -m neural.experiment configs/neural/speciation_real.yaml
|
|
uv run python -m neural.experiment configs/neural/speciation_real_cliff.yaml
|
|
uv run python -m neural.experiment configs/neural/speciation_real_emergent.yaml
|
|
MPLBACKEND=Agg uv run python figures/mnist_montage.py # the asset paper Fig. 2A embeds
|
|
|
|
env-llm: ## add the LLM stack for the language-model tier (GPU; transformers/peft)
|
|
uv sync --extra dev --extra neural --extra llm
|
|
|
|
llm: ## the 0.5B multi-seed runs behind Fig. 3B and Table S2 (merge x5, moe-hard x3, directed-hard x3)
|
|
uv run python -m llm.experiment configs/llm/merge_seeds.yaml
|
|
uv run python -m llm.experiment configs/llm/moe_hard_seeds.yaml
|
|
uv run python -m llm.experiment configs/llm/directed_hard_seeds.yaml
|
|
|
|
llm-speciation: ## LLM-tier speciation: conflict cliff (replace + de-confounded add) and duration null
|
|
uv run python -m llm.experiment configs/llm/speciation.yaml
|
|
uv run python -m llm.experiment configs/llm/speciation_add.yaml
|
|
|
|
llm-epistasis: ## the controlled predictive test (feeds paper Fig. 3C-D) + its robust statistics
|
|
uv run python -m llm.experiment configs/llm/epistasis.yaml
|
|
uv run python -m llm.experiment configs/llm/epistasis_compat.yaml
|
|
uv run python figures/stats_llm_epistasis.py
|
|
|
|
|
|
figures: ## regenerate per-experiment figures from committed results (pure; no re-simulation)
|
|
for p in figures/plot_*.py; do MPLBACKEND=Agg uv run python "$$p"; done
|
|
|
|
paper-figures: ## regenerate the manuscript figures (Fig. 1-5) and rebuild the PDF bodies
|
|
MPLBACKEND=Agg uv run python paper/manuscript/make_figs.py
|
|
uv run python paper/manuscript/build.py
|
|
uv run python paper/manuscript/build.py si
|
|
|
|
paper: paper-figures ## figures + compile both PDFs (needs tectonic)
|
|
cd paper/manuscript && tectonic main.tex && tectonic si.tex
|
|
uv run python paper/manuscript/build_lay_legends.py && cd paper/manuscript && tectonic figure_legends_for_students.tex
|
|
|
|
env-notebooks: ## add Jupyter for the walkthrough notebooks
|
|
uv sync --extra dev --extra notebooks
|
|
|
|
notebooks: ## execute every notebook end-to-end (a reproduction check in itself)
|
|
for nb in notebooks/*.ipynb; do uv run jupyter nbconvert --to notebook --execute \
|
|
--inplace --ExecutePreprocessor.timeout=1800 "$$nb"; done
|
|
|
|
clean: ## remove caches and regenerable parquets (keeps committed manifests and figures)
|
|
rm -rf .pytest_cache **/__pycache__
|
|
find results -name 'results.parquet' -delete 2>/dev/null || true # tracked manifests/figures stay
|