AMDRisk / README.md
Hou
add src
a7c73c5
|
Raw
History Blame Contribute Delete
2.9 kB

A newer version of the Gradio SDK is available: 6.19.0

Upgrade
metadata
title: AMDRisk
emoji: 📉
colorFrom: indigo
colorTo: pink
sdk: gradio
sdk_version: 6.14.0
python_version: '3.13'
app_file: app.py
pinned: false
license: mit
short_description: Predicting risk of late AMD using Deep Learning

AMD Risk Prediction

PyTorch reimplementation of the DeepSeeNet-based AMD progression risk framework from Peng et al., npj Digital Medicine 2020, “Predicting risk of late age-related macular degeneration using deep learning.”

  • Extracts DeepSeeNet hidden features from drusen and pigment abnormality models.
  • Fits Cox proportional hazards models using image-derived features plus age and smoking status.

Feature Extraction

  • Input: paired baseline CFPs

    • LE_PATHNAME
    • RE_PATHNAME
  • Models used:

    • deepseenet/weights/drus.pt
    • deepseenet/weights/pig.pt
  • Image preprocessing:

    • RGB conversion
    • validation transform from deepseenet/augmentations.py
    • default input size: 1024 × 1024
  • Feature source:

    • penultimate layer of each DeepSeeNet classifier
    • final linear layer input captured by forward hook
  • Feature layout:

LE_DRUS_000 ... LE_DRUS_127
RE_DRUS_000 ... RE_DRUS_127
LE_PIG_000  ... LE_PIG_127
RE_PIG_000  ... RE_PIG_127
  • Total feature dimension:
128 × 2 models × 2 eyes = 512 features / patient
  • Output:
data/areds1_deepseenet_features.npz
  • Stored arrays:
    • features: (N, 512)
    • patids: (N,)
    • feature_names: (512,)

Cox Model Training

  • Survival labels from endpoint-specific JSON files:

    • Status_late_amd
    • Status_anyga
    • Status_nv
  • Time-to-event column:

    • Survival_in_years
  • Predefined fold split:

    • train: folds 3, 4, 5, 6, 7, 8, 9
    • validation: fold 2
    • test: folds 0, 1
  • Stage 1 baseline:

    • structured grading features only
LE_DRUS
RE_DRUS
LE_PIG
RE_PIG
age
smkever
  • Stage 2 DeepSeeNet features:

    • selected hidden features from 512-dimensional feature vector
    • plus age
    • plus smkever
  • Preprocessing:

    • low-variance feature filtering
    • train-only StandardScaler
    • same scaler applied to validation/test
  • Cox model:

    • lifelines.CoxPHFitter
    • L2 penalization
    • default penalizer: 0.01
  • Feature-selection tweaks:

    • global top-k selection

      • rank features by univariate train-set concordance
      • examples: --top-k 8, --top-k 16
    • block-balanced top-k selection

      • select top-k features separately from each block:
LE_DRUS_*
RE_DRUS_*
LE_PIG_*
RE_PIG_*
  • Block-balanced example:
--top-k-per-block 4

4 LE_DRUS features
4 RE_DRUS features
4 LE_PIG features
4 RE_PIG features
+ age
+ smkever
= 18 total features
  • Rationale:

    • avoids one highly correlated feature block dominating global top-k
    • improves stability of Cox fitting
    • closer in spirit to grouped/correlation-aware feature selection