
CBGBench: Komplexer Bindungsgrafik-Benchmark ist ein Benchmark für generatives Zielmolekül-Design.
Papier [Diffbp] | Papier [d3fg] | Benchmark
Notiz
Dies ist das offizielle Code-Repository des Papiers "CBGBench: Füllen Sie das Blanken des Proteinmolekülbindungsgraphen" aus, der darauf abzielt, mit einer Einzelcode-Implementierung das Ziel des Zielmoleküls zu vereinheitlichen. Bis jetzt haben wir 7 Methoden aufgenommen, wie unten gezeigt:
| Modell | Papierverbindung | Github |
|---|---|---|
| Pocket2Mol | https://arxiv.org/abs/2205.07249 | https://github.com/pengxingang/pocket2mol |
| Graphbp | https://arxiv.org/abs/2204.09410 | https://github.com/divelab/graphbp |
| Diffsbdd | https://arxiv.org/abs/2210.13695 | https://github.com/arnesChneing/diffsbdd |
| Diffbp | https://arxiv.org/abs/2211.11214 | Hier ist die offizielle Umsetzung. |
| Targetdiff | https://arxiv.org/abs/2303.03543 | https://github.com/guanjq/targetdiff |
| FLAGGE | https://openreview.net/forum?id=rq13idf0f73 | https://github.com/zaixizhang/flag |
| D3fg | https://arxiv.org/abs/2306.13769 | Hier ist die offizielle Umsetzung. |
Diese Modelle sind ursprünglich für die Erzeugung von de novo -Molekülen etabliert, und wir erweitern mehr Aufgaben, darunter linker design , fragment growing , scaffold hopping und side chain decoration .

conda env create -f environment.yml
conda activate cbgbench
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
conda install pyg pytorch-scatter pytorch-cluster -c pyg
# install rdkit, efgs, obabel, etc.
pip install --use-pep517 EFGs
pip install biopython
pip install lxml
conda install rdkit openbabel tensorboard tqdm pyyaml easydict python-lmdb -c conda-forge
# install plip
mkdir tools
cd tools
git clone https://github.com/pharmai/plip.git
cd plip
python setup.py install
alias plip='python plip/plip/plipcmd.py'
cd ..
### Note that if there is an error in setup.py, it can be ignored as long as openbabel is installed.
# install docking tools
conda install -c conda-forge numpy swig boost-cpp sphinx sphinx_rtd_theme
python -m pip install git+https://github.com/Valdes-Tresanco-MS/AutoDockTools_py3
pip install meeko==0.1.dev3 scipy pdb2pqr vina
# If you are unable to install vina, you can try: conda install vina
# If you encounter the following error:
# ImportError: libtiff.so.5: cannot open shared object file: No such file or directory
# Please try the following steps to resolve it:
pip uninstall pillow
pip install pillow
(i) Laden Sie den verarbeiteten Datensatz von Google Drive herunter. Für jeden Datensatz entspricht es verschiedenen Methoden und Aufgaben. In der folgenden Tabelle finden Sie die verarbeiteten Daten, die Sie verwenden müssen. Beachten Sie, dass es sich um ein zweistufiges Modell handelt, das zuerst funktionelle Gruppen generiert und dann Linker-Atome generiert. Daher haben wir das zweistufige Modell 'D3FG_FG' und 'D3FG_LINKER' benannt, und die Trainingsdaten sind für sie unterschiedlich.
Tabelle: Der Dateiname, der verschiedenen Methoden und Aufgaben entspricht.
| Modell | Aufgabe | Dateiname |
|---|---|---|
| Pocket2Mol | de novo | Daten/pl/crossdocked_v1.1_rmsd1.0_pocket10_processed_fullatom.lmdb |
| Graphbp | de novo | Daten/pl/crossdocked_v1.1_rmsd1.0_pocket10_processed_fullatom.lmdb |
| Diffsbdd | de novo | Daten/pl/crossdocked_v1.1_rmsd1.0_pocket10_processed_fullatom.lmdb |
| Diffbp | de novo | Daten/pl/crossdocked_v1.1_rmsd1.0_pocket10_processed_fullatom.lmdb |
| Targetdiff | de novo | Daten/pl/crossdocked_v1.1_rmsd1.0_pocket10_processed_fullatom.lmdb |
| FLAGGE | de novo | Daten/pl_arfg/crossdocked_v1.1_rmsd1.0_pocket10_processed_arfuncgroup.lmdb |
| D3FG_FG | de novo | Daten/pl_fg/crossdocked_v1.1_rmsd1.0_pocket10_processed_funcgroup.lmdb |
| D3FG_LINKER | de novo | Daten/pl/crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb |
| Pocket2Mol | Fragment | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_frag.lmdb |
| Graphbp | Fragment | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_frag.lmdb |
| Diffsbdd | Fragment | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_frag.lmdb |
| Diffbp | Fragment | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_frag.lmdb |
| Targetdiff | Fragment | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_frag.lmdb |
| Pocket2Mol | Linker | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb |
| Graphbp | Linker | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb |
| Diffsbdd | Linker | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb |
| Diffbp | Linker | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb |
| Targetdiff | Linker | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb |
| Pocket2Mol | Gerüst | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_scaffold.lmdb |
| Graphbp | Gerüst | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_scaffold.lmdb |
| Diffsbdd | Gerüst | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_scaffold.lmdb |
| Diffbp | Gerüst | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_scaffold.lmdb |
| Targetdiff | Gerüst | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_scaffold.lmdb |
| Pocket2Mol | Seitenkette | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_sidechain.lmdb |
| Graphbp | Seitenkette | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_sidechain.lmdb |
| Diffsbdd | Seitenkette | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_sidechain.lmdb |
| Diffbp | Seitenkette | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_sidechain.lmdb |
| Targetdiff | Seitenkette | Daten/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_processed_sidechain.lmdb |
(ii) Kopieren Sie die Datensätze in ./data dir, in dem das vollständige Datendateiverzeichnis aussieht
- CGBBench
- data
- pl
- crossdocked_name2id.pt
- crossdocked_v1.1_rmsd1.0_pocket10_processed_fullatom.lmdb
- crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb
- pl_arfg
- crossdocked_name2id_arfuncgroup.pt
- crossdocked_v1.1_rmsd1.0_pocket10_processed_arfuncgroup.lmdb
- pl_decomp
- crossdocked_name2id_frag.pt
- crossdocked_name2id_linker.pt
- crossdocked_name2id_scaffold.pt
- crossdocked_name2id_sidechain.pt
- crossdocked_v1.1_rmsd1.0_pocket10_processed_frag.lmdb
- crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb
- crossdocked_v1.1_rmsd1.0_pocket10_processed_scaffold.lmdb
- crossdocked_v1.1_rmsd1.0_pocket10_processed_sidechain.lmdb
- pl_fg
- crossdocked_name2id_funcgroup.pt
- crossdocked_v1.1_rmsd1.0_pocket10_processed_funcgroup.lmdb
(i) Download crossdocked_v1.1_rmsd1.0.tar.gz vom ./raw_data/ Drive und kopieren
mkdir raw_data
tar -xzvf crossdocked_v1.1_rmsd1.0.tar.gz ./raw_data
(ii) Führen Sie Folgendes aus:
python ./scripts/extract_pockets.py --source raw_data/crossdocked_v1.1_rmsd1.0 --dest raw_data/crossdocked_v1.1_rmsd1.0_pocket10
(iii) Im Training wird der Datensatz für jede Aufgabe vorbereitet. Bitte beachten Sie das Training .
Außerdem können Sie die Prozesse Ziele Datei case_study von Google Drive herunterladen und in das Verzeichnis ./data kopieren, das die DIR an führt
- CGBBench
- data
- case_study
- processed
- case_study_processed_fullatom.lmdb
- case_study_processed_funcgroup.lmdb
- case_study_name2id.pt
...
python train.py --config ./configs/{task}/train/{method}.yml --logdir ./logs/{task}/{method}
{Task} kann durch denovo , linker , frag , scaffold und sidechain ersetzt werden, und {Methode} kann durch den Modellnamen ersetzt werden. Die folgende Tabelle gibt die detaillierten Methodenaufgabenpaare und den Ersatz an.
Tabelle: Method-Task-Paare, die zum Training von Grund auf neu trainieren.
| Verfahren | Aufgabe | {method} + {task} |
|---|---|---|
| Pocket2Mol | de novo | Pocket2Mol + Denovo |
| Graphbp | de novo | Graphbp + Denovo |
| Diffsbdd | de novo | Diffsbdd + Denovo |
| Diffbp | de novo | Diffbp + Denovo |
| Targetdiff | de novo | TargetDiff + Denovo |
| FLAGGE | de novo | Flagge + Denovo |
| D3fg | de novo | D3FG_FG + Denovo; D3FG_LINKER + DENOVO |
| Pocket2Mol | Linker Design | Pocket2Mol + Linker |
| Graphbp | Linker Design | Graphbp + Linker |
| Diffsbdd | Linker Design | Diffsbdd + Linker |
| Diffbp | Linker Design | Diffbp + Linker |
| Targetdiff | Linker Design | TargetDiff + Linker |
| Pocket2Mol | Fragmentwachstum | Pocket2Mol + Frag |
| Graphbp | Fragmentwachstum | Graphbp + Frag |
| Diffsbdd | Fragmentwachstum | Diffsbdd + Frag |
| Diffbp | Fragmentwachstum | Diffbp + Frag |
| Targetdiff | Fragmentwachstum | TargetDiff + Frag |
| Pocket2Mol | Gerüst hüpfen | Pocket2Mol + Gerüst |
| Graphbp | Gerüst hüpfen | graphbp + scaffold |
| Diffsbdd | Gerüst hüpfen | Diffsbdd + Gerüst |
| Diffbp | Gerüst hüpfen | Diffbp + Gerüst |
| Targetdiff | Gerüst hüpfen | TargetDiff + Scaffold |
| Pocket2Mol | Seitenkettendekoration | Pocket2Mol + Sidechain |
| Graphbp | Seitenkettendekoration | Graphbp + Sidechain |
| Diffsbdd | Seitenkettendekoration | Diffsbdd + Sidechain |
| Diffbp | Seitenkettendekoration | Diffbp + Sidechain |
| Targetdiff | Seitenkettendekoration | TargetDiff + Sidechain |
Beachten Sie, dass D3FG und Flag nicht mit den erweiterten Aufgaben kompatibel sind und D3FG 2-stufige Trainingstrategien verwendet. Wenn Sie also D3FG selbst trainieren möchten, müssen Sie rennen:
python train.py --config ./configs/denovo/train/d3fg_fg.yml --logdir ./logs/denovo/d3fg_fg
python train.py --config ./configs/denovo/train/d3fg_linker.yml --logdir ./logs/denovo/d3fg_linker
TODO: Tisch mit vorbereiteten Modellen
Laden Sie die von Ihnen benötigten .pt herunter und kopieren Sie sie in ./logs/
# TODO
- CBGBench
- logs
- denovo
- d3fg_fg
- pretrain
- checkpoints
- 951000.pt
- d3fg_linker
- pretrain
- checkpoints
- 4840000.pt
- diffbp
- pretrain
- checkpoints
- 4848000.pt
...
- frag
- diffbp
- pretrain
- checkpoints
- 476000.pt
...
...
Sobald das Modell trainiert ist, können Sie Proben von ihnen in den Testtaschen zeichnen, mit folgenden:
bash generate.sh --method {method} --task {task} --tag {tag} --checkpoint {ckpt_number}
Im Befehl finden Sie {Methode} und {Task} Paar in der ersteren Tabelle zu Methoden-Task-Paaren. {tag} sollte gemäß den von Ihnen verwendeten Kontrollpunkten durch selftrain oder pretrain ersetzt werden. Wenn der Parameter -Checkpoint ohne eine Nummer bereitgestellt wird, wird automatisch die neueste .pt -Datei gefunden. Wenn eine Nummer angegeben ist, wird die angegebene Checkpoint -Datei verwendet.
Wenn Sie beispielsweise Proben auf dem Testsatz für De-novo- Design mit selbst ausgeschaltetem TargetDiff -Modell generieren möchten, können Sie ausführen:
bash generate.sh --method targetdiff --task denovo --tag selftrain --checkpoint
Oder wenn Sie den Kontrollpunkt der 100000-ten testen möchten.
bash generate.sh --method targetdiff --task denovo --tag selftrain --checkpoint 100000
Beachten Sie, dass D3FG eine Zwei-Schritte-Generation-Strategie verwendet, sodass der Befehl sein sollte
bash generate.sh --method d3fg_fg --task denovo --tag {tag} --checkpoint # generate the functional groups
bash generate.sh --method d3fg_linker --task denovo --tag {tag} --checkpoint # generate the linkers
Führen Sie Folgendes aus:
cd evaluate_scripts
bash evaluate.sh --method {method} --task {task} --tag {tag}
Wenn Sie beispielsweise TargetDiff selbst geschult haben, rennen Sie
bash evaluate.sh --method targetdiff --task denovo --tag selftrain
bash evaluate.sh --method targetdiff --task frag --tag selftrain
bash evaluate.sh --method targetdiff --task linker --tag selftrain
bash evaluate.sh --method targetdiff --task scaffold --tag selftrain
bash evaluate.sh --method targetdiff --task sidechain --tag selftrain
Oder wenn Sie vorgezogene Modelle heruntergeladen haben, rennen Sie bitte
cd evaluate_scripts
bash bash evaluate.sh --method {method} --task {task} --tag pretrained
Verwenden Sie die vorbereiteten Modelle, um Moleküle auf realen Zielen flexibel zu erzeugen.
Enthalten mehr Modelle wie 3DSBDD, Decompdiff, Voxmol und Ligan.
Lassen Sie die vorbereiteten Modelle los, testen Sie die Machbarkeit und Reproduktivität, sobald das Papier veröffentlicht wurde.
Die Codebasis wird von Haitao Lin mit der CBGBench V1 als unsere Motivation initialisiert. Das anschließende Ausführen des Code -Repositorys wird von Guojiang Zhao und seinem Team der DP -Technologie verwaltet.
Wenn Sie feststellen, dass das Repository für Ihre Forschung oder Projekte hilfreich ist, zitieren Sie bitte unser Benchmark -Papier als Referenz:
@misc{lin2024cbgbench,
title={CBGBench: Fill in the Blank of Protein-Molecule Complex Binding Graph},
author={Haitao Lin and Guojiang Zhao and Odin Zhang and Yufei Huang and Lirong Wu and Zicheng Liu and Siyuan Li and Cheng Tan and Zhifeng Gao and Stan Z. Li},
year={2024},
eprint={2406.10840},
archivePrefix={arXiv},
}
Und unsere früheren Werke von Diffbp und D3FG:
@misc{lin2024diffbpgenerativediffusion3d,
title={DiffBP: Generative Diffusion of 3D Molecules for Target Protein Binding},
author={Haitao Lin and Yufei Huang and Odin Zhang and Siqi Ma and Meng Liu and Xuanjing Li and Lirong Wu and Jishui Wang and Tingjun Hou and Stan Z. Li},
year={2024},
eprint={2211.11214},
archivePrefix={arXiv},
primaryClass={q-bio.BM},
url={https://arxiv.org/abs/2211.11214},
}
@inproceedings{
lin2023functionalgroupbased,
title={Functional-Group-Based Diffusion for Pocket-Specific Molecule Generation and Elaboration},
author={Haitao Lin and Yufei Huang and Odin Zhang and Yunfan Liu and Lirong Wu and Siyuan Li and Zhiyuan Chen and Stan Z. Li},
booktitle={Thirty-seventh Conference on Neural Information Processing Systems},
year={2023},
url={https://openreview.net/forum?id=lRG11M91dx}
}
Dieses Projekt ist gemäß den Bestimmungen der GPL-3.0-Lizenz lizenziert.