PRS Pipeline — Stage 0 Findings
Date: 2026-05-07 Status: Stage 0 complete; falling back to zero-PRS for Track A.
Question being answered
Can we obtain a UKB-shaped sample patient (CSV row + biomarker values + comorbidity PRS scalars) to use as the Track A pipeline burn-in input for build_pdr1_input_csv.py and build_pdr2_input_pickle.py, before Maureen’s genome-wide genotype data arrives?
Sources checked
Local snapshots
| Path | What’s there | Sample patient? |
|---|---|---|
docs/References/PDR1/ | LICENSE, README, code/, figures/, patient_merge.py, preprocessing_utils.py, split_GPKG.py, requirements.txt, Supplementary_Material/ | No |
docs/References/PDR1/Supplementary_Material/ | Baseline_Patient_Characteristics.csv, _Read_Me.txt, supp_clusters/ (PDFs + interactive HTML cluster plots) | No — Baseline_Patient_Characteristics.csv is a 127-line TriNetX cohort aggregate table (ketamine vs antidepressants in the AD validation cohort), not a per-patient feature row. |
docs/References/PDR2/ | LICENSE, README, supplementary.pdf, the paper PDF, reasoning/ (config + script + ultra), split_KG.py, requirements.txt | No |
docs/References/PDR2/.gitignore | Standard Python boilerplate plus *.txt, *.tsv, *.pkl, *.pt | The data formats are explicitly excluded from the repo. |
Live GitHub
github.com/ceragoguztuzun/PrecisionDrugRepurposing— same structure as our local snapshot. README references{patients_data_filepath}.csvas a placeholder; no actual example file. Referencesdata/andtest_data/folders but they aren’t shipped.- The same is true for the PDR2 paper’s repo (it’s the ULTRA fork — code only, no patient pickles).
UK Biobank
- Resource 5202 readme PDF confirms 28 binary disease traits + 25 quantitative traits in the Standard PRS Release, Field IDs in 26200-26285. Pre-computed scoring is not publicly downloadable — the PRS values themselves are access-controlled UKB data. Only trait definitions are public.
Genomicsplc/ukb-pret/src/ukb_pret/data/traits.yaml— full trait code list. No Field-ID mapping in this YAML; it’s just(code, full_name, sex, scale, follow_up_months). The exact code→Field-ID mapping is in UKB Showcase per-trait pages and is not trivially extractable in batch.- The 28 binary disease trait codes (relevant subset for PDR’s PRS slot):
AD, AF, AMD, AST, BC, BD, CAD, CD, CED, CRC, CVD, EOC, HT, ISS, MEL, MS, OP, PC, PD, POAG, PSO, RA, SCZ, SLE, T1D, T2D, UC, VTE. (CRC = “Bowel cancer”; relevant for Maureen.)
Email path (deferred)
The PDR paper authors were already contacted previously, per an internal memory note, re: the original split files. We could append a request for a sample patient pickle to that thread, but per user policy emails require explicit approval — flagged as a follow-up the user can choose to send.
Conclusion
No usable sample patient data is obtainable through automated channels. Falling back to the planned zero-PRS placeholder for Track A:
prs_values = numpy.zeros(len(disease_names))— after PDR2’s z-score normalization, this becomes0everywhere;PersonalizedRepurposingLoss’stanh(weight · prs_values)term becomestanh(0) = 0, contributing nothing to the loss.expr_valuesis real (from Caris WTS viamods_gene_expression).- This makes Track A a controlled baseline: the zero-PRS run is the foundation-model-with-expression-only baseline, against which Track B’s real-PRS run can be A/B’d to measure PRS contribution.
Implications for downstream stages
- Stage 1 (PGS Catalog connector): still needed — once Maureen’s genotypes arrive, we map UKB trait codes (
AD, CRC, T2D, ...) → UMLS CUIs → PGS Catalog scoring files. The trait code list above is our defaultdisease_namesset. PGS Catalog has scoring files for all 28 UKB diseases. - Stage 4 (PDR2 pickle builder):
--source synthetic_zerosbecomes the default invocation for Track A. Generates a pickle with realexpr_values+ zerosprs_values. - Stage 5 (PDR1 CSV builder): emit the CSV with
Standard PRS for alzheimer's disease (AD) = 0andPRS_{CUI} = 0for each comorbidity column. - Stage 6 (Track B): when genotype data arrives, swap the PRS source by re-running the builders with
--source maureen. No code change needed beyond Stages 1-3.
CUI mapping (preliminary, will be finalized in Stage 1)
These are the trait-code → UMLS CUI mappings we’ll use to populate disease_names. UMLS CUIs taken from standard mappings; final list will be cross-checked against GP-KG entity names at Stage 1.
| UKB code | Trait | Likely CUI | In GP-KG? |
|---|---|---|---|
| CRC | Bowel cancer (colorectal) | C1527249 | TBD |
| AD | Alzheimer’s disease | C0002395 | Yes (paper-confirmed) |
| T2D | Type 2 diabetes | C0011860 | TBD |
| CAD | Coronary artery disease | C1956346 | TBD |
| HT | Hypertension | C0020538 | TBD |
| AF | Atrial fibrillation | C0004238 | TBD |
| ISS | Ischaemic stroke | C0948008 | TBD |
| BC | Breast cancer | C0006142 | TBD |
| PC | Prostate cancer | C0376358 | TBD |
| PD | Parkinson’s disease | C0030567 | TBD |
| RA | Rheumatoid arthritis | C0003873 | TBD |
| AST | Asthma | C0004096 | TBD |
| MS | Multiple sclerosis | C0026769 | TBD |
13 entries here = CRC + 12 comorbidities — matches the user’s choice in the planning question (“CRC + ~12 PDR-paper comorbidities”).