技能diffdock
D

diffdock

DiffDock 和 DiffDock-L 分子对接。用于从 PDB 或序列结合 SMILES/SDF/MOL2 进行蛋白-小分子构象(姿势)预测、批量对接、虚拟筛选以及对构象置信度的解读。不用于结合亲和力预测。

DiffDock: 基于扩散模型的深度学习分子对接工具

技能概述

DiffDock 是一个基于扩散模型的深度学习分子对接工具,用于预测小分子配体与蛋白质靶点的3D结合姿态,支持蛋白质结构(PDB文件)或氨基酸序列输入,适用于单个复合物对接和批量虚拟筛选场景。

适用场景

1. 结构基础药物发现

当您需要将候选化合物对接到蛋白质靶点以预测结合姿态时,DiffDock 可以提供高精度的3D结构预测。支持从PDB文件或氨基酸序列出发,结合SMILES字符串或配体结构文件(SDF、MOL2),快速生成多个候选对接构象并按置信度排序。

2. 虚拟筛选与批量对接

对于包含数百至上千个化合物的化合物库筛选,DiffDock 支持批量处理多个蛋白质-配体对。可以通过CSV文件定义批量任务,预先计算蛋白质嵌入以加速处理,并生成包含所有结果的置信度分析报告,帮助快速识别高潜力的候选分子。

3. 计算机辅助药物设计与优化

在先导化合物优化阶段或需要探索蛋白质-配体相互作用时,DiffDock 可用于生成多样化的结合姿态、评估预测可信度。输出的SDF格式文件可直接导入PyMOL、Chimera等可视化工具进行结构分析,并可结合GNINA、MM/GBSA等打分函数进行后续亲和力评估。

核心功能

1. 高精度结合姿态预测

利用扩散模型深度学习架构,DiffDock 能够生成准确的3D对接构象,并自动为每个预测提供置信度评分。置信度大于0表示强预测,-1.5到0为中等可信度,小于-1.5需要谨慎验证。工具默认为每个复合物生成10个候选姿态,支持通过调整采样参数(如samples_per_complex)增加样本数量以获得更全面的构象覆盖。

2. 灵活的输入格式支持

DiffDock 支持多种输入方式组合:蛋白质可提供PDB结构文件或氨基酸序列(通过ESMFold自动折叠),配体可提供SMILES字符串、SDF或MOL2文件。对于批量任务,可通过CSV文件统一管理多个蛋白质-配体对,支持混合使用PDB文件和序列输入,适用于不同数据来源的筛选项目。

3. 结果分析与工作流集成

对接完成后,可使用提供的分析脚本解析所有预测结果,按置信度排序、统计高/中/低可信度预测分布,并导出为CSV便于下游分析。DiffDock 生成的姿态文件可无缝集成到现有药物发现工作流中,与GNINA、MM/GBSA、FEP等亲和力计算工具配合使用,实现从姿态预测到亲和力评估的完整流程。

常见问题

DiffDock 和传统对接工具(如 AutoDock、Vina)有什么区别?

DiffDock 基于深度学习扩散模型,不依赖于传统的打分函数和采样算法,能够生成更准确的3D姿态预测。传统工具(AutoDock、Vina)基于物理打分函数和构象搜索,DiffDock 则通过端到端深度学习直接预测对接构象,在速度和精度上都有优势。但需要注意的是,DiffDock 预测的是结合姿态和置信度,而非结合亲和力(ΔG、Kd)。如需评估亲和力,建议将 DiffDock 生成的姿态结合 GNINA 或 MM/GBSA 进行打分。

DiffDock 需要什么样的运行环境?

DiffDock 需要Python 3.9环境,依赖RDKit、PyTorch、PyTorch Geometric、ESM等库。官方提供了 Conda 环境配置文件(environment.yml)和Docker镜像。虽然CPU也可以运行,但GPU(CUDA)强烈推荐,可带来10-100倍的速度提升,对于虚拟筛选等批量任务几乎是必需的。首次运行时会自动下载模型检查点(约500MB)并预计算SO(2)/SO(3)查找表(约2-5分钟)。

DiffDock 能预测结合亲和力(Kd、IC50)吗?

不能。这是 DiffDock 最常见的误解。DiffDock 预测的是结合姿态(ligand 3D pose)和模型对该预测的置信度(confidence),而不是结合亲和力(binding affinity)。高置信度意味着模型对结构的预测较确定,并不代表分子结合能力强。如需评估结合亲和力,请将 DiffDock 生成的姿态使用 GNINA(快速神经网络打分)、MM/GBSA(分子力学打分)或自由能微扰(FEP/TI)等专门的打分工具进行计算。

如何使用蛋白质序列进行对接?

DiffDock 支持直接使用氨基酸序列进行对接,无需预先准备PDB文件。在单复合物对接时使用 --protein_sequence 参数传入序列,在批量对接时在CSV的 protein_sequence 列填入序列。DiffDock 会通过内置的 ESMFold 自动将序列折叠为3D结构。这种方式特别适合没有实验结构的靶点,或需要快速筛选多个蛋白变体的场景。

批量虚拟筛选如何高效使用 DiffDock?

对于超过100个化合物的虚拟筛选,建议:1)使用CSV文件定义批量任务;2)预先计算蛋白质嵌入(datasets/esm_embedding_preparation.py),避免重复折叠;3)使用 --batch_size 参数控制GPU内存占用;4)对接后使用 analyze_results.py 按置信度筛选;5)对高置信度结果进行GNINA打分排序;6)最终选取少量候选进行实验验证。这种工作流可以在GPU环境下数小时内完成数百化合物的筛选。