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