Disclaimer: This project implements a heuristic similarity-based approach for predicting ligands of orphan GPCRs. The predictions are hypotheses for experimental testing, not reliable computational predictions. Confidence scores are uncalibrated and severely overestimate actual accuracy (at confidence >0.8, actual accuracy = 0%).
This project applies a metadata-based similarity approach to predict endogenous ligands for 72 orphan G-protein coupled receptors (GPCRs). The approach uses known receptor-ligand binding data from GtoPdb, ChEMBL, and IUPHAR/BPS Guide to PHARMACOLOGY to generate ranked ligand predictions for uncharacterized receptors.
The approach is intentionally simple: it compares receptor metadata (family, G-protein coupling, tissue expression) to find similar receptors and transfer their known ligands. No machine learning models, deep learning, or structural features are used.
deorphanization/
├── README.md # This file
├── requirements.txt # Python dependencies
├── .gitignore # Files to exclude from git
├── build_data.py # Data construction script (GtoPdb, ChEMBL, IUPHAR sources)
│
├── data/ # Input data files
│ ├── raw_data.json # 349 known receptor-ligand pairs
│ ├── orphan_receptor_catalog.json # 72 orphan receptor metadata
│ ├── receptor_classification.json # Receptor family/class annotations
│ └── ligand_classification.json # Ligand class annotations
│
├── math/ # Mathematical framework and analysis
│ ├── implementation.py # v1 implementation (baseline)
│ ├── implementation_fixed.py # v1 with bug fixes
│ ├── implementation_v2.py # v2 with 6 algorithmic improvements (main implementation)
│ └── calibration_fix.py # Calibration analysis (Platt scaling, isotonic regression)
│
├── predictions/ # Prediction generation
│ ├── run_predictions.py # v1 prediction script
│ └── run_predictions_v2.py # v2 prediction script (main)
│
├── validation/ # Validation and analysis
│ ├── calibration.py # Original calibration analysis
│ ├── permutation_test.py # Permutation-based significance testing
│ ├── ablation_study.py # Ablation of individual scoring signals
│ └── run_validation.py # Main validation pipeline
│
├── downstream/ # Downstream analysis
│ ├── map_signaling.py # Signaling cascade mapping
│ ├── addiction_map.json # Addiction pathway connections
│ ├── disease_map.json # Disease connection mapping
│ └── signaling_network.json # Signaling network data
│
├── visualizations/ # Visualization scripts
│ └── generate_figures.py # Figure generation
│
├── research/ # Research notes and analysis
├── review/ # Review documents
├── output/ # Results and reports
│ ├── report.md # Comprehensive research report
│ ├── executive_summary.md # Executive summary
│ ├── limitations.md # Honest limitations assessment (NEW)
│ ├── predictions.json # Raw predictions (v1)
│ ├── predictions_v2.json # Raw predictions (v2)
│ ├── deorphanization_results.json # Final deorphanization results
│ ├── calibration_results.json # Original calibration results
│ ├── calibration_fix_results.json # Calibration fix comparison (NEW)
│ ├── validation_results.json # Validation metrics
│ ├── permutation_results.json # Permutation test results
│ ├── ablation_results.json # Ablation study results
│ ├── per_receptor_results.json # Per-receptor validation results
│ ├── calibration_report.md # Calibration fix report (NEW)
│ ├── platt_scaling_scores.json # Platt-calibrated scores (NEW)
│ ├── isotonic_regression_scores.json # Isotonic-calibrated scores (NEW)
│ └── temperature_scaling_scores.json # Temperature-calibrated scores (NEW)
│
└── visualizations/figures/ # Generated figures (excluded from git)
The approach encodes each receptor and ligand using available metadata and computes a composite similarity score:
- Family match (40% weight): Whether other receptors known to bind a ligand share the same family as the target receptor
- G-protein match (30% weight): Whether other receptors known to bind a ligand share the same G-protein coupling
- KDE affinity (20% weight): Similarity-weighted average binding affinity of a ligand across similar receptors
- Normalized affinity (10% weight): Ligand's average binding affinity as a tiebreaker
- Natural ligand bonus (10% weight): Endogenous ligands receive a small priority boost
- Broad matching (5% weight): Class-level and G-protein-level fallback signals
- Promiscuity penalty: Ligands binding many receptors are downweighted
The final score is a weighted sum:
combined = 0.35*fam + 0.25*gp + 0.20*kde + 0.10*aff_norm + 0.10*natural + 0.05*broad
Important: The "geometric distance," "pharmacophore," and "structural" terms described in the mathematical framework documentation are not implemented. The actual implementation uses only categorical metadata features.
| Metric | Value | Interpretation |
|---|---|---|
| Precision@5 | 10.68% | ~1 in 5 top-5 predictions is correct |
| Recall@10 | 24.14% | ~1 in 4 true ligands recovered in top-10 |
| AUC-ROC | 0.5878 | Modest discriminative ability (0.5 = random) |
| Brier score | 0.1084 | High (uncalibrated) |
| Family | Precision@5 |
|---|---|
| Melanocortin | 26.0% |
| S1P | 22.0% |
| Orexin | 20.0% |
| Free Fatty Acid | 15.0% |
| Serotonergic | 5.9% |
| Histamine | 0.0% |
| Adenosine | 0.0% |
Key pattern: Small, specialized families are predictable; large, promiscuous families are not.
The model is severely overconfident:
| Confidence Threshold | Actual Accuracy |
|---|---|
| > 0.8 | 0.0% |
| > 0.9 | 0.0% |
| > 0.5 | 7.1% |
| > 0.3 | 2.6% |
After Platt scaling calibration:
- ECE: 0.1382 → 0.0032 (97.7% improvement)
- Brier: 0.1084 → 0.0206 (81% improvement)
Calibration makes scores honest but does not improve prediction quality.
The model successfully recovered known ligands for 20/20 partially-deorphanized receptors at class-level or direct match, including:
- GPR32: arachidonic acid (direct match)
- GPR39: zinc (direct match)
- GPR68: beta-hydroxybutyrate (direct match)
- GPR109A: niacin (direct match)
- GPR120: DHA (direct match)
- GPR183: cholesterol derivative (direct match)
- 71/72 orphan receptors have disease connections
- 68/72 have addiction pathway connections
- 36/72 have cancer connections
See output/limitations.md for a comprehensive honest assessment. Key limitations:
- Heuristic approach: This is not a rigorous mathematical model of binding
- Overconfident scores: Raw confidence scores severely overestimate accuracy
- Limited statistical significance: Only ~5/73 receptors show significant predictive signal
- Synthetic features: No actual TM sequence data or structural features used
- Promiscuous ligands: Spiperone and similar ligands inflate predictions across all receptors
- Descriptive math: Theorems describe the implementation, not predict novel behavior
- Small dataset: 349 pairs across 73 receptors is limited for generalization
pip install -r requirements.txt# Generate predictions for orphan receptors
python3 predictions/run_predictions_v2.py
# Run validation (LOOCV)
python3 validation/run_validation.py
# Run calibration analysis
python3 math/calibration_fix.py# Ablation study (remove individual signals)
python3 validation/ablation_study.py
# Permutation significance test
python3 validation/permutation_test.py
# Generate visualizations
python3 visualizations/generate_figures.py# Rebuild raw data from source annotations
python3 build_data.py- GtoPdb (Guide to Pharmacology): Binding affinity data (Ki, IC50, Kd)
- ChEMBL: Ligand-receptor interaction data
- IUPHAR/BPS Guide to PHARMACOLOGY: Receptor classification and annotation
- GPCRdb: GPCR structural and functional annotations
- UniProt: Tissue expression data
All data is literature-reported and publicly available. No proprietary data is used.
If you use this work, please cite:
Deorphanization of 72 Orphan GPCRs Using Metadata-Based Similarity.
Personal research project, 2026.
https://github.com/alexsysctrl/deorphanization
All data files are self-contained in the data/ directory. The complete pipeline can be reproduced by running:
python3 build_data.py
python3 predictions/run_predictions_v2.py
python3 validation/run_validation.py
python3 math/calibration_fix.pyAll random elements are deterministic (no stochastic sampling). Results are fully reproducible.
This is a research project. All code and data are provided for research and educational purposes.