Skip to content

Predicting Physical Performance from Genome-Wide Data

I led the analytical side of a large genomic study of military recruits, testing how well genome-wide data can predict physical performance and its response to training.

Problem

Physical performance depends on thousands of genetic variants of very small effect, plus training, nutrition and many other factors. A polygenic score adds those small effects into a single predictor, but its accuracy is easy to overestimate. If the variant weights are estimated on the same individuals used to test the score, the result is leakage and an optimistic number. With ~1,200 participants, the analysis also needed careful quality control and an evaluation scheme that shows how much the accuracy varies, not just a single estimate.

Approach

Quality control. Starting from raw genotyping arrays (Illumina Infinium CoreExome, ~540,000 markers, 1,422 samples), I kept samples and variants with call rate ≥ 99%, removed one individual from each pair of second-degree or closer relatives, and computed principal components to control for population structure. 1,204 individuals (84.7%) passed QC.

Imputation. Imputed the filtered markers to ~3.2 million variants, keeping only those with imputation quality INFO/R² > 0.95.

Polygenic scores. For each of 100 random train/test splits, variant weights were estimated by a genome-wide association study run only on the training individuals, then the score was evaluated on the held-out individuals. I compared classical clumping and thresholding with an elastic net approach that accounts for linkage disequilibrium (LDAK), adjusting for covariates and principal components. The analyses were parallelized with PySpark and Python multiprocessing on a Slurm cluster.

Results

  • 1,204 individuals × ~3.2 million variants after QC and imputation
  • Polygenic scores reached r = 0.056–0.085 with performance phenotypes on held-out individuals (≈ 0.3–0.7% of variance explained), reported as a distribution over 100 splits
  • This is in line with previous studies reporting weak heritability of exercise responsiveness, and gives the team a realistic estimate of what genetic data can predict at this sample size, rather than an inflated one

Solution Overview

Raw arrays (1,422 samples × ~540K markers)
    → QC: call rate ≥ 99%, relatedness, PCA (1,204 individuals)
    → Imputation (~3.2M variants, INFO > 0.95)
    → 100 random train/test splits:
        → GWAS on the training set only
        → Polygenic scores: clumping & thresholding / LDAK elastic net
        → Evaluation on held-out individuals
    → Distribution of prediction accuracy

Tech Stack

  • Python, Bash, AWK
  • PLINK, LDAK
  • PySpark, Python multiprocessing
  • Slurm, Singularity/Apptainer
  • PCA, linear models with covariate adjustment

View the code on GitHub

  • Let's have a virtual coffee together!


    Want to see if we're a match? Let's have a chat and find out. Schedule a free 30-minute session to discuss your data challenges and explore how we can work together.

    Book Free Intro Call