DPP-4 pIC50 β LTN (tuned)
A Logic Tensor Network (LTN) regression model predicting DPP-4 pIC50
from molecular structure. The deployed weights are the tuning winner
b256 of a 7-configuration search β the evaluated artifact, trained on
the 80% training split only (8,068 rows), best-validation snapshot,
FDA-12 gliptins excluded from training.
Performance (this model)
| Split | RMSE | MAE | RΒ² |
|---|---|---|---|
| Validation (n=1,009) | 0.3907 | 0.1767 | 0.9053 |
| Test (n=1,009) | 0.4457 | 0.1870 | 0.8739 |
| FDA-12 external vs wet-lab (n=11) | 0.8348 | 0.6498 | β |
Derived classification (paper scheme, from predicted pIC50), test: accuracy 0.9007 Β· F1 macro 0.8923 Β· MCC 0.7866 Β· ROC-AUC macro 0.9948. ExtraTrees comparison: test RMSE 0.4449 Β· FDA wet-lab RMSE 0.9637 β the LTN ties it on the internal test and is clearly better on the FDA drugs.
Why not a full-data retrain? Retraining this configuration on all 10,097 rows (curated set + FDA-12) was attempted three times with stability fixes (gradient clipping 1.0; learning rate halved to 5e-5); all three runs diverged mid-training (epochs 49 / 68 / 25) and produced no usable weights. The evaluated tuned model is therefore the deployed one β its scores above are measured, not fit checks.
Model
- Architecture: Keras MLP 768-384-192 (ELU) β 1, trained inside an LTN (equality predicate 1/(1+0.5βaβbβ), Forall pMeanError p=2, loss 1βsat), Adam lr 1e-4, batch 256, seed 42, 85-epoch budget with best-val snapshot.
- Features: 4,608 binary fingerprints β Morgan/ECFP4 (r=2) 1024 + RDKit path fingerprint 1024 + Morgan 512 + Morgan 2048. No standardisation.
- Weights are raw Keras arrays (w0..w7) in
.npz;infer.pyrebuilds the network with TensorFlow, and a NumPy-only forward pass reproduces the predictions to <1e-5 (that is how the web app serves this model).
Data
10,085 compounds stacked from ChEMBL, BindingDB, PubChem, the ChEMBL-2024 set and DTC; censored IC50 β₯ 100,000 nM dropped; duplicate SMILES resolved by median (conflicts > 1 log dropped). Split 80/10/10, seed 42, stratified by pIC50 band, FDA-12 excluded from all splits.
Caveat: curation deduplicated by SMILES string; the 10,085 strings are 7,327 unique canonical compounds, so internal scores may be mildly optimistic. The tuning was run on this set deliberately, for comparability with the project's other models.
Usage
pip install -r requirements.txt
python infer.py "Cn1c(=O)cc(N2CCC[C@@H](N)C2)n(Cc2ccccc2C#N)c1=O"
# Alogliptin β predicted pIC50 7.74
Files
ltn_model.npz+ltn_config.jsonβ tuned weights + configmetrics_ltn.csvβ validation/test metrics Β·ltn_fda12.csvβ FDA-12 predictions vs wet-lab valuesinfer.pyβ standalone inference Β·train_ltn_dpp4.pyβ the tuning training script (provenance)