
CBGBENCH: معيار الرسم البياني المعقد هو معيار لتصميم جزيء على دراية بالهدف.
ورقة [diffbp] | ورقة [D3FG] | معيار
ملحوظة
هذا هو مستودع التعليمات البرمجية الرسمي للورقة "CBGBench: املأ الفراغ من الرسم البياني لتجليد جزيء البروتين" ، والذي يهدف إلى توحيد تصميم جزيء على دراية بالهدف مع تنفيذ رمز واحد. حتى الآن ، قمنا بتضمين 7 طرق كما هو موضح أدناه:
| نموذج | رابط الورق | جيثب |
|---|---|---|
| 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/arneschneuing/diffsbdd |
| Diffbp | https://arxiv.org/abs/2211.11214 | هنا هو التنفيذ الرسمي. |
| TargetDiff | https://arxiv.org/abs/2303.03543 | https://github.com/guanjq/targetDiff |
| علَم | https://openreview.net/forum؟id=RQ13IDF0F73 | https://github.com/zaixizhang/flag |
| D3FG | https://arxiv.org/abs/2306.13769 | هنا هو التنفيذ الرسمي. |
تم إنشاء هذه النماذج في البداية لتوليد جزيئات de novo ، ونقوم بتوسيع المزيد من المهام بما في ذلك linker design ، fragment growing ، scaffold hopping ، 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
(ط) قم بتنزيل مجموعة البيانات المعالجة من Google Drive. لكل مجموعة بيانات ، يتوافق مع طرق ومهام مختلفة. يرجى الرجوع إلى الجدول أدناه للعثور على البيانات المعالجة التي تحتاج إلى استخدامها. لاحظ أنه لتدريب D3FG ، إنه نموذج من مرحلتين يقوم أولاً بإنشاء مجموعات وظيفية ثم يقوم بإنشاء ذرات رابط ، لذلك قمنا بتسمية نموذج D3FG_FG "و" D3FG_LINKER "، وبيانات التدريب مختلفة بالنسبة لهم.
الجدول: اسم ملف البيانات المقابل لطرق ومهام مختلفة.
| نموذج | مهمة | اسم الملف |
|---|---|---|
| Pocket2mol | دي نوفو | Data/PL/CrossDocked_v1.1_rmsd1.0_pocket10_procound_fullatom.lmdb |
| GraphBP | دي نوفو | Data/PL/CrossDocked_v1.1_rmsd1.0_pocket10_procound_fullatom.lmdb |
| diffsbdd | دي نوفو | Data/PL/CrossDocked_v1.1_rmsd1.0_pocket10_procound_fullatom.lmdb |
| Diffbp | دي نوفو | Data/PL/CrossDocked_v1.1_rmsd1.0_pocket10_procound_fullatom.lmdb |
| TargetDiff | دي نوفو | Data/PL/CrossDocked_v1.1_rmsd1.0_pocket10_procound_fullatom.lmdb |
| علَم | دي نوفو | Data/pl_arfg/crossdocked_v1.1_rmsd1.0_pocket10_procound_arfuncgroup.lmdb |
| D3FG_FG | دي نوفو | Data/PL_FG/CrossDocked_v1.1_rmsd1.0_pocket10_procound_funcgroup.lmdb |
| D3FG_LINKER | دي نوفو | Data/PL/CrossDocked_v1.1_rmsd1.0_pocket10_procound_linker.lmdb |
| Pocket2mol | شظية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_frag.lmdb |
| GraphBP | شظية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_frag.lmdb |
| diffsbdd | شظية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_frag.lmdb |
| Diffbp | شظية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_frag.lmdb |
| TargetDiff | شظية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_frag.lmdb |
| Pocket2mol | رابط | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_linker.lmdb |
| GraphBP | رابط | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_linker.lmdb |
| diffsbdd | رابط | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_linker.lmdb |
| Diffbp | رابط | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_linker.lmdb |
| TargetDiff | رابط | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_linker.lmdb |
| Pocket2mol | سقالة | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_scaffold.lmdb |
| GraphBP | سقالة | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_scaffold.lmdb |
| diffsbdd | سقالة | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_scaffold.lmdb |
| Diffbp | سقالة | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_scaffold.lmdb |
| TargetDiff | سقالة | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_scaffold.lmdb |
| Pocket2mol | سلسلة جانبية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_sidechain.lmdb |
| GraphBP | سلسلة جانبية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_sidechain.lmdb |
| diffsbdd | سلسلة جانبية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_sidechain.lmdb |
| Diffbp | سلسلة جانبية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_sidechain.lmdb |
| TargetDiff | سلسلة جانبية | Data/pl_decomp/crossdocked_v1.1_rmsd1.0_pocket10_procound_sidechain.lmdb |
(2) انسخ مجموعات البيانات إلى ./data dir ، والتي سيبدو فيها دليل ملفات البيانات الكامل
- 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) تنزيل crossdocked_v1.1_rmsd1.0.tar.gz من محرك TargetDiff ، ونسخه إلى ./raw_data/ with
mkdir raw_data
tar -xzvf crossdocked_v1.1_rmsd1.0.tar.gz ./raw_data
(2) تشغيل ما يلي:
python ./scripts/extract_pockets.py --source raw_data/crossdocked_v1.1_rmsd1.0 --dest raw_data/crossdocked_v1.1_rmsd1.0_pocket10
(3) في التدريب ، سيتم إعداد مجموعة البيانات لكل مهمة. يرجى الرجوع إلى Training .
أيضًا ، يمكنك تنزيل File case_study من عمليات Google Drive ، ونسخه إلى دليل ./data ، والذي سيقود DIR إلى
- 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} بـ denovo و linker و frag و scaffold و sidechain و {method} باسم النموذج. يعطي الجدول التالي أزواج تداول الطريقة التفصيلية والاستبدال.
الجدول: أزواج الطريقة المستخدمة للتدريب من الصفر.
| طريقة | مهمة | {method} + {task} |
|---|---|---|
| Pocket2mol | دي نوفو | Pocket2mol + Denovo |
| GraphBP | دي نوفو | GraphBP + Denovo |
| diffsbdd | دي نوفو | Diffsbdd + Denovo |
| Diffbp | دي نوفو | Diffbp + Denovo |
| TargetDiff | دي نوفو | TargetDiff + Denovo |
| علَم | دي نوفو | العلم + دنوفو |
| D3FG | دي نوفو | d3fg_fg + denovo ؛ D3FG_LINKER + DENOVO |
| Pocket2mol | تصميم الرابط | Pocket2mol + Linker |
| GraphBP | تصميم الرابط | GraphBP + رابط |
| diffsbdd | تصميم الرابط | Diffsbdd + رابط |
| Diffbp | تصميم الرابط | Diffbp + رابط |
| TargetDiff | تصميم الرابط | TargetDiff + Linker |
| Pocket2mol | شظية تنمو | Pocket2mol + Frag |
| GraphBP | شظية تنمو | GraphBP + Frag |
| diffsbdd | شظية تنمو | diffsbdd + frag |
| Diffbp | شظية تنمو | diffbp + frag |
| TargetDiff | شظية تنمو | TargetDiff + Frag |
| Pocket2mol | سقالة التنقل | Pocket2mol + سقالة |
| GraphBP | سقالة التنقل | GraphBP + سقالة |
| diffsbdd | سقالة التنقل | diffsbdd + سقالة |
| Diffbp | سقالة التنقل | Diffbp + سقالة |
| TargetDiff | سقالة التنقل | TargetDiff + سقالة |
| Pocket2mol | زخرفة السلسلة الجانبية | Pocket2mol + Sidechain |
| GraphBP | زخرفة السلسلة الجانبية | GraphBP + Sidechain |
| diffsbdd | زخرفة السلسلة الجانبية | diffsbdd + sidechain |
| Diffbp | زخرفة السلسلة الجانبية | diffbp + sidechain |
| TargetDiff | زخرفة السلسلة الجانبية | TargetDiff + Sidechain |
لاحظ أن D3FG والعلم غير متوافقان مع المهام الممتدة ، وأن D3FG تستخدم استراتيجيات التدريب على مرحلتين ، لذلك إذا كنت ترغب في تدريب D3FG بنفسك ، فأنت بحاجة إلى تشغيل:
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: طاولة مع نماذج مسبقة
قم بتنزيل نقاط التفتيش .pt التي تحتاجها ، ونسخها إلى ./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
...
...
بمجرد تدريب النموذج ، يمكنك رسم عينات منها على جيوب الاختبار ، بما يلي:
bash generate.sh --method {method} --task {task} --tag {tag} --checkpoint {ckpt_number}
في الأمر ، يمكن العثور على زوج {method} و {task} في الجدول السابق على أزواج المهام. {TAG} يجب استبدالها selftrain أو pretrain ، وفقًا لنقاط التفتيش التي تستخدمها. إذا تم توفير المعلمة -CheckPoint بدون رقم ، فستجد تلقائيًا أحدث ملف .pt . إذا تم توفير رقم ، فسيستخدم ملف نقطة التفتيش المحدد.
على سبيل المثال ، إذا كنت ترغب في إنشاء عينات على مجموعة الاختبار لتصميم De Novo مع نموذج TargetDiff المدربين ذاتيًا ، فيمكنك تشغيل:
bash generate.sh --method targetdiff --task denovo --tag selftrain --checkpoint
أو إذا كنت ترغب في اختبار نقطة التفتيش من 100000.
bash generate.sh --method targetdiff --task denovo --tag selftrain --checkpoint 100000
لاحظ أن D3FG يستخدم استراتيجية توليد من خطوتين ، لذلك يجب أن يكون الأمر
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
قم بتشغيل ما يلي:
cd evaluate_scripts
bash evaluate.sh --method {method} --task {task} --tag {tag}
على سبيل المثال ، إذا قمت بتدريب TargetDiff بنفسك ، فتشرك
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
أو إذا كنت قد قمت بتنزيل نماذج مسبقة ، فيرجى التشغيل
cd evaluate_scripts
bash bash evaluate.sh --method {method} --task {task} --tag pretrained
استخدم النماذج المسبقة لتوليد جزيئات على أهداف العالم الحقيقي بمرونة.
تشمل المزيد من النماذج ، مثل 3DSBDD و DecompDiff و Voxmol و Ligan.
حرر النماذج المسبقة ، واختبر الجدوى والتكاثر بمجرد نشر الورقة.
تتم تهيئة قاعدة الكود بواسطة Haitao Lin ، مع CBGBench V1 كدوافع لدينا ؛ سيتم إدارة التشغيل اللاحق لمستودع الكود من قبل Guojiang Zhao وفريقه من تقنية DP.
إذا وجدت أن المستودع مفيد لبحثك أو مشاريعك ، فيرجى الاستشهاد بالورقة القياسية الخاصة بنا كمرجع:
@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},
}
وأعمالنا السابقة لـ DiffBP و 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}
}
تم ترخيص هذا المشروع بموجب شروط ترخيص GPL-3.0.