| --- |
| 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 |