Infection susceptibility and severity in the UK Biobank proteome
Abstract
Infection susceptibility and severity in the UK Biobank proteome Analysis notebook accompanying "The Frailty Proteome Predicts Infection Admission,\\but Only Weakly Predicts Survival" (Jacobs). It reproduces every number in the manuscript from the inputs described below and writes all exports to ./infect_out/. What it does For six hospital-coded infections it builds a three-axis structure and models the first two: axis definition denominator acquisition first hospitalised episode after baseline whole subcohort severity given infection death within 90 days of that episode the infected only infection-cause mortality death with the infection as primary cause whole subcohort Roots: PNE (J12–J18), FLU (J09–J11), SEP (A40–A41), UTI (N10, N13.6, N30.0, N39.0), GE (A00–A09 excl. A04.7), LRTI (J20–J22), COV (U07.1–U07.2), and a pooled endpoint over all six. Severity endpoints are named sev ; the severity denominator is the infected cohort, never the population. Stages schema audit — establishes which fields exist before anything uses them cohort, Olink matrix, HES episode table, xMM composites subcohort vs full-cohort event rates (representativeness check) severity construction and explicit denominators acquisition models, out-of-fold scores severity models by feature block, with paired ΔC* against demographics inverse-probability-of-admission sensitivity portable eight-feature models, decision curves Method notes Feature selection runs inside each outer fold; Platt recalibration is fitted on an inner split of the training rows only. Reported: nested C* (out-of-fold), apparent C* (selection and fitting on all data), their difference as optimism, Brier, calibration intercept/slope/ICI, and 500-replicate bootstrap intervals. Block comparisons use the paired bootstrap of ΔC* on the same participants; marginal intervals for two models fitted in the same people overlap far more than their difference warrants. Conditioning on admission conditions on a collider. Severity models are therefore also adjusted for the out-of-fold acquisition score and re-estimated under inverse-probability-of-admission weighting; agreement between the three is the check that no correction is generating the result. xMM composites are rebuilt from published loadings (XMM_COEF), as loading-weighted sums of z-scored components, with weights renormalised over available components and a composite withheld below 60% of its loading mass. This differs from the risk engine's own construction: missing-value handling and output scaling are not identical, so values are not numerically interchangeable with engine output, though rank-based statistics are unaffected. Data manifest The inputs are UK Biobank fields; the data cannot be redistributed and are available to approved researchers at https://www.ukbiobank.ac.uk. master.parquet — one row per participant: eid; sex (p31); baseline assessment date (p53_i0); age at recruitment (p21022); baseline biometry and clinical chemistry columns; and the xMM component variables listed in XMM_COEF. Repeat-visit instances (*_v1, *_v2, …) are excluded by the notebook. olink.parquet — eid plus one column per Olink Explore 3072 protein (NPX, baseline). hes_episodes.parquet — eid; p41270 (JSON array of ICD-10 diagnosis codes per participant); p41280_a0 … p41280_aN (episode date for array position N); p40000 (date of death); p40001(primary cause of death). Diagnosis codes are paired positionally with the date columns; participants whose code and date counts disagree are dropped rather than matched by assumption, and the drop rate is printed. coefficient_matrix.csv — rows with layer == 'xMM', giving the loading of each component variable on each composite. Reproducibility Seed 42 throughout; censor date 2023-10-31; severity window 90 days. Runtime is roughly 10 minutes, dominated by the full-cohort episode table in Stage 2 and the bootstrap intervals in Stages 5 and 7. Every stage prints its own timing and counts. Results of record Produced by this notebook on the analysis extract (subcohort n = 52,997): endpoint events / at risk nested C* (95% CI) calibration slope PNE acquisition 3,812 / 52,523 0.758 (0.750–0.765) 1.00 SEP acquisition 1,989 / 52,821 0.729 (0.718–0.740) 1.00 COV acquisition 1,036 / 52,997 0.710 (0.694–0.725) 1.01 ANY acquisition 8,801 / 50,974 0.721 (0.716–0.727) 1.00 sevANY 1,045 / 8,801 0.605 (0.586–0.623) 1.01 sevCOV 224 / 1,036 0.636 (0.601–0.670) — sevSEP 550 / 1,989 0.585 (0.558–0.612) — sevPNE 835 / 3,812 0.575 (0.552–0.598) — Paired increments of the proteome over demographics on the severity axis: sevANY +0.030 (+0.011, +0.050); sevCOV +0.065 (+0.021, +0.112); sevPNE +0.020 (−0.003, +0.043); sevSEP +0.007 (−0.014, +0.029). Known limitations of this build Severity rests on 90-day death: the extract carries no critical-care fields, no OPCS procedure dates and no discharge dates, so the ordinal severity scale specified in Stage 2 falls back to death latency. xAFF and xSOM cannot be built (touchscreen components absent); xINF is built from six of its eight terms (the proteomic sub-composites xIL1/xIL6 are not in the coefficient matrix). Prodromal (pFF) scores are unavailable in this extract. Influenza severity (24 events) is defined but not estimable. Licence Code released under the MIT Licence. UK Biobank data are not included.