136 lines
3.9 KiB
Markdown
136 lines
3.9 KiB
Markdown
# renunney
|
|
|
|
Working repository for replication and reanalysis of Leonard Nunney's 2003
|
|
cost-of-substitution simulations.
|
|
|
|
## Biological Question
|
|
|
|
Nunney's paper asks how rapidly an adapting population can track a moving
|
|
environment before extinction becomes likely. In this model:
|
|
|
|
- the selective optimum moves steadily through time,
|
|
- adaptation requires repeated allelic substitutions across one or more loci,
|
|
- population growth is density-dependent,
|
|
- offspring survival falls as genotypes lag behind the moving optimum,
|
|
- and "cost of substitution" is summarized by the smallest environmental-change
|
|
interval `T` that still allows persistence.
|
|
|
|
Smaller `T` means faster environmental change and a harder adaptive problem.
|
|
|
|
## Two Approaches
|
|
|
|
This project treats the problem in two separate ways.
|
|
|
|
Track 1: Nunney-faithful replication
|
|
|
|
- reconstruct the published simulation and threshold heuristic as closely as
|
|
possible,
|
|
- preserve historically relevant assumptions even when they are inefficient or
|
|
awkward,
|
|
- and use that result as the baseline for replication and criticism.
|
|
|
|
Track 2: modern replacement
|
|
|
|
- build a cleaner and faster simulator around the same biological question,
|
|
- define threshold explicitly rather than through Nunney's heuristic,
|
|
- and use a more performant implementation path, likely including Rust.
|
|
|
|
The current repo is centered on Track 1, with orchestration intended to support
|
|
both tracks later.
|
|
|
|
## Nunney's Approach
|
|
|
|
The paper-level model combines four pieces:
|
|
|
|
- constant environmental change,
|
|
- genotype survival `w_i` as a function of distance from the moving optimum,
|
|
- density-dependent female fecundity `f`,
|
|
- and Mendelian transmission with mutation.
|
|
|
|
The published threshold procedure is heuristic rather than inferential: Nunney
|
|
searches for the smallest `T` with no extinctions in 20 runs, then checks
|
|
nearby larger values. That historical rule is preserved in Track 1 because it
|
|
is part of the claimed result structure.
|
|
|
|
## This Repo's Approach
|
|
|
|
`renunney` turns that work into a clean, testable stack:
|
|
|
|
- local Track 1 simulation kernel,
|
|
- local threshold/search layer,
|
|
- local analysis, reporting, extinction-dataset, and fitting layers,
|
|
- local orchestration CLI and SQLite job registry,
|
|
- local paper-scale Figure 1 configs,
|
|
- and a Makefile for common operational tasks.
|
|
|
|
The repo was bootstrapped from earlier work in
|
|
[`../collaborations/to_ptbc/evc/cost_of_substitution`](/mnt/CIFS/pengolodh/Docs/Projects/collaborations/to_ptbc/evc/cost_of_substitution),
|
|
which remains useful as provenance and historical context, but the Track 1
|
|
runtime now lives in `renunney`.
|
|
|
|
## Key Docs
|
|
|
|
- [docs/MIGRATION.md](/mnt/CIFS/pengolodh/Docs/Projects/renunney/docs/MIGRATION.md)
|
|
- [docs/WORKFLOW.md](/mnt/CIFS/pengolodh/Docs/Projects/renunney/docs/WORKFLOW.md)
|
|
- [docs/NUNNEY_ANALYSIS.md](/mnt/CIFS/pengolodh/Docs/Projects/renunney/docs/NUNNEY_ANALYSIS.md)
|
|
|
|
## Layout
|
|
|
|
- `docs/`
|
|
project, migration, and paper-analysis notes
|
|
- `config/`
|
|
configuration templates and paper-scale treatment configs
|
|
- `runs/state/`
|
|
SQLite registries and persistent orchestration state
|
|
- `runs/results/`
|
|
result artifacts collected by orchestration
|
|
- `runs/scratch/`
|
|
local worker scratch and cache files
|
|
- `src/renunney/`
|
|
in-repo Python package
|
|
- `scripts/`
|
|
local CLI entrypoints
|
|
- `tests/`
|
|
local verification
|
|
|
|
## Start
|
|
|
|
Initialize the local run directories and SQLite registry:
|
|
|
|
```bash
|
|
make init
|
|
```
|
|
|
|
Run one local Track 1 simulation:
|
|
|
|
```bash
|
|
make track1-sim-smoke
|
|
```
|
|
|
|
Submit a paper-scale Figure 1 treatment:
|
|
|
|
```bash
|
|
make submit-figure1-m10
|
|
```
|
|
|
|
Run one worker loop locally:
|
|
|
|
```bash
|
|
make run-loop
|
|
```
|
|
|
|
Collate completed Figure 1 jobs:
|
|
|
|
```bash
|
|
make collate-figure1
|
|
```
|
|
|
|
## Status
|
|
|
|
The Track 1 runtime and orchestration stack are now local to `renunney`. The
|
|
next major step is no longer migration of Track 1 code; it is either:
|
|
|
|
- hardening multi-host orchestration,
|
|
- organizing publication-quality replication outputs,
|
|
- or starting the Rust-backed Track 2 path.
|