Therapeutic Targets
Composite scoring framework for prioritizing druggable targets from CellRank lineage drivers
Driver genes identified by CellRank’s lineage analysis are scored against a three-tier composite framework defined in the preregistration. The composite score reflects the full translational distance from a gene’s role in disease trajectory to its tractability as a therapeutic target.
Scoring Architecture
\[ S_\text{composite} = \frac{w_1 \cdot \bar{S}_1 + w_2 \cdot \bar{S}_2 + w_3 \cdot \bar{S}_3}{w_1 + w_2 + w_3} \]
where \(\bar{S}_k\) is the mean feature score within tier \(k\), and weights are locked at \(w_1 = 3\), \(w_2 = 2\), \(w_3 = 1\) (preregistered).
- Tractability score
OpenTargets Platform API — number of modalities with evidence (small molecule, antibody, PROTAC, gene therapy) - Ocular deliverability
Heuristic: 1.0 if secreted/receptor (intravitreal antibody feasible), 0.5 if unknown (AAV feasible), 0.0 if CNS-impermeable
- GWAS evidence
CDKN2B, SIX6, ABCA1, CAV1, TMCO1, PMM2, GAS7 (binary: 0 or 1) - Mendelian evidence
MYOC, OPTN, TBK1, CYP1B1, WDR36, NTF4 (binary: 0 or 1) - Cross-lineage sharing
(n_states − 1) / 3, capped at 1.0 — genes shared across multiple terminal states are more fundamental
- Driver strength
|Spearman r| of gene expression with fate probability (min 0, capped at 1.0) - Progression slope
0.8 if progressive, 0.7 if late, 0.4 if early, 0.5 otherwise — captures window-of-opportunity - Spatial enrichment
1.0 if gene enriched in LISA HH hotspots, 0.5 otherwise
GWAS and Mendelian Gene Evidence
Genes from established glaucoma genetic studies receive automatic Tier 2 binary credit. These are not modified post-hoc — the lists are frozen in the preregistration.
GWAS loci (POAG)
CDKN2BSIX6ABCA1CAV1TMCO1PMM2GAS7
Source: Wiggs et al. 2012; Gharahkhani et al. 2021 (>240 POAG loci; subset with strong functional retinal evidence)
Mendelian glaucoma genes
MYOCOPTNTBK1CYP1B1WDR36NTF4
Source: Fingert 2011; Rezaie et al. 2002
Temporal Class Interpretation
The temporal dynamics category shapes the window-of-opportunity for therapeutic intervention:
| Class | Pattern | Intervention strategy |
|---|---|---|
| Progressive | Monotonically increasing | Broad disease-modifying — target throughout |
| Late | Peak at mid/late, sustained | Established disease — rescue therapy |
| Early | Peak at early, declines | Disease initiation — prophylactic target |
| Transient | Peak at mid, resolves | Potential adaptive response — de-risked |
| Stable | No temporal change | Constitutive function — less disease-specific |
Progressive drivers in the RGC_apoptotic lineage that are also GWAS hits (CDKN2B, CAV1) or tractable (Stat3, Osmr) represent the highest-priority targets: they score in both Tier 2 (genetic evidence) and Tier 3 (high progression slope).
Cross-Lineage Interpretation
The Jaccard similarity matrix shows the overlap between driver gene sets across terminal states. High overlap between two states indicates shared upstream biology — a single target may address multiple disease endpoints.
Example interpretation. If RGC_apoptotic and Muller_reactive share 30% of their top driver genes (Jaccard = 0.30), a target with cross-lineage sharing score of 0.33 receives credit in all three tiers: it addresses the primary endpoint (RGC apoptosis), the gliotic microenvironment (Müller reactivity), and likely the neuroinflammatory component if Microglia_DAM also shares it.
Targets shared across ≥ 3 terminal states get the maximum cross-lineage score and are flagged as pan-state drivers — the most interesting therapeutic candidates because they sit upstream of multiple independent disease endpoints.
Reading the Output File
driver_out/therapeutic_targets.csv contains one row per unique driver gene:
| Column | Type | Description |
|---|---|---|
gene |
string | Gene symbol |
state |
string | Primary terminal state where first identified |
temporal_class |
string | progressive / early / late / transient / stable |
composite_score |
float [0–1] | Final weighted score |
tier1_tractability |
float [0–1] | OpenTargets tractability (normalized) |
tier1_ocular_deliv |
float [0,0.5,1] | Ocular deliverability heuristic |
tier2_gwas |
binary | GWAS locus membership |
tier2_mendelian |
binary | Mendelian gene membership |
tier2_cross_lineage |
float [0–1] | Normalized multi-lineage sharing |
tier3_driver_str |
float [0–1] | |Spearman r| with fate probability |
tier3_slope |
float [0–1] | Temporal progression weight |
tier3_spatial |
float [0–1] | LISA hotspot enrichment |
n_lineages |
int | Number of terminal states where gene is a driver |
spearman_corr |
float | Raw Spearman r (signed) |
pval_adj |
float | BH-adjusted p-value from driver correlation test |
Rows are sorted by composite_score descending. The top 20 rows are the primary result table for the manuscript’s therapeutic target section.
OpenTargets Integration
The pipeline queries the OpenTargets Platform GraphQL API at GLAUCOMA_EFO = "EFO_0000506" (primary open-angle glaucoma).
# Disable for offline runs:
python3 scripts/07_lineage_drivers_and_targets.py \
--adata fate_adata.h5ad \
--outdir ./driver_out \
--no_opentargets # ← uses tractability_score = 0.5 for all genesAPI rate limits. The OpenTargets query runs once per unique driver gene. With 200 top drivers × 4 terminal states = up to 800 unique genes, queries take approximately 5–10 minutes at standard API rates. The query is wrapped in try/except with a 10-second timeout; failed queries return tractability_score = 0.0 and are logged. Re-run with --no_opentargets if the API is unavailable, then manually update scores from the OpenTargets web interface for the top 20 candidates.