Rewrite README
Browse files- CupOFMoCA-PDC/README.md +161 -152
- CupOFMoCA-PROTAC/README.md +204 -79
- README.md +179 -27
CupOFMoCA-PDC/README.md
CHANGED
|
@@ -1,129 +1,71 @@
|
|
| 1 |
-
-
|
| 2 |
-
license: apache-2.0
|
| 3 |
-
library_name: pytorch
|
| 4 |
-
tags:
|
| 5 |
-
- chemistry
|
| 6 |
-
- drug-discovery
|
| 7 |
-
- molecular-generation
|
| 8 |
-
- peptide
|
| 9 |
-
- discrete-flow
|
| 10 |
-
- peptide-drug-conjugate
|
| 11 |
-
---
|
| 12 |
-
|
| 13 |
-
# CupOFMoCA
|
| 14 |
-
|
| 15 |
-
Code and PDC model artifacts for **CupOFMoCA: Coupled Objective-Guided Discrete Flows for
|
| 16 |
-
Molecular Conjugate Assembly** (NeurIPS 2026).
|
| 17 |
-
|
| 18 |
-
CupOFMoCA performs coupled, objective-guided discrete-flow generation while enforcing chemical
|
| 19 |
-
assembly constraints. This release supports the paper's peptide-drug conjugate (PDC) experiments
|
| 20 |
-
across SMILES, natural amino-acid (AA), and unnatural amino-acid (UAA) representations.
|
| 21 |
-
|
| 22 |
-
## Model overview
|
| 23 |
-
|
| 24 |
-
CupOFMoCA is a research pipeline for generating peptide-drug conjugate candidates. It couples a
|
| 25 |
-
pretrained discrete-flow generator with property guidance and conjugation-validity checks during
|
| 26 |
-
sampling. This repository contains three generator checkpoints and the property scorers used by the
|
| 27 |
-
released PDC pipeline:
|
| 28 |
-
|
| 29 |
-
| Checkpoint | Representation | Role |
|
| 30 |
-
|---|---|---|
|
| 31 |
-
| `SMILESReDi_base.ckpt` | peptide SMILES | pretrained SMILES discrete-flow generator |
|
| 32 |
-
| `PepReDi_base.pt` | canonical amino acids | pretrained AA discrete-flow generator |
|
| 33 |
-
| `UAAReDi_base.pt` | extended amino-acid vocabulary | pretrained UAA discrete-flow generator |
|
| 34 |
-
|
| 35 |
-
The checkpoints are loaded by the repository's custom PyTorch code; this is not a Transformers
|
| 36 |
-
pipeline and does not provide a hosted-inference widget.
|
| 37 |
-
|
| 38 |
-
### Intended uses
|
| 39 |
-
|
| 40 |
-
- Reproduce and inspect the paper's PDC generation experiments.
|
| 41 |
-
- Generate computational PDC candidates for research and method development.
|
| 42 |
-
- Extend or compare constrained, multi-objective molecular-generation methods.
|
| 43 |
-
|
| 44 |
-
The release is not intended for clinical decisions, direct therapeutic use, or as a substitute for
|
| 45 |
-
chemical synthesis, experimental validation, toxicology, or safety assessment.
|
| 46 |
-
|
| 47 |
-
### Training data
|
| 48 |
-
|
| 49 |
-
- **AA-PepReDi:** peptides from PepNN and BioLip2, together with 6--49-residue sequences from
|
| 50 |
-
PPIRef, using an 80:10:10 train/validation/test split.
|
| 51 |
-
- **UAA-PepReDi:** 150,000 synthetic sequences constructed with `p2smi` across combinations of
|
| 52 |
-
non-canonical and D-amino-acid composition, using an 80:10:10 split.
|
| 53 |
-
- **SMILESReDi:** the released pretrained SMILESReDi weights are used without additional
|
| 54 |
-
CupOFMoCA fine-tuning.
|
| 55 |
-
|
| 56 |
-
Architecture, optimization, data construction, and scorer details are reported in Appendix E of
|
| 57 |
-
the paper. Training datasets are not redistributed in this repository.
|
| 58 |
|
| 59 |
-
|
|
|
|
|
|
|
| 60 |
|
| 61 |
-
The
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
|
| 66 |
-
|
|
|
|
|
|
|
| 67 |
|
| 68 |
-
|
| 69 |
-
compounds or guarantees of efficacy, synthesizability, toxicity, or safety.
|
| 70 |
-
- The released configurations cover three receptor targets and fixed target-specific conjugation
|
| 71 |
-
chemistries; performance outside this scope has not been established.
|
| 72 |
-
- The release contains the paper's PDC stack only. Its PROTAC experiments require separate code and
|
| 73 |
-
artifacts.
|
| 74 |
-
- Results can vary with hardware, CUDA/PyTorch versions, and revisions of models downloaded at
|
| 75 |
-
runtime.
|
| 76 |
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
``
|
| 80 |
-
checkpoints/
|
| 81 |
-
|
| 82 |
-
docs/ model-artifact details and checksums
|
| 83 |
-
scripts/run_experiment.py unified experiment runner
|
| 84 |
-
scripts/verify_release.py release integrity checker
|
| 85 |
-
smiles/
|
| 86 |
-
generation/ generation entry points
|
| 87 |
-
evaluation/ metrics and analyzers
|
| 88 |
-
models/ ReDi model and data code
|
| 89 |
-
conjugation/ PDC assembly builders
|
| 90 |
-
scoring/ property scorers
|
| 91 |
-
smiles_tokenizer/ tokenizer code and vocabulary
|
| 92 |
-
third_party/ peptide-to-SMILES conversion helper
|
| 93 |
-
```
|
| 94 |
|
| 95 |
-
The release
|
| 96 |
-
|
|
|
|
| 97 |
|
| 98 |
-
##
|
| 99 |
|
| 100 |
-
|
| 101 |
-
CUDA 12.1.
|
| 102 |
|
| 103 |
```bash
|
| 104 |
conda env create -f environment.yml
|
| 105 |
conda activate cupofmoca
|
|
|
|
| 106 |
```
|
| 107 |
|
| 108 |
-
|
| 109 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
|
| 111 |
```bash
|
| 112 |
pip install -r requirements.txt
|
| 113 |
```
|
| 114 |
|
| 115 |
-
|
| 116 |
-
`aaronfeller/PeptideCLM-23M-all` from Hugging Face. Set `HF_HOME` to a persistent cache if needed.
|
| 117 |
|
| 118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
|
| 120 |
-
``
|
| 121 |
-
|
| 122 |
-
|
|
|
|
| 123 |
|
| 124 |
-
##
|
| 125 |
|
| 126 |
-
|
|
|
|
|
|
|
| 127 |
|
| 128 |
```bash
|
| 129 |
python scripts/run_experiment.py \
|
|
@@ -134,7 +76,7 @@ python scripts/run_experiment.py \
|
|
| 134 |
--dry-run
|
| 135 |
```
|
| 136 |
|
| 137 |
-
|
| 138 |
|
| 139 |
```bash
|
| 140 |
python scripts/run_experiment.py \
|
|
@@ -144,83 +86,150 @@ python scripts/run_experiment.py \
|
|
| 144 |
--target NRP1
|
| 145 |
```
|
| 146 |
|
| 147 |
-
|
| 148 |
|
| 149 |
```bash
|
| 150 |
python scripts/run_experiment.py \
|
| 151 |
-
--representation aa
|
|
|
|
|
|
|
|
|
|
| 152 |
--num-candidates 1
|
| 153 |
```
|
| 154 |
|
| 155 |
-
|
| 156 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
|
| 158 |
```bash
|
| 159 |
python scripts/run_experiment.py \
|
| 160 |
-
--representation smiles
|
|
|
|
|
|
|
|
|
|
| 161 |
-- --top_k 100
|
| 162 |
```
|
| 163 |
|
| 164 |
-
|
| 165 |
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
|
| 172 |
-
|
| 173 |
-
objective weights `[1, 1]`, and acceptance sampling with beta 50 for CupOFMoCA. The machine-readable
|
| 174 |
-
configuration is in `configs/paper.json`; target sequences are in `configs/targets.fasta`.
|
| 175 |
|
| 176 |
-
|
|
|
|
| 177 |
|
| 178 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 179 |
|
| 180 |
-
``
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
staged.py cupofmoca_staged.py
|
| 185 |
-
staged_aa.py cupofmoca_staged_aa.py
|
| 186 |
-
staged_uaa.py cupofmoca_staged_uaa.py
|
| 187 |
```
|
| 188 |
|
| 189 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
|
| 191 |
```bash
|
| 192 |
-
python
|
|
|
|
| 193 |
```
|
| 194 |
|
| 195 |
-
|
| 196 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 197 |
|
| 198 |
-
|
|
|
|
|
|
|
| 199 |
|
| 200 |
-
The
|
| 201 |
-
|
| 202 |
-
|
| 203 |
|
| 204 |
-
|
| 205 |
-
bundled SMILES-input scorer (`--affinity_type smiles`).
|
| 206 |
|
| 207 |
-
|
| 208 |
-
|
| 209 |
|
| 210 |
-
|
| 211 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 212 |
|
| 213 |
-
##
|
| 214 |
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 221 |
|
| 222 |
-
##
|
| 223 |
|
| 224 |
-
Citation metadata is
|
| 225 |
-
|
| 226 |
-
|
|
|
|
| 1 |
+
# CupOFMoCA for peptide-drug conjugates
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
+
This folder contains the PDC code, model weights, property scorers, target sequences, and
|
| 4 |
+
paper configurations for **CupOFMoCA: Coupled Objective-Guided Discrete Flows for
|
| 5 |
+
Molecular Conjugate Assembly**.
|
| 6 |
|
| 7 |
+
The PDC workflow generates a peptide carrier and assembles it with a fixed payload through
|
| 8 |
+
a target-specific conjugation builder. CupOFMoCA applies property guidance and chemical
|
| 9 |
+
assembly checks during sampling. The release supports peptide SMILES, natural amino-acid
|
| 10 |
+
tokens, and an extended unnatural amino-acid vocabulary.
|
| 11 |
|
| 12 |
+
The [main README](../README.md) provides the shared project overview and a quickstart for
|
| 13 |
+
both conjugate modalities. This guide covers the PDC representations, targets, commands,
|
| 14 |
+
artifacts, and evaluation code in greater detail.
|
| 15 |
|
| 16 |
+
## Representations and checkpoints
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
+
| Representation | Checkpoint | Generated sequence |
|
| 19 |
+
|---|---|---|
|
| 20 |
+
| SMILES | `checkpoints/SMILESReDi_base.ckpt` | peptide expressed with SMILES tokens |
|
| 21 |
+
| AA | `checkpoints/PepReDi_base.pt` | 10-residue peptide from canonical amino acids |
|
| 22 |
+
| UAA | `checkpoints/UAAReDi_base.pt` | 10-residue peptide from the extended amino-acid vocabulary |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
|
| 24 |
+
The release also includes the binding, hemolysis, non-fouling, and solubility scorers used
|
| 25 |
+
by the PDC generation programs. The AA experiments use the bundled SMILES-input affinity
|
| 26 |
+
scorer through the reported `--affinity_type smiles` setting.
|
| 27 |
|
| 28 |
+
## Installation
|
| 29 |
|
| 30 |
+
Run the following commands from this folder.
|
|
|
|
| 31 |
|
| 32 |
```bash
|
| 33 |
conda env create -f environment.yml
|
| 34 |
conda activate cupofmoca
|
| 35 |
+
python scripts/verify_release.py
|
| 36 |
```
|
| 37 |
|
| 38 |
+
The tested environment uses Python 3.9, PyTorch 2.5.1, and CUDA 12.1. A CUDA GPU is
|
| 39 |
+
recommended for full experiments. The first scoring run downloads
|
| 40 |
+
`facebook/esm2_t33_650M_UR50D` and `aaronfeller/PeptideCLM-23M-all` from Hugging Face.
|
| 41 |
+
Set `HF_HOME` to a persistent cache location when shared or temporary compute nodes are in
|
| 42 |
+
use.
|
| 43 |
+
|
| 44 |
+
The pinned pip packages are also available in `requirements.txt` for environments that
|
| 45 |
+
already provide a compatible PyTorch and CUDA installation.
|
| 46 |
|
| 47 |
```bash
|
| 48 |
pip install -r requirements.txt
|
| 49 |
```
|
| 50 |
|
| 51 |
+
## Target configurations
|
|
|
|
| 52 |
|
| 53 |
+
| Target | Protein | Conjugation builder | Default SMILES length |
|
| 54 |
+
|---|---|---|---|
|
| 55 |
+
| ERBB2 | receptor tyrosine-protein kinase erbB-2 | `SSCpt` | 80 |
|
| 56 |
+
| GNRHR | gonadotropin-releasing hormone receptor | `AoaDau` | 80 |
|
| 57 |
+
| NRP1 | neuropilin-1 | `DSPASN38` | 100 |
|
| 58 |
|
| 59 |
+
The target sequences are stored in `configs/targets.fasta`. The complete paper settings
|
| 60 |
+
are stored in `configs/paper.json`, including seeds 42, 123, and 456; 100 candidates per
|
| 61 |
+
seed; 128 optimization steps; equal objective weights; and the CupOFMoCA acceptance
|
| 62 |
+
parameter of 50.
|
| 63 |
|
| 64 |
+
## Run generation
|
| 65 |
|
| 66 |
+
`scripts/run_experiment.py` provides one interface across representations, sampling
|
| 67 |
+
methods, variants, targets, and seeds. Preview a configured command before model loading
|
| 68 |
+
with `--dry-run`.
|
| 69 |
|
| 70 |
```bash
|
| 71 |
python scripts/run_experiment.py \
|
|
|
|
| 76 |
--dry-run
|
| 77 |
```
|
| 78 |
|
| 79 |
+
Remove `--dry-run` to launch the complete configured experiment.
|
| 80 |
|
| 81 |
```bash
|
| 82 |
python scripts/run_experiment.py \
|
|
|
|
| 86 |
--target NRP1
|
| 87 |
```
|
| 88 |
|
| 89 |
+
A compact smoke run can verify the environment and code path.
|
| 90 |
|
| 91 |
```bash
|
| 92 |
python scripts/run_experiment.py \
|
| 93 |
+
--representation aa \
|
| 94 |
+
--variant baseline \
|
| 95 |
+
--method staged \
|
| 96 |
+
--target ERBB2 \
|
| 97 |
--num-candidates 1
|
| 98 |
```
|
| 99 |
|
| 100 |
+
The principal options are summarized below.
|
| 101 |
+
|
| 102 |
+
| Option | Accepted values | Function |
|
| 103 |
+
|---|---|---|
|
| 104 |
+
| `--representation` | `smiles`, `aa`, `uaa` | selects the generator and tokenization |
|
| 105 |
+
| `--variant` | `baseline`, `cupofmoca` | selects the sampling implementation |
|
| 106 |
+
| `--method` | `guided`, `staged` | selects the guided or staged entry point |
|
| 107 |
+
| `--target` | `ERBB2`, `GNRHR`, `NRP1` | selects the sequence and conjugation builder |
|
| 108 |
+
| `--seeds` | one or more integers | sets the independent generation seeds |
|
| 109 |
+
| `--num-candidates` | positive integer | sets candidates generated per seed |
|
| 110 |
+
| `--gen-len` | positive integer | overrides the representation-specific length |
|
| 111 |
+
| `--force` | flag | replaces an existing output for the selected run |
|
| 112 |
+
|
| 113 |
+
Arguments placed after `--` pass directly to the underlying generation module.
|
| 114 |
|
| 115 |
```bash
|
| 116 |
python scripts/run_experiment.py \
|
| 117 |
+
--representation smiles \
|
| 118 |
+
--variant cupofmoca \
|
| 119 |
+
--method guided \
|
| 120 |
+
--target GNRHR \
|
| 121 |
-- --top_k 100
|
| 122 |
```
|
| 123 |
|
| 124 |
+
Each seed receives a separate output directory with the following organization.
|
| 125 |
|
| 126 |
+
```text
|
| 127 |
+
outputs/
|
| 128 |
+
<target>/
|
| 129 |
+
<representation>/
|
| 130 |
+
<variant>_<method>/
|
| 131 |
+
seed_<seed>/
|
| 132 |
+
molecules.txt
|
| 133 |
+
logs/
|
| 134 |
+
```
|
| 135 |
|
| 136 |
+
## Direct generation modules
|
|
|
|
|
|
|
| 137 |
|
| 138 |
+
The wrapper dispatches to the modules under `smiles/generation/`. Their complete argument
|
| 139 |
+
surfaces remain available for method development and custom experiments.
|
| 140 |
|
| 141 |
+
| Representation | Baseline modules | CupOFMoCA modules |
|
| 142 |
+
|---|---|---|
|
| 143 |
+
| SMILES | `guided.py`, `staged.py` | `cupofmoca_guided.py`, `cupofmoca_staged.py` |
|
| 144 |
+
| AA | `guided_aa.py`, `staged_aa.py` | `cupofmoca_guided_aa.py`, `cupofmoca_staged_aa.py` |
|
| 145 |
+
| UAA | `guided_uaa.py`, `staged_uaa.py` | `cupofmoca_guided_uaa.py`, `cupofmoca_staged_uaa.py` |
|
| 146 |
|
| 147 |
+
Invoke a module with `--help` to inspect its parameters.
|
| 148 |
+
|
| 149 |
+
```bash
|
| 150 |
+
python -m smiles.generation.cupofmoca_guided_uaa --help
|
|
|
|
|
|
|
|
|
|
| 151 |
```
|
| 152 |
|
| 153 |
+
## Evaluation
|
| 154 |
+
|
| 155 |
+
The submitted evaluation routines are `smiles/evaluation/run_metrics.py` and
|
| 156 |
+
`smiles/evaluation/run_metrics_uaa.py`. They measure assembly validity and predicted
|
| 157 |
+
functional properties for the generated PDCs. Use each program's `--help` output to
|
| 158 |
+
select inputs and evaluation settings.
|
| 159 |
|
| 160 |
```bash
|
| 161 |
+
python smiles/evaluation/run_metrics.py --help
|
| 162 |
+
python smiles/evaluation/run_metrics_uaa.py --help
|
| 163 |
```
|
| 164 |
|
| 165 |
+
The paper reports PDC experiments across ERBB2, GNRHR, and NRP1 in the SMILES, AA, and
|
| 166 |
+
UAA representations. Appendix E describes the model architecture, optimization, data
|
| 167 |
+
construction, and scorers. The main paper and supplementary material define the reported
|
| 168 |
+
evaluation protocol and results.
|
| 169 |
+
|
| 170 |
+
## Training sources
|
| 171 |
+
|
| 172 |
+
AA-PepReDi was trained with peptides from PepNN and BioLip2 together with sequences of 6
|
| 173 |
+
to 49 residues from PPIRef. The training, validation, and test proportions were 80, 10,
|
| 174 |
+
and 10 percent.
|
| 175 |
|
| 176 |
+
UAA-PepReDi was trained with 150,000 synthetic sequences generated with `p2smi` across
|
| 177 |
+
non-canonical and D-amino-acid compositions. The training, validation, and test
|
| 178 |
+
proportions were 80, 10, and 10 percent.
|
| 179 |
|
| 180 |
+
The SMILES workflow uses the released pretrained SMILESReDi weights. This repository
|
| 181 |
+
distributes the trained weights and the code required by the paper workflow. Appendix E
|
| 182 |
+
documents construction of the corresponding training collections.
|
| 183 |
|
| 184 |
+
## Artifact verification
|
|
|
|
| 185 |
|
| 186 |
+
The integrity checker validates byte counts, SHA-256 hashes, and portability-sensitive
|
| 187 |
+
source paths.
|
| 188 |
|
| 189 |
+
```bash
|
| 190 |
+
python scripts/verify_release.py
|
| 191 |
+
```
|
| 192 |
+
|
| 193 |
+
`docs/artifacts.json` provides the machine-readable manifest, and
|
| 194 |
+
[`docs/ARTIFACTS.md`](docs/ARTIFACTS.md) lists each artifact's role, size, and checksum.
|
| 195 |
+
The full release occupies approximately 1.9 GB before environment packages and runtime
|
| 196 |
+
model downloads. Git LFS tracks the large `*.pt` and `*.ckpt` files.
|
| 197 |
+
|
| 198 |
+
PyTorch loads the bundled checkpoints through its serialized checkpoint interface. Use
|
| 199 |
+
weights from a trusted release location and verify their hashes before loading.
|
| 200 |
+
|
| 201 |
+
## Research scope
|
| 202 |
+
|
| 203 |
+
The released configuration supports computational PDC generation for three receptor
|
| 204 |
+
targets and their specified conjugation chemistries. All generated structures and
|
| 205 |
+
property scores are computational predictions. Synthesis, biochemical and cellular
|
| 206 |
+
testing, toxicology, and safety assessment establish the experimental properties of any
|
| 207 |
+
candidate selected for further study.
|
| 208 |
+
|
| 209 |
+
Hardware, CUDA, PyTorch, and downloaded model revisions can introduce numerical variation.
|
| 210 |
+
The paper reports experiments on NVIDIA RTX A6000 GPUs with 48 GB of memory. Smaller
|
| 211 |
+
batches can support generation on devices with less memory.
|
| 212 |
|
| 213 |
+
## Repository structure
|
| 214 |
|
| 215 |
+
```text
|
| 216 |
+
checkpoints/ SMILES, AA, and UAA generator weights
|
| 217 |
+
configs/ paper settings and target sequences
|
| 218 |
+
docs/ artifact documentation and checksums
|
| 219 |
+
scripts/run_experiment.py unified experiment runner
|
| 220 |
+
scripts/verify_release.py release integrity checker
|
| 221 |
+
smiles/
|
| 222 |
+
conjugation/ target-specific PDC assembly builders
|
| 223 |
+
evaluation/ metrics and analyzers
|
| 224 |
+
generation/ baseline and CupOFMoCA sampling programs
|
| 225 |
+
models/ ReDi model and data code
|
| 226 |
+
scoring/ property scorers and checkpoints
|
| 227 |
+
smiles_tokenizer/ tokenizer code and vocabulary
|
| 228 |
+
third_party/ peptide-to-SMILES conversion helper
|
| 229 |
+
```
|
| 230 |
|
| 231 |
+
## Citation and license
|
| 232 |
|
| 233 |
+
Citation metadata is available in [`CITATION.cff`](CITATION.cff). The CupOFMoCA code is
|
| 234 |
+
released under Apache-2.0 through `LICENSE` and `NOTICE`. The vendored peptide-to-SMILES
|
| 235 |
+
helper retains its upstream license under `third_party/SMILESToPeptide/`.
|
CupOFMoCA-PROTAC/README.md
CHANGED
|
@@ -1,122 +1,247 @@
|
|
| 1 |
-
# CupOFMoCA
|
| 2 |
|
| 3 |
-
|
| 4 |
-
|
|
|
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
-
|
| 13 |
-
PROTAC-DB linkers. The warhead and E3-ligand subgraphs are held fixed throughout sampling;
|
| 14 |
-
only the linker subgraph is edited.
|
| 15 |
|
| 16 |
-
|
|
| 17 |
|---|---|
|
| 18 |
-
| `checkpoints/protac_linker_finetune/epoch=99-v1.ckpt` | DeFoG graph
|
| 19 |
-
| `src/classifier/protac_linker_clf.pkl` | generic linker validity
|
| 20 |
-
| `src/classifier/
|
|
|
|
|
|
|
| 21 |
|
| 22 |
-
The
|
| 23 |
-
|
| 24 |
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
```bash
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
conda env create -f environment.yml && conda activate defog
|
| 31 |
pip install -e src/defog
|
| 32 |
python scripts/verify_release.py
|
| 33 |
```
|
| 34 |
|
| 35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
```bash
|
| 38 |
cd scripts
|
| 39 |
python generate.py \
|
| 40 |
--checkpoint ../checkpoints/protac_linker_finetune/epoch=99-v1.ckpt \
|
| 41 |
-
--protac_module ErlotinibVHL
|
| 42 |
-
--
|
| 43 |
-
--
|
| 44 |
-
--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
```
|
| 46 |
|
| 47 |
-
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
|
|
|
| 53 |
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
| 55 |
|
| 56 |
-
|
| 57 |
-
- Generate computational PROTAC linker candidates for research and method development.
|
| 58 |
-
- Extend or compare constrained, multi-objective molecular-generation methods.
|
| 59 |
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
|
| 64 |
-
|
|
|
|
|
|
|
|
|
|
| 65 |
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
datasets are not redistributed beyond that derived table.
|
| 70 |
|
| 71 |
-
|
|
|
|
|
|
|
| 72 |
|
| 73 |
-
|
| 74 |
-
and assembly validity, predicted degradation, diversity and training-set similarity. The
|
| 75 |
-
runs behind those tables are in `results/`, documented in `results/README.md`. Predicted
|
| 76 |
-
degradation requires DegradeMaster, which is fetched rather than redistributed — see below.
|
| 77 |
|
| 78 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
|
| 80 |
-
|
| 81 |
-
compounds or guarantees of efficacy, synthesizability, toxicity or safety.
|
| 82 |
-
- The released configurations cover three target/E3 systems with fixed anchor chemistry;
|
| 83 |
-
performance outside this scope has not been established.
|
| 84 |
-
- Predicted degradation comes from a model trained on overlapping PROTAC databases, so it
|
| 85 |
-
is an in-domain evaluation rather than an independent one.
|
| 86 |
-
- `scripts/runs/ablation_egfr.py` sweeps five weight slots, but the current `generate.py`
|
| 87 |
-
exposes three; the Morgan-fingerprint row of the weight ablation is documented by the
|
| 88 |
-
archived outputs in `results/` rather than re-runnable as-is.
|
| 89 |
-
- Results can vary with hardware and CUDA/PyTorch versions.
|
| 90 |
|
| 91 |
-
|
|
|
|
| 92 |
|
| 93 |
```text
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
md/ explicit-solvent molecular dynamics pipeline
|
| 99 |
-
results/ generation outputs behind the reported tables
|
| 100 |
-
scripts/ generate.py, batch_report.py, evaluate_linkers.py,
|
| 101 |
-
fetch_third_party.py, verify_release.py, runs/
|
| 102 |
-
src/protac/ per-target warhead + E3 builders
|
| 103 |
-
src/classifier/ validity gate, analyzer, classifiers
|
| 104 |
-
src/defog/ DeFoG discrete flow model (MIT, see src/defog/LICENSE)
|
| 105 |
```
|
| 106 |
|
| 107 |
-
|
|
|
|
|
|
|
| 108 |
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
|
| 114 |
```bash
|
| 115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
```
|
| 117 |
|
| 118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
|
| 120 |
-
## Citation
|
| 121 |
|
| 122 |
-
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# CupOFMoCA for PROTACs
|
| 2 |
|
| 3 |
+
This folder contains the PROTAC linker-generation code, model weights, validity
|
| 4 |
+
classifiers, target builders, paper configurations, and reported outputs for
|
| 5 |
+
**CupOFMoCA: Coupled Objective-Guided Discrete Flows for Molecular Conjugate Assembly**.
|
| 6 |
|
| 7 |
+
The PROTAC workflow holds the warhead and E3-ligand subgraphs fixed and edits the linker
|
| 8 |
+
subgraph with a DeFoG discrete flow-matching model. CupOFMoCA applies a hard assembly gate
|
| 9 |
+
and three soft property objectives during sampling.
|
| 10 |
|
| 11 |
+
The [main README](../README.md) provides the shared project overview and a quickstart for
|
| 12 |
+
both conjugate modalities. This guide covers the PROTAC targets, objective functions,
|
| 13 |
+
commands, artifacts, evaluation programs, and molecular-dynamics workflow in greater
|
| 14 |
+
detail.
|
| 15 |
|
| 16 |
+
## Model and objectives
|
|
|
|
|
|
|
| 17 |
|
| 18 |
+
| Artifact | Role |
|
| 19 |
|---|---|
|
| 20 |
+
| `checkpoints/protac_linker_finetune/epoch=99-v1.ckpt` | DeFoG graph generator fine-tuned for 100 epochs on 2,070 PROTAC-DB linker graphs |
|
| 21 |
+
| `src/classifier/protac_linker_clf.pkl` | generic linker validity and quality classifier |
|
| 22 |
+
| `src/classifier/protac_linker_clf_ErlotinibVHL.pkl` | EGFR-VHL target-specific classifier |
|
| 23 |
+
| `src/classifier/protac_linker_clf_BRD9VHL.pkl` | BRD9-VHL target-specific classifier |
|
| 24 |
+
| `src/classifier/protac_linker_clf_CDK6CRBN.pkl` | CDK6-CRBN target-specific classifier |
|
| 25 |
|
| 26 |
+
The generator applies the validity classifier as a hard mask before exponential tilting.
|
| 27 |
+
Three soft scores define the weighted objective used for the reported runs.
|
| 28 |
|
| 29 |
+
| Position | Score | Paper weight |
|
| 30 |
+
|---|---|---|
|
| 31 |
+
| 1 | synthetic accessibility | 4.0 |
|
| 32 |
+
| 2 | PROTAC-DB chemotype closeness across logP, molecular weight, rotatable bonds, and ether count | 2.0 |
|
| 33 |
+
| 3 | linker connectivity | 4.0 |
|
| 34 |
+
|
| 35 |
+
The `--weights` option accepts these values in the table order. The hard validity gate
|
| 36 |
+
acts before weighted scoring and sits outside the three-value objective vector.
|
| 37 |
+
|
| 38 |
+
## Installation
|
| 39 |
+
|
| 40 |
+
Run the following commands from this folder.
|
| 41 |
|
| 42 |
```bash
|
| 43 |
+
conda env create -f environment.yml
|
| 44 |
+
conda activate defog
|
|
|
|
| 45 |
pip install -e src/defog
|
| 46 |
python scripts/verify_release.py
|
| 47 |
```
|
| 48 |
|
| 49 |
+
The tested environment uses Python 3.9, PyTorch 2.4.0, and CUDA 12.1. A CUDA GPU is
|
| 50 |
+
recommended for full generation experiments.
|
| 51 |
+
|
| 52 |
+
## Target systems
|
| 53 |
+
|
| 54 |
+
| Reported system | `--protac_module` | Warhead | E3 ligand |
|
| 55 |
+
|---|---|---|---|
|
| 56 |
+
| EGFR-VHL | `ErlotinibVHL` | gefitinib-piperazine from MS39 | VH032 |
|
| 57 |
+
| BRD9-VHL | `BRD9VHL` | BI-7273-piperazine | VH032 |
|
| 58 |
+
| CDK6-CRBN | `CDK6CRBN` | palbociclib-piperazine | pomalidomide |
|
| 59 |
+
|
| 60 |
+
Each module under `src/protac/` defines the fixed molecular fragments, reactive SMARTS,
|
| 61 |
+
and assembly builder for its system.
|
| 62 |
+
|
| 63 |
+
## Run generation
|
| 64 |
+
|
| 65 |
+
The following command generates 100 EGFR-VHL candidates with seed 42 and the reported
|
| 66 |
+
configuration. Run it from the `scripts/` directory.
|
| 67 |
|
| 68 |
```bash
|
| 69 |
cd scripts
|
| 70 |
python generate.py \
|
| 71 |
--checkpoint ../checkpoints/protac_linker_finetune/epoch=99-v1.ckpt \
|
| 72 |
+
--protac_module ErlotinibVHL \
|
| 73 |
+
--fix_termini cooh \
|
| 74 |
+
--fast_scoring \
|
| 75 |
+
--num_samples 100 \
|
| 76 |
+
--num_batches 1 \
|
| 77 |
+
--num_steps 1500 \
|
| 78 |
+
--warmup_steps 100 \
|
| 79 |
+
--weights 4.0 2.0 4.0 \
|
| 80 |
+
--seed 42 \
|
| 81 |
+
--output_file ./protac_linkers_egfrvhl.smi \
|
| 82 |
+
--output_dir ../generation_logs
|
| 83 |
```
|
| 84 |
|
| 85 |
+
Use `BRD9VHL` or `CDK6CRBN` as the module name for the other reported target systems.
|
| 86 |
+
Seeds 42, 123, and 456 reproduce the paper's three generation batches. The complete
|
| 87 |
+
configuration in `configs/paper.json` records 100 candidates per seed, 1,500 sampling
|
| 88 |
+
steps, 100 warmup steps, guidance strength 5.0, top-k 50, weighted position sampling,
|
| 89 |
+
and the objective weights shown above.
|
| 90 |
+
|
| 91 |
+
The generator writes assembled PROTAC SMILES to the selected `--output_file` and detailed
|
| 92 |
+
sampling records under `--output_dir`. Run the help command for the full set of graph,
|
| 93 |
+
guidance, scoring, and output controls.
|
| 94 |
+
|
| 95 |
+
```bash
|
| 96 |
+
python generate.py --help
|
| 97 |
+
```
|
| 98 |
+
|
| 99 |
+
## Evaluate generated candidates
|
| 100 |
+
|
| 101 |
+
`evaluate_linkers.py` assembles each candidate with the selected anchors and computes
|
| 102 |
+
structural validity, linker properties, assembled-PROTAC properties, and available
|
| 103 |
+
degradation scores.
|
| 104 |
+
|
| 105 |
+
```bash
|
| 106 |
+
python evaluate_linkers.py protac_linkers_egfrvhl.smi \
|
| 107 |
+
--protac-module ErlotinibVHL \
|
| 108 |
+
--out protac_linkers_egfrvhl_scored.csv
|
| 109 |
+
```
|
| 110 |
+
|
| 111 |
+
`batch_report.py` compares one or more generation-summary files and can save a figure.
|
| 112 |
+
|
| 113 |
+
```bash
|
| 114 |
+
python batch_report.py ../generation_logs/*_summary.csv \
|
| 115 |
+
--protac-module ErlotinibVHL \
|
| 116 |
+
--out batch_report.png
|
| 117 |
+
```
|
| 118 |
|
| 119 |
+
The paper evaluates assembly validity, predicted degradation, molecular diversity,
|
| 120 |
+
training-set similarity, and physicochemical properties for EGFR-VHL, BRD9-VHL, and
|
| 121 |
+
CDK6-CRBN. [`results/README.md`](results/README.md) maps the archived outputs to the paper
|
| 122 |
+
tables and records the aggregation conventions.
|
| 123 |
|
| 124 |
+
The archived weight-ablation outputs preserve an earlier five-slot representation of the
|
| 125 |
+
objective. The active terms correspond to synthetic accessibility, chemotype closeness,
|
| 126 |
+
and connectivity with weights 4, 2, and 4. The current generator accepts those three live
|
| 127 |
+
weights directly.
|
| 128 |
|
| 129 |
+
## Optional evaluation components
|
|
|
|
|
|
|
| 130 |
|
| 131 |
+
DegradeMaster supplies predicted degradation scores, and EGFR-PROPK supplies the EGFR
|
| 132 |
+
pharmacokinetic columns. The fetch program retrieves both components at the commits used
|
| 133 |
+
for the paper.
|
| 134 |
|
| 135 |
+
```bash
|
| 136 |
+
cd ..
|
| 137 |
+
python scripts/fetch_third_party.py
|
| 138 |
+
```
|
| 139 |
|
| 140 |
+
Generation uses the bundled checkpoint, builders, and classifiers. The optional
|
| 141 |
+
components extend evaluation after generation. Their upstream licensing and pinned
|
| 142 |
+
revisions are recorded in `NOTICE` and `scripts/fetch_third_party.py`.
|
|
|
|
| 143 |
|
| 144 |
+
DegradeMaster uses data derived from overlapping PROTAC databases, which makes its
|
| 145 |
+
reported degradation analysis an in-domain model evaluation. Interpret these scores as
|
| 146 |
+
computational prioritization measurements within that setting.
|
| 147 |
|
| 148 |
+
## Training data
|
|
|
|
|
|
|
|
|
|
| 149 |
|
| 150 |
+
The generator starts from the released DeFoG GuacaMol checkpoint and was fine-tuned on
|
| 151 |
+
2,070 PROTAC-DB linker graphs. The validation and test partitions contain 258 and 260
|
| 152 |
+
graphs, respectively. `data/linker.csv` provides the derived linker table used by this
|
| 153 |
+
release. Appendix H describes the architecture, optimization procedure, data processing,
|
| 154 |
+
and scorers.
|
| 155 |
|
| 156 |
+
## Reported outputs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
|
| 158 |
+
The `results/` directory contains the generation outputs and scored summaries used in the
|
| 159 |
+
paper's PROTAC tables.
|
| 160 |
|
| 161 |
```text
|
| 162 |
+
results/
|
| 163 |
+
ablation_all/ EGFR-VHL constraint, guidance, and fine-tuning studies
|
| 164 |
+
ablation_targets/ BRD9-VHL and CDK6-CRBN target studies
|
| 165 |
+
README.md table mapping and aggregation details
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
```
|
| 167 |
|
| 168 |
+
The reported runs use seeds 42, 123, and 456 with 100 candidates per seed. The archived
|
| 169 |
+
files contain the per-seed results, pooled summaries, and scored per-molecule tables
|
| 170 |
+
described in `results/README.md`.
|
| 171 |
|
| 172 |
+
## Molecular dynamics
|
| 173 |
+
|
| 174 |
+
The `md/` folder contains the explicit-solvent workflow used to analyze generated PROTAC
|
| 175 |
+
conformations in water and chloroform. The analyses cover radius of gyration, three-
|
| 176 |
+
dimensional polar surface area, intramolecular hydrogen bonds, ternary span, and
|
| 177 |
+
conformational-state populations.
|
| 178 |
+
|
| 179 |
+
Create the dedicated environment and inspect the MD guide before launching trajectories.
|
| 180 |
|
| 181 |
```bash
|
| 182 |
+
conda env create -f md/environment_md.yml
|
| 183 |
+
conda activate protacmd
|
| 184 |
+
cd md
|
| 185 |
+
python protac_md.py --solvent chloroform --replicas 3 --prod-ns 50 --gpu 0
|
| 186 |
+
python analyze_conformations.py \
|
| 187 |
+
--dir egfrvhl_rank4/chloroform \
|
| 188 |
+
--name egfrvhl_rank4
|
| 189 |
```
|
| 190 |
|
| 191 |
+
[`md/README.md`](md/README.md) documents the complete workflow, and
|
| 192 |
+
[`md/reference_protocol.md`](md/reference_protocol.md) records the simulation protocol.
|
| 193 |
+
|
| 194 |
+
## Artifact verification
|
| 195 |
+
|
| 196 |
+
The integrity checker validates byte counts, SHA-256 hashes, and portability-sensitive
|
| 197 |
+
source paths.
|
| 198 |
+
|
| 199 |
+
```bash
|
| 200 |
+
python scripts/verify_release.py
|
| 201 |
+
```
|
| 202 |
+
|
| 203 |
+
`docs/artifacts.json` provides the machine-readable manifest, and
|
| 204 |
+
[`docs/ARTIFACTS.md`](docs/ARTIFACTS.md) lists each artifact's role, size, and checksum.
|
| 205 |
+
The checker also reports the availability of the optional evaluation components.
|
| 206 |
+
|
| 207 |
+
PyTorch loads the bundled generator checkpoint through its serialized checkpoint
|
| 208 |
+
interface. Use weights from a trusted release location and verify their hashes before
|
| 209 |
+
loading.
|
| 210 |
+
|
| 211 |
+
## Research scope
|
| 212 |
+
|
| 213 |
+
The released paper configurations cover three target and E3-ligase systems with fixed
|
| 214 |
+
anchor chemistry. All generated structures and objective values are computational
|
| 215 |
+
predictions. Synthesis, biochemical and cellular testing, toxicology, and safety
|
| 216 |
+
assessment establish the experimental properties of candidates selected for further
|
| 217 |
+
study.
|
| 218 |
+
|
| 219 |
+
Hardware, CUDA, and PyTorch revisions can introduce numerical variation across repeated
|
| 220 |
+
runs.
|
| 221 |
+
|
| 222 |
+
## Repository structure
|
| 223 |
+
|
| 224 |
+
```text
|
| 225 |
+
checkpoints/ fine-tuned DeFoG generator weights
|
| 226 |
+
configs/paper.json settings used for the reported runs
|
| 227 |
+
data/linker.csv PROTAC-DB-derived linker table
|
| 228 |
+
docs/ artifact documentation and checksums
|
| 229 |
+
md/ explicit-solvent molecular-dynamics workflow
|
| 230 |
+
results/ generation outputs used in the paper tables
|
| 231 |
+
scripts/
|
| 232 |
+
generate.py guided linker generation
|
| 233 |
+
evaluate_linkers.py candidate assembly and scoring
|
| 234 |
+
batch_report.py multi-run summaries and plots
|
| 235 |
+
fetch_third_party.py pinned optional evaluation components
|
| 236 |
+
verify_release.py release integrity checker
|
| 237 |
+
src/classifier/ validity gate, analyzers, and classifiers
|
| 238 |
+
src/defog/ DeFoG discrete flow model
|
| 239 |
+
src/protac/ target-specific warhead and E3 builders
|
| 240 |
+
```
|
| 241 |
|
| 242 |
+
## Citation and license
|
| 243 |
|
| 244 |
+
Citation metadata is available in [`CITATION.cff`](CITATION.cff). The CupOFMoCA code is
|
| 245 |
+
released under Apache-2.0 through `LICENSE` and `NOTICE`. The bundled DeFoG code retains
|
| 246 |
+
its MIT license under `src/defog/LICENSE`. Optional upstream components retain their own
|
| 247 |
+
terms.
|
README.md
CHANGED
|
@@ -13,49 +13,201 @@ tags:
|
|
| 13 |
|
| 14 |
# CupOFMoCA
|
| 15 |
|
| 16 |
-
Code and
|
| 17 |
-
Molecular Conjugate Assembly** (NeurIPS 2026).
|
| 18 |
|
| 19 |

|
| 20 |
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
|
|
|
|
|
|
| 24 |
|
| 25 |
-
| Folder |
|
| 26 |
|---|---|---|
|
| 27 |
-
| [`CupOFMoCA-PDC/`](CupOFMoCA-PDC) |
|
| 28 |
-
| [`CupOFMoCA-PROTAC/`](CupOFMoCA-PROTAC) |
|
| 29 |
|
| 30 |
-
Each folder
|
| 31 |
-
|
| 32 |
-
|
|
|
|
| 33 |
|
| 34 |
-
|
| 35 |
-
Transformers pipeline and provides no hosted-inference widget.
|
| 36 |
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
```bash
|
| 40 |
-
hf download ChatterjeeLab/CupOFMoCA --include "CupOFMoCA-PROTAC/*" --local-dir .
|
| 41 |
cd CupOFMoCA-PROTAC
|
|
|
|
|
|
|
|
|
|
| 42 |
python scripts/verify_release.py
|
| 43 |
```
|
| 44 |
|
| 45 |
-
|
| 46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
-
##
|
| 49 |
|
| 50 |
-
|
| 51 |
-
- Generate computational conjugate candidates for research and method development.
|
| 52 |
-
- Extend or compare constrained, multi-objective molecular-generation methods.
|
| 53 |
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
|
| 59 |
-
## Citation
|
| 60 |
|
| 61 |
-
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
# CupOFMoCA
|
| 15 |
|
| 16 |
+
Code, model weights, configurations, and reported outputs for **CupOFMoCA: Coupled
|
| 17 |
+
Objective-Guided Discrete Flows for Molecular Conjugate Assembly** (NeurIPS 2026).
|
| 18 |
|
| 19 |

|
| 20 |
|
| 21 |
+
Molecular conjugates derive their function from interactions among multiple chemical
|
| 22 |
+
components. CupOFMoCA uses discrete flows to generate coupled components, enforce
|
| 23 |
+
assembly-validity constraints throughout sampling, and guide local transitions with
|
| 24 |
+
property objectives. This release supports the two conjugate modalities studied in the
|
| 25 |
+
paper.
|
| 26 |
|
| 27 |
+
| Folder | Generated component | Representations or systems |
|
| 28 |
|---|---|---|
|
| 29 |
+
| [`CupOFMoCA-PDC/`](CupOFMoCA-PDC) | peptide carrier assembled with a fixed payload and linker chemistry | SMILES, natural amino acids, and unnatural amino acids for ERBB2, GNRHR, and NRP1 |
|
| 30 |
+
| [`CupOFMoCA-PROTAC/`](CupOFMoCA-PROTAC) | linker connecting fixed target-binding and E3-ligase anchors | EGFR-VHL, BRD9-VHL, and CDK6-CRBN |
|
| 31 |
|
| 32 |
+
Each modality folder provides its own environment, paper configuration, model artifacts,
|
| 33 |
+
generation programs, integrity checker, and detailed README. The sections below contain
|
| 34 |
+
the shared setup, representative commands, and the information needed to choose and run
|
| 35 |
+
either modality.
|
| 36 |
|
| 37 |
+
## Download
|
|
|
|
| 38 |
|
| 39 |
+
Install the [Hugging Face CLI](https://huggingface.co/docs/huggingface_hub/guides/cli)
|
| 40 |
+
and download the complete release with the following commands.
|
| 41 |
+
|
| 42 |
+
```bash
|
| 43 |
+
hf download ChatterjeeLab/CupOFMoCA --local-dir CupOFMoCA
|
| 44 |
+
cd CupOFMoCA
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
A modality-specific download reduces local storage use.
|
| 48 |
+
|
| 49 |
+
```bash
|
| 50 |
+
hf download ChatterjeeLab/CupOFMoCA \
|
| 51 |
+
--include "CupOFMoCA-PDC/*" \
|
| 52 |
+
--local-dir CupOFMoCA
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
Replace `CupOFMoCA-PDC/*` with `CupOFMoCA-PROTAC/*` for the PROTAC release.
|
| 56 |
+
|
| 57 |
+
## Choose a workflow
|
| 58 |
+
|
| 59 |
+
Use the PDC workflow to generate peptide carriers in one of three molecular
|
| 60 |
+
representations and assemble them with the target-specific payload chemistry. Use the
|
| 61 |
+
PROTAC workflow to generate a molecular-graph linker between a fixed warhead and a fixed
|
| 62 |
+
E3 ligand.
|
| 63 |
+
|
| 64 |
+
| Capability | PDC | PROTAC |
|
| 65 |
+
|---|---|---|
|
| 66 |
+
| Base generator | SMILESReDi, PepReDi, or UAAReDi | DeFoG fine-tuned on PROTAC-DB linkers |
|
| 67 |
+
| Generated object | peptide carrier | linker subgraph |
|
| 68 |
+
| Fixed context | payload and conjugation chemistry | warhead and E3-ligand subgraphs |
|
| 69 |
+
| Released systems | ERBB2, GNRHR, NRP1 | EGFR-VHL, BRD9-VHL, CDK6-CRBN |
|
| 70 |
+
| Paper settings | `CupOFMoCA-PDC/configs/paper.json` | `CupOFMoCA-PROTAC/configs/paper.json` |
|
| 71 |
+
| Detailed guide | [`CupOFMoCA-PDC/README.md`](CupOFMoCA-PDC/README.md) | [`CupOFMoCA-PROTAC/README.md`](CupOFMoCA-PROTAC/README.md) |
|
| 72 |
+
|
| 73 |
+
Both workflows use custom PyTorch generation code and local checkpoints. A CUDA GPU is
|
| 74 |
+
recommended for generation. The released environments use Python 3.9 and CUDA 12.1.
|
| 75 |
+
|
| 76 |
+
## PDC quickstart
|
| 77 |
+
|
| 78 |
+
From the release root, create the PDC environment and verify the bundled artifacts.
|
| 79 |
+
|
| 80 |
+
```bash
|
| 81 |
+
cd CupOFMoCA-PDC
|
| 82 |
+
conda env create -f environment.yml
|
| 83 |
+
conda activate cupofmoca
|
| 84 |
+
python scripts/verify_release.py
|
| 85 |
+
```
|
| 86 |
+
|
| 87 |
+
Preview the configured NRP1 UAA experiment, then run it from the PDC folder.
|
| 88 |
+
|
| 89 |
+
```bash
|
| 90 |
+
python scripts/run_experiment.py \
|
| 91 |
+
--representation uaa \
|
| 92 |
+
--variant cupofmoca \
|
| 93 |
+
--method guided \
|
| 94 |
+
--target NRP1 \
|
| 95 |
+
--dry-run
|
| 96 |
+
|
| 97 |
+
python scripts/run_experiment.py \
|
| 98 |
+
--representation uaa \
|
| 99 |
+
--variant cupofmoca \
|
| 100 |
+
--method guided \
|
| 101 |
+
--target NRP1
|
| 102 |
+
```
|
| 103 |
+
|
| 104 |
+
The runner supports `smiles`, `aa`, and `uaa` representations; `guided` and `staged`
|
| 105 |
+
sampling methods; and `ERBB2`, `GNRHR`, and `NRP1` targets. It writes each seed to a
|
| 106 |
+
separate directory under `outputs/`. The PDC guide documents the complete command
|
| 107 |
+
surface, checkpoints, target chemistries, and evaluation programs.
|
| 108 |
+
|
| 109 |
+
## PROTAC quickstart
|
| 110 |
+
|
| 111 |
+
From the release root, create the PROTAC environment, install the bundled DeFoG package,
|
| 112 |
+
and verify the release.
|
| 113 |
|
| 114 |
```bash
|
|
|
|
| 115 |
cd CupOFMoCA-PROTAC
|
| 116 |
+
conda env create -f environment.yml
|
| 117 |
+
conda activate defog
|
| 118 |
+
pip install -e src/defog
|
| 119 |
python scripts/verify_release.py
|
| 120 |
```
|
| 121 |
|
| 122 |
+
Generate 100 EGFR-VHL candidates with one reported seed.
|
| 123 |
+
|
| 124 |
+
```bash
|
| 125 |
+
cd scripts
|
| 126 |
+
python generate.py \
|
| 127 |
+
--checkpoint ../checkpoints/protac_linker_finetune/epoch=99-v1.ckpt \
|
| 128 |
+
--protac_module ErlotinibVHL \
|
| 129 |
+
--fix_termini cooh \
|
| 130 |
+
--fast_scoring \
|
| 131 |
+
--num_samples 100 \
|
| 132 |
+
--num_batches 1 \
|
| 133 |
+
--num_steps 1500 \
|
| 134 |
+
--warmup_steps 100 \
|
| 135 |
+
--weights 4.0 2.0 4.0 \
|
| 136 |
+
--seed 42 \
|
| 137 |
+
--output_file ./protac_linkers_egfrvhl.smi \
|
| 138 |
+
--output_dir ../generation_logs
|
| 139 |
+
```
|
| 140 |
+
|
| 141 |
+
Set `--protac_module` to `BRD9VHL` or `CDK6CRBN` for the other reported systems.
|
| 142 |
+
The PROTAC guide explains the three objective weights, target builders, evaluation
|
| 143 |
+
programs, archived paper outputs, and molecular-dynamics workflow.
|
| 144 |
+
|
| 145 |
+
## Paper configurations
|
| 146 |
+
|
| 147 |
+
The machine-readable configuration files record the settings used for the reported
|
| 148 |
+
experiments. Both modalities use seeds 42, 123, and 456 with 100 candidates per seed.
|
| 149 |
+
|
| 150 |
+
The PDC configuration uses 128 optimization steps, equal objective weights, and a
|
| 151 |
+
target-specific conjugation builder. SMILES sequence lengths are 80 for ERBB2 and GNRHR
|
| 152 |
+
and 100 for NRP1. AA and UAA experiments use length 10.
|
| 153 |
+
|
| 154 |
+
The PROTAC configuration uses 1,500 sampling steps, 100 warmup steps, a hard validity
|
| 155 |
+
gate, and soft-objective weights of 4.0 for synthetic accessibility, 2.0 for PROTAC-DB
|
| 156 |
+
chemotype closeness, and 4.0 for connectivity.
|
| 157 |
|
| 158 |
+
## Artifacts and reproducibility
|
| 159 |
|
| 160 |
+
Run the integrity checker inside a modality folder before generation.
|
|
|
|
|
|
|
| 161 |
|
| 162 |
+
```bash
|
| 163 |
+
python scripts/verify_release.py
|
| 164 |
+
```
|
| 165 |
+
|
| 166 |
+
Each checker validates file sizes, SHA-256 hashes, and portability-sensitive source
|
| 167 |
+
paths against `docs/artifacts.json`. Human-readable artifact inventories appear in
|
| 168 |
+
`docs/ARTIFACTS.md`. The PDC inventory covers the three generators and the property
|
| 169 |
+
scorers. The PROTAC inventory covers the fine-tuned DeFoG checkpoint and the generic and
|
| 170 |
+
target-specific validity classifiers.
|
| 171 |
+
|
| 172 |
+
The paper settings remain in `configs/paper.json`, and detailed PROTAC outputs behind the
|
| 173 |
+
reported tables remain under `CupOFMoCA-PROTAC/results/`. Hardware, CUDA, PyTorch, and
|
| 174 |
+
runtime model revisions can introduce numerical variation across repeated runs.
|
| 175 |
+
|
| 176 |
+
## Data and evaluation scope
|
| 177 |
+
|
| 178 |
+
The PDC release supports the paper experiments across ERBB2, GNRHR, and NRP1 with the
|
| 179 |
+
released target sequences and conjugation chemistries. The PROTAC release supports the
|
| 180 |
+
paper experiments across EGFR-VHL, BRD9-VHL, and CDK6-CRBN with fixed anchor chemistry.
|
| 181 |
+
The detailed modality guides describe the training sources and evaluation measurements.
|
| 182 |
+
|
| 183 |
+
All generated candidates and objective values are computational predictions. Use
|
| 184 |
+
chemical synthesis, experimental validation, toxicology, and safety assessment to
|
| 185 |
+
establish the properties of candidates selected for further study. DegradeMaster results
|
| 186 |
+
use an in-domain predictor trained with overlapping PROTAC databases and should be
|
| 187 |
+
interpreted within that evaluation setting.
|
| 188 |
+
|
| 189 |
+
## Repository structure
|
| 190 |
+
|
| 191 |
+
```text
|
| 192 |
+
CupOFMoCA/
|
| 193 |
+
assets/ overview media
|
| 194 |
+
CupOFMoCA-PDC/ PDC generation and evaluation release
|
| 195 |
+
checkpoints/ SMILES, AA, and UAA generator weights
|
| 196 |
+
configs/ paper settings and target sequences
|
| 197 |
+
scripts/ experiment runner and integrity checker
|
| 198 |
+
smiles/ generation, assembly, scoring, and evaluation code
|
| 199 |
+
CupOFMoCA-PROTAC/ PROTAC linker generation and evaluation release
|
| 200 |
+
checkpoints/ fine-tuned DeFoG weights
|
| 201 |
+
configs/ paper settings
|
| 202 |
+
data/ derived linker table
|
| 203 |
+
md/ explicit-solvent molecular-dynamics workflow
|
| 204 |
+
results/ outputs and summaries used in paper tables
|
| 205 |
+
scripts/ generation, evaluation, and verification programs
|
| 206 |
+
src/ DeFoG, target builders, and classifiers
|
| 207 |
+
```
|
| 208 |
|
| 209 |
+
## Citation and license
|
| 210 |
|
| 211 |
+
Citation metadata is available in [`CITATION.cff`](CITATION.cff). The CupOFMoCA code is
|
| 212 |
+
released under Apache-2.0. Third-party code and downloaded model artifacts retain their
|
| 213 |
+
respective terms, which are recorded in the modality-specific `NOTICE` files.
|