gnn_synth / README.md
andreazhu's picture
Updated imports and dependencies
930c148 verified
|
Raw
History Blame Contribute Delete
1.84 kB
---
license: mit
tags:
- PROTAC
- drug-discovery
- cheminformatics
- regression
- graph-neural-network
- chemprop
library_name: chemprop
pipeline_tag: graph-ml
---
# PROTAC Synthesizability — CheMeleon GNN
A graph neural network that predicts the **heavy-atom-count weighted synthesizability
score** (`hac_weighted_score`) of PROTAC molecules from SMILES. Built on the
[CheMeleon](https://github.com/JacksonBurns/chemeleon) foundation model (a pretrained
D-MPNN) fine-tuned via ChemProp — graph-only, no engineered features.
Nested 5×5 scaffold cross-validation, Optuna tuning. **Mean CV R² = 0.643.**
## Files
- `gnn_v3_final.ckpt` — fine-tuned model checkpoint (weights + target scaler)
- `gnn_v3_hparams.yaml` — hyperparameters
## Usage
Requires the project code: https://github.com/ribesstefano/PROTAC-Synthesizability
Install the package (editable) so `protac_synth` is importable, then:
```python
from protac_synth.models.gnn.model import CheMeleonRegressor
model = CheMeleonRegressor.load("gnn_v3_final") # base path, no extension
smiles = ["O=C(O)c1ccccc1"]
preds = model.predict(smiles) # graph-only: SMILES in, prediction out
```
The GNN is graph-only: it builds the molecular graph internally, so no
fingerprints or descriptors are passed to `predict`.
## Dependencies
The model loads from a torch/ChemProp checkpoint (no `.skops`/scikit-learn), so
loading is sensitive to the **ChemProp / Lightning / torch** versions rather than
scikit-learn. Pin the versions the model was fine-tuned with:
- `chemprop>=2.2.0` (pin the exact training version for reproducible checkpoint loading)
- `lightning`, `torch` — pin to the training environment (checkpoint format is
torch/Lightning-version dependent)
- `rdkit`, `numpy` — pin to the training environment
## License
MIT