Figure 6: Replication: carrier life courses in three cohorts¶
Runs locally against the authors' results (CODE). With RUN = False the cells show the current local figures; set RUN = True to regenerate each panel from the script named. No participant data are stored in this notebook; keep outputs cleared before committing (python ../tools/check_no_ids.py).
Panel a+b Life courses in three cohorts, and against matched non-carriers¶
Script: src/aou_pipeline/run_replication_fig6_triplet.sh
Upstream: the launcher runs make_lifecourse_walkthrough_3cohort.py (6a) and aou_pipeline/33_lifecourse_vs_noncarriers.py (6b) with UKB_GP = the triplet atlas; panel b image: aou_pipeline/carrier_qc/figs/figE_lifecourse_vs_noncarriers_triplet.png
Script header (inputs, recipe, outputs)
#!/usr/bin/env bash
# Recompute the gate-dependent REPLICATION and FIG 6 results on the TRIPLET UKB time-varying atlas (2026-10-03).
# Every script reads UKB_GP (default = bar-version reparam_fig3/clinvar_sweep_gp) and suffixes outputs with OUT_SUFFIX,
# so the bar-version CSVs/figures that back the current draft are NOT overwritten.
# 39 AoU recall of UKB gate cells vs chance -> carrier_qc/aou_gate_recall_vs_chance_triplet.csv, figG_*_triplet
# 24 three-cohort gate overlap -> carrier_qc/three_cohort_{gate_overlap,shared_cells}_triplet.csv
# 3c Fig 6a three-cohort life-course stations -> mgb_carrier_pipeline/fig_lifecourse_3cohort_triplet{.png,_stations.csv}
# 33 Fig 6b carriers vs matched non-carriers -> carrier_qc/lifecourse_vs_noncarriers_triplet.csv, figE_*_triplet
# (re-runs 31 on import -> truncation_matched_stations_triplet.csv)
# 34 Supp figF gated vs ungated earliness -> carrier_qc/gated_vs_ungated_earliness_triplet.csv, figF_*_triplet
# NOT covered: the MGB static-atlas panels (make_recall_figure / make_shared_gate_km_figure / make_mgb_main_figure) need a
# triplet clinvar_sweep_static atlas that does not exist yet.
# ENV /opt/miniconda3/envs/new_env_pyro2/bin/python. PHI: aggregates only; carrier/station rows stay in local CSVs.