Views
No views yet
| Cohort | Platform | Proteins | N (persons) | Teacher R² | Student R² | Gap (mean ± sd) |
|---|---|---|---|---|---|---|
| MARS | Olink (Target 96 Inflammation) | 92 | 642 (642) | 0.348 | 0.346 | 0.002 ± 0.014 |
predict.py standalone inference script
meta.json feature order, y-scaler, arch + preproc config
models/
T0001_model.pkl slim model (~4 KB)
T0001_student_tabm.pt TabM† weights (~6 MB) + quantile bins
T0001_student_tabm_preproc.npz median-impute / observed-mask state
results/, *_results.csv aggregate CV metrics summariesT0001 = age_at_visit (chronological age at the visit).predict.py runs the model with only public dependencies:1pip install torch tabm rtdl_num_embeddings numpy pandas
2
3python predict.py --input proteins.csv --output ages.csv--input is a CSV/TSV with one row per sample and one column per protein, named
exactly as in meta.json → feature_name (the 92 Olink OID####_GENE ids).
Column order does not matter; an optional sample_id column is carried through.
Output is sample_id, predicted_age. NaN cells are median-imputed. The script
errors if any required protein is missing and warns about unused input columns.meta.json → feature_name; median-impute and append
observed-mask channels; rebuild the TabM model with piecewise-linear numeric
embeddings and load the weights; average the 5-quantile (trapezoidal-mean) point
estimate over the 32 ensemble members; inverse the y-scaler to recover age.inflammatory-aging-clock/somascan-85.