Materials for a paper analyzing syphilis diagnostics in Zimbabwe
# Estimating the value of novel syphilis diagnostics in Zimbabwe
Agent-based model analysis of syphilis diagnostic scenarios using STIsim.
## Quick start
```bash
# 1. Calibrate (2,000 Optuna trials, ~hours on HPC)
python run_calibrations.py
# 2. Run multi-sim with all surviving calibrated parameter sets (~20 min)
python run_msim.py
# 3. Run diagnostic scenarios (6 scenarios × all pars, ~15 min)
python run_scenarios.py
# 4. Generate all figures
python plot_fig1_epi.py # Fig 1: Syphilis & HIV epidemiology
python plot_fig2_treatment.py # Fig 2: Care-seeking cascades + Fig 3: Treatment outcomes
python plot_fig4_scenarios.py # Fig 4: Scenario comparison (6 panels) + Fig 5: Heatmaps
python plot_figs2_network.py # Fig S2: Network structure (supplementary)
python plot_figs3_calibration.py # Fig S3: HIV calibration (supplementary)
```
## Pipeline
| Step | Script | Output | Time |
|------|--------|--------|------|
| Calibrate | `run_calibrations.py` | `results/zimbabwe_pars_all.df` | Hours (HPC) |
| Multi-sim | `run_msim.py` | `results/zimbabwe_calib_stats_all.df`, `results/sw_prev_df.df` | ~20 min |
| Scenarios | `run_scenarios.py` | `results/treatment_outcomes_{scenario}.df` | ~15 min |
Notes:
- `run_msim.py` replays each calibrated parameter set with its stored `rand_seed`, ensuring exact reproducibility across the pipeline.
- `run_scenarios.py` runs 6 scenarios: `soc`, `gud`, `anc`, `kp`, `plhiv`, `both`.
- To add new analyzer results, rerun `run_msim.py` — no recalibration needed.
## Scenarios
| Scenario | Description |
|----------|-------------|
| `soc` | Standard of care (syndromic management throughout) |
| `gud` | GUD POC *T. pallidum* detection test |
| `anc` | ANC POC NT active infection diagnostic (confirmatory) |
| `kp` | KP dual RDT + POC NT active infection diagnostic (confirmatory) |
| `plhiv` | PLHIV dual RDT + POC NT active infection diagnostic (confirmatory) |
| `both` | All four diagnostic use cases active simultaneously …