扩散对接模型Skill:用扩散模型一键预测蛋白质-配体结合姿态
核心结论速览
- 它是谁:扩散对接模型Skill(英文名 diffdock,技能ID 11968),把 DiffDock 这款基于扩散模型的分子对接工具封装为可被 AI 助手直接调用的技能,输入蛋白质结构与配体信息,就能输出 3D 结合姿态与置信分数。
- 它做什么:预测小分子配体在蛋白质上的结合姿态(3D 结构)与模型置信度,用于虚拟筛选与结构基础药物设计;它不做亲和力预测(不输出 ΔG、Kd)。
- 怎么用:既可以在 AI 技能平台按技能ID检索并"一键安装"到助手中用自然语言下达任务,也可以在本地按 Conda / Docker 两种方式部署完整运行环境。
- 门槛与成本:强烈推荐 GPU(比 CPU 快 10—100 倍),模型检查点约 500MB 会在首次运行时自动下载,首次运行还需预计算查找表约 2—5 分钟。
- 最适合谁:做结构基础药物发现、化学生物学、虚拟筛选的计算化学与 AI 制药团队,以及需要快速获得"配体大概结合在哪"的研究者。
该技能叫什么?如何下载安装 AI 技能提升开发效率?
技能身份信息
| 项目 | 内容 |
|---|---|
| 技能中文名 | 扩散对接模型Skill |
| 技能英文名 | diffdock |
| 技能ID | 11968 |
| 底层工具 | DiffDock(含当前默认模型 DiffDock-L) |
| 核心能力 | 蛋白质-配体 3D 结合姿态预测 + 置信分数生成 |
| 明确不做 | 结合亲和力预测、蛋白质-蛋白质对接、共价对接 |
它到底解决什么问题
传统分子对接依赖打分函数与搜索算法,在面对柔性配体、结合位点不明确的靶点时,容易陷入局部最优,且高度依赖人工设定搜索盒子(binding box)。扩散对接模型Skill 把分子对接重新表述为"从噪声中逐步去噪生成姿态"的生成式问题:模型直接给出多个候选结合姿态排序,并附上置信分数,让研究者在不需要预先指定结合口袋的前提下,快速拿到一批可解释、可排序的候选构象。它特别适合"这个分子可能结合在哪里"这类探索性问题,以及化合物库的初筛排序。
需要特别强调边界:DiffDock 输出的是结构(姿态)和确定性(置信度),不是结合强弱(亲和力)。因此官方指引要求始终配合 GNINA、MM/GBSA 等评分函数做亲和力再评估。
一键安装:把技能装进你的 AI 助手
思路是"先有助手,再装技能,最后验证"。具体步骤如下:
- 准备前提:拥有一个支持安装 AI 技能的助手/客户端账号,且具备可用的技能市场或技能库入口。
- 检索技能:在技能市场中检索技能ID 11968,或直接搜索中文名"扩散对接模型"、英文名"diffdock"。
- 一键安装:点击安装并启用该技能,授权其在需要时读取文件(如 PDB 文件)与执行任务。具体按钮位置、权限项与计费方式以官方说明为准。
- 验证是否生效:安装完成后,用一句自然语言试探,例如"帮我把这个配体对接一下这个蛋白质结构",观察助手是否会按 DiffDock 的工作流引导你提供 PDB 文件与 SMILES。若技能正常挂载,助手会主动询问蛋白质来源、配体格式与输出目录。
本地运行环境安装(真实命令,来自技能详情)
如果你需要跑完整计算,必须准备本地环境。技能详情提供了两种安装选项:
检查环境状态(务必先做)
python scripts/setup_check.py
该脚本会验证 Python 版本、带 CUDA 的 PyTorch、PyTorch Geometric、RDKit、ESM 等依赖项,并给出缺失项的安装指引。
选项1:Conda(推荐)
git clone https://github.com/gcorso/DiffDock.git
cd DiffDock
conda env create --file environment.yml
conda activate diffdock
选项2:Docker
docker pull rbgcsail/diffdock
docker run -it --gpus all --entrypoint /bin/bash rbgcsail/diffdock
micromamba activate diffdock
三条重要提示:强烈推荐使用 GPU;首次运行会预计算 SO(2)/SO(3) 查找表,耗时约 2—5 分钟;模型检查点(约 500MB)若本地不存在会自动下载。若希望零安装先体验,可使用官方在线演示(地址见技能详情中的资源链接,以官方说明为准)。
该技能的主要功能和特点
- 生成式姿态预测:用扩散模型直接生成配体在蛋白口袋中的 3D 结合姿态,而不是逐格点搜索,天然支持多模态输出。
- 蛋白质输入双通道:既支持结构文件(PDB),也支持仅给氨基酸序列——此时通过 ESMFold 折叠后再对接,非常适合尚无实验结构的靶点。
- 配体格式兼容广:支持 SMILES 字符串,也支持 SDF、MOL2 等结构文件,RDKit 生态可直接衔接。
- 内置置信分数体系:输出 confidence score 并按分数分层(>0 高、-1.5 到 0 中、<-1.5 低),帮助快速排雷。
- 单条与批量统一接口:单复合物用
--protein_path+--ligand,批量用 CSV(--protein_ligand_csv),可直接支撑虚拟筛选。 - 专为大规模筛选优化:支持预计算 ESM 蛋白质嵌入(
esm_embedding_preparation.py),同一靶点筛上千化合物时显著提速。 - 配套脚本齐全:
prepare_batch_csv.py生成并校验批量 CSV、analyze_results.py解析与排名置信分数并导出 CSV、setup_check.py诊断环境,形成完整闭环。 - 参数可调、预设可用:采样数、推理步数、扭转温度等均可调,配置模板内置"高精度 / 快速筛选 / 柔性配体 / 刚性配体"四套预设。
- 支持集成对接:对已知柔性的蛋白,可将同一配体对接到多个构象(ensemble),提高命中率。
- 提供图形界面:
python app/main.py启动 Web 界面,适合不熟悉命令行的用户交互式使用。
与普通对接工具相比强在哪:不需要人工定义搜索盒子;把"打分排序"升级为"生成+置信度排序";对序列输入原生友好;批量与筛选工作流的脚本化程度更高。
如何使用该技能?
步骤一:确认环境
先运行 python scripts/setup_check.py,确认 CUDA 可用。可用下面一行验证 GPU:
python -c "import torch; print(torch.cuda.is_available())"
若返回 False,请先配置 GPU 环境,否则速度会慢 10—100 倍。
步骤二:单个蛋白质-配体对接
python -m inference \
--config default_inference_args.yaml \
--protein_path protein.pdb \
--ligand "CC(=O)Oc1ccccc1C(=O)O" \
--out_dir results/single_docking/
示例中 CC(=O)Oc1ccccc1C(=O)O 即阿司匹林的 SMILES,protein.pdb 替换为你的靶点结构。
如果只有序列没有结构:
python -m inference \
--config default_inference_args.yaml \
--protein_sequence "MSKGEELFTGVVPILVELDGDVNGHKF..." \
--ligand ligand.sdf \
--out_dir results/sequence_docking/
步骤三:读输出
输出目录结构固定,默认为 10 个采样姿态:
results/single_docking/
├── rank_1.sdf # 最高排名姿态
├── rank_2.sdf
├── ...
├── rank_10.sdf
└── confidence_scores.txt
用 PyMOL 等工具打开 rank_1.sdf 与蛋白结构叠加,肉眼判断结构是否合理(是否落在合理口袋、有无穿模)。
步骤四:批量对接(虚拟筛选)
先准备并校验 CSV:
python scripts/prepare_batch_csv.py --create --output batch_input.csv
python scripts/prepare_batch_csv.py my_input.csv --validate
CSV 必填四列:complex_name、protein_path、ligand_description、protein_sequence(用结构则序列留空,用序列则路径留空)。随后运行:
python -m inference \
--config default_inference_args.yaml \
--protein_ligand_csv batch_input.csv \
--out_dir results/batch/ \
--batch_size 10
化合物数超过 100 个时,先预计算嵌入:
python datasets/esm_embedding_preparation.py \
--protein_ligand_csv screening_input.csv \
--out_file protein_embeddings.pt
再带 --esm_embeddings_path protein_embeddings.pt 运行推理。
步骤五:分析与调参
python scripts/analyze_results.py results/batch/ --top 5
python scripts/analyze_results.py results/batch/ --threshold 0.0 --export summary.csv
调参要点:困难体系把 samples_per_complex 从 10 提到 20—40;追求精度把 inference_steps 从 20 提到 25—30;柔性配体把 temp_sampling_tor 从 7.04 提到 8—10,刚性配体降到 5—6。
同类型竞品对比分析
| 方案名称 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| 扩散对接模型Skill(diffdock) | 生成式深度学习对接 | 姿态生成、置信分数、序列输入、批量筛选 | 需 Conda/Docker + GPU;技能形态可自然语言调用 | 探索性对接、虚拟筛选初筛、无结构靶点 | 优势:免设搜索盒、多姿态输出、批量脚本完善;不足:不预测亲和力,膜蛋白与大配体表现不稳 |
| AutoDock Vina | 经典经验打分对接 | 基于打分函数的构象搜索 | 轻量,CPU 可跑,生态与教程极多 | 常规小分子对接、教学、快速验证 | 优势:门槛低、速度快、结果可复现;不足:需人工定义搜索盒,柔性配体易失真 |
| GNINA | 神经网络打分对接 | CNN 打分 + 构象搜索 | 中等,需 GPU 更佳 | 对已有姿态重新打分排序 | 优势:打分比传统函数更接近实验;不足:本质仍是打分工具,不解决姿态生成的多样性 |
| AlphaFold-Multimer / DiffDock-PP | 大分子复合物结构预测 | 蛋白质-蛋白质复合物建模 | 较高,算力需求大 | 蛋白-蛋白相互作用 | 优势:覆盖大分子体系;不足:不适用于小分子配体对接 |
选型建议:想快速拿到"配体可能结合在哪"的候选构象 → 用本技能;已有姿态需要判断"结合得多强" → 用 GNINA 或 MM/GBSA;蛋白-蛋白体系 → 换用 DiffDock-PP 或 AlphaFold-Multimer。官方推荐的工作流正是:DiffDock 出姿态 → 可视化检查 → GNINA/MM-GBSA 再打分 → 实验验证。
该技能的典型应用场景与实际体验情况
场景一:药化团队的先导化合物结合模式假设
角色是药物化学研究员,手上有靶点晶体结构和一个新设计的分子。痛点是传统对接要反复试搜索盒,且只给一个"最佳"姿态。使用方式是提供 PDB 与 SMILES,跑默认 10 个采样,挑前 3—5 个姿态看共识。实际体验:上手极快,一条命令出结果;注意点是要看多个姿态而非只看 rank_1.sdf,且高置信度只代表"模型对结构确定",不代表"结合强"。
场景二:化合物库虚拟筛选初筛
角色是计算化学/干实验人员,需要从数百上千化合物中挑出值得合成的分子。使用方式是用 CSV 批量 + 预计算 ESM 嵌入,再用 analyze_results.py --threshold 0.0 过滤。实际体验:脚本化程度高,CSV 校验功能能提前抓住路径和 SMILES 错误;但需注意一次性处理大库时要降 --batch_size 避免显存溢出。
场景三:只有序列、没有实验结构的靶点
角色是化学生物学方向的研究者,靶点只有氨基酸序列。使用方式是直接传 --protein_sequence,由 ESMFold 折叠后对接。实际体验:省去了自己建模的步骤,是从序列到结合姿态假设的一条龙路径;注意点是没有实验结构时结果不确定性更高,务必看置信分数并做可视化核查。
场景四:已知柔性口袋的多构象对接
角色是结构生物学背景的建模人员。使用方式是构造 ensemble CSV,把同一配体分别对接到 conf1/conf2/conf3 多个构象,并把 --samples_per_complex 提到 20。实际体验:对口袋开合明显的靶点明显更稳;代价是运行时间成倍增加,建议先小规模试跑。
整体体验小结:命令与配置清晰,配套脚本把"校验—运行—分析"三段补齐,属于容易上手但需要一定结构生物学常识才能正确解读结果的工具。最容易踩的坑有三个:用 CPU 硬跑导致慢到怀疑人生、蛋白质结构缺失残基未处理导致姿态不合理、把置信分数当亲和力使用。
该技能能为用户带来的价值
- 效率提升:单复合物一次推理产出 10 个排序姿态,省去反复调搜索盒与多次试算的时间;批量与预计算嵌入让同一靶点筛上百化合物成为常规操作。
- 门槛降低:蛋白质侧只需 PDB 或一段序列,配体侧只需 SMILES 或 SDF,非计算背景的实验人员借助技能的自然语言调用也能跑通流程;不想用命令行还可启动 Web 界面。
- 决策质量提升:置信分数提供明确的三档判读标准(>0 高、-1.5 至 0 中、<-1.5 低),配合
analyze_results.py的跨复合物排名,可以快速把资源集中在最值得验证的候选上。 - 可量化的成本节约:官方明确 GPU 比 CPU 快 10—100 倍,选对硬件本身就是最大的时间成本节省;预计算嵌入避免重复计算同一蛋白的表示。
- 长期价值:作为结构基础药物设计链条中的"姿态生成"环节,可与 GNINA、MM/GBSA、FEP 等形成标准流水线,产物(SDF + 置信 CSV)可直接进入下游分析,形成可复用、可复现的工作资产。
常见问题 FAQ
Q1:怎么安装?一定要自己配环境吗?
两种路径。轻量路径是在 AI 技能平台按技能ID 11968 检索并一键安装该技能,用自然语言下达对接任务,具体入口与权限以官方说明为准;完整路径是本地部署,Conda(conda env create --file environment.yml)或 Docker(docker pull rbgcsail/diffdock)二选一,装完先跑 python scripts/setup_check.py 验证。
Q2:收费吗? 技能本身的功能来源于开源项目 DiffDock(GitHub 公开仓库),论文与代码均可获取。但平台侧的安装与调用是否收费、以及本地运行所需的 GPU 算力成本,均以官方说明为准,建议安装前先确认计费规则。
Q3:它能告诉我这个分子结合得多强吗? 不能。DiffDock 明确只预测结合姿态与置信度,不输出 ΔG、Kd 等亲和力指标,官方也明确"不用于亲和力预测"。要评估结合强弱,请把生成的姿态交给 GNINA(快速神经网络打分)或 MM/GBSA(更准但更慢),必要时做 FEP/TI 自由能计算。
Q4:适合谁用?有什么明确不能用的场景? 适合做小分子(约 100—1000 Da)对接、虚拟筛选、先导优化的研究者,也支持小于 20 个残基的小肽。不适用于蛋白质-蛋白质对接(应用 DiffDock-PP 或 AlphaFold-Multimer)、大于 20 个残基的大肽、共价对接、亲和力预测,以及膜蛋白(未专门训练,需谨慎)。
Q5:结果置信分数都很低怎么办?和竞品怎么选?
先排查三类原因:配体过大或异常、结合位点不明确、蛋白柔性大。对策是把 samples_per_complex 提到 20—40、尝试多构象集成对接、检查蛋白结构是否缺失残基。竞品选择上,本技能强在"免搜索盒的生成式姿态 + 批量筛选";若你只需要快速验证单个已知口袋、且没有 GPU,AutoDock Vina 更轻;若你已有姿态只想重打分,GNINA 更合适。