Polygenic risk score (PGS) and machine learning framework for primary open-angle glaucoma prediction in African ancestry cohorts.
# POAG PGS + ML — Analysis Code
**Multimodal Prediction of Primary Open-Angle Glaucoma Using Polygenic Risk Scores and Clinical Features in a High-Risk African Ancestry Cohort**
Yan Zhu, Aude Benigne Ikuzwe Sindikubwabo, Yuki Bradford, et al.
*iScience*, 2026 — Manuscript ISCIENCE-D-26-03991R2
---
## Overview
Python analysis pipeline for POAG risk prediction using:
- Four polygenic risk scores (PGS) matched to African ancestry
- Four ML classifiers (LR, RF, SVM, MLP)
- **5-fold × 20-repeat stratified cross-validation** (5×20 CV; 100 fits per configuration)
- External validation in the Penn Medicine BioBank (PMBB; N = 9,817 AFR)
---
## Repository structure
```
.
├── 01_pgs_standalone.py Figure 2: standalone PGS performance (5×20 CV + PMBB)
├── 02_training_external_validation.py Figure 3: 12-feature-set training + PMBB external validation
├── 03_suspect_enrichment.py Figure 4: clinical enrichment in 1,013 suspects
├── 04_asymmetry_analysis.py Figure 5: inter-eye asymmetry (ΔIOP, ΔCDR) + PMBB
├── 05_shap_calibration.py Fig S3: SHAP feature importance + calibration curves
├── 06_learning_curves_sex_stratified.py Fig S4–S5: learning curves + sex-stratified AUC
├── 07_delta_auc_paired.py Fig S7, Tables S12: paired ΔAUC (DeLong + bootstrap + CV-fold)
├── 08_same_classifier_comparison.py Table S11: within-classifier Base vs Base+PGS AUC
├── 09_pgs_residualized_on_pc.py Table S13: PGS residualized on ancestry PCs (sensitivity)
├── requirements.txt
└── data/
├── README.md Data access instructions
├── poaagg/ Place POAAGG cohort files here
└── pmbb/ Place PMBB external validation files here
```
All Excel output tables are written to `outputs/tables/`
All figures (PNG + PDF) are written to `outputs/figures/`
---
## Setup
```bash
pip install -r requirements.txt
```
Python 3.11 recommended.
---
## Data
Raw data are not publicly available (IR …