关于 diffdock-nim
diffdock-nim 是一份技能指南,介绍如何通过托管 NVIDIA API 或本地 Docker NIM 进行盲对接,预测蛋白质与配体的结合姿势,并涵盖输入准备、结果处理和验证。
主要功能
- 01托管与本地对接指南
- 02蛋白质和配体输入准备
- 03排序姿势结果处理
- 04姿势置信度与验证检查
适用场景
- 01估算配体在蛋白质中的姿势
- 02通过托管或本地 NIM 运行对接
- 03保存并检查排序后的姿势 SDF 文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nvidia-bionemo/ bionemo-agent-toolkit --skill diffdock-nim安装后在 Claude Code 中输入/diffdock-nim确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BENCHMARK.mdskill-card.mdskill.oms.sigconfig/skillspector-baseline.ymlevals/config.ymlevals.jsontrigger_evals.jsonevals/files/protein.pdbreferences/api.mdexamples.mdparameters.mdscience.mdvalidation.md详细介绍
DiffDock NIM
使用盲对接预测蛋白质-配体结合构象。本指南适用于首次使用托管版/本地版;仅在需要时加载补充文件:
references/api.md:托管版/本地版的确切端点、架构和 Docker 参数。references/science.md:对接用例、限制和后续衔接。references/parameters.md:配体格式、构象数量、扩散控制参数。references/validation.md:受体、配体、构象和置信度检查。references/examples.md:精简的托管版/本地版示例及保存构象的模式。
选择模式
仅在上下文不明确时询问:
NVIDIA 托管 API 还是本地 Docker NIM?
- 托管版:
https://health.api.nvidia.com/v1/biology/mit/diffdock - 本地版:
http://localhost:8000/molecular-docking/diffdock/generate
托管版和本地版的路径不同。本地版没有 /v1/ 前缀,并使用
/molecular-docking/ 路由。托管版请求使用 Authorization: Bearer $NGC_API_KEY。受支持的本地 Docker
启动方式使用 NGC_API_KEY(或通过预检设置的 NVIDIA_API_KEY)进行
注册表登录、权限检查和首次运行时的模型下载;使用 -e NGC_API_KEY 将其传入
容器。本地推理请求在就绪后无需授权标头。是否可以免密钥启动并使用预热缓存
取决于镜像/版本,不应想当然。
本地 Docker
如需精确的本地预检(加载 .env、回退使用 NVIDIA_API_KEY、
LOCAL_NIM_CACHE、NVIDIA_VISIBLE_DEVICES=0、--shm-size=2G、两个 --ulimit
标志、docker login,以及用于 nvcr.io/nim/mit/diffdock:2.2.0 的 docker run),
请逐字复制 references/api.md 中
Docker Reference 下的命令块。
就绪状态:
until curl -sf http://localhost:8000/v1/health/ready; do sleep 5; done
准备输入
蛋白质受体必须仅包含 ATOM 记录。去除标头、水分子和 HETATM。
from pathlib import Path
raw_pdb = Path("protein.pdb").read_text()
protein = "\n".join(line for line in raw_pdb.splitlines() if line.startswith("ATOM"))
if not protein:
raise ValueError("protein.pdb has no ATOM records")
配体选项:
- SMILES:
ligand = "CC(=O)OC1=CC=CC=C1C(=O)O";ligand_file_type = "txt"。 - SDF:
ligand = Path("ligand.sdf").read_text();ligand_file_type = "sdf"。 - MOL2:
ligand_file_type = "mol2"。
不要将 "smiles" 用作 ligand_file_type;SMILES 的值应为 "txt"。
请求模式
import os
import requests
HOSTED = True
url = (
"https://health.api.nvidia.com/v1/biology/mit/diffdock"
if HOSTED else "http://localhost:8000/molecular-docking/diffdock/generate"
)
headers = {"Content-Type": "application/json"}
if HOSTED:
headers["Authorization"] = f"Bearer {os.getenv('NGC_API_KEY')}"
payload = {
"protein": protein,
"ligand": ligand,
"ligand_file_type": ligand_file_type,
"num_poses": 10,
"time_divisions": 20,
"steps": 18,
"save_trajectory": False,
}
response = requests.post(url, headers=headers, json=payload, timeout=300)
response.raise_for_status()
result = response.json()
保存并报告输出
ligand_positions 和 position_confidence 是相互对应的排序列表。
position_confidence[0] 是排名第 1 的构象置信度。
使用 references/examples.md 中
Save Ranked Poses 下的代码片段保存排序后的构象 SDF 文件。
在 PyMOL、ChimeraX 或 UCSF Chimera 中查看构象 SDF 文件和受体。如需了解构象合理性检查和置信度注意事项,请阅读 references/validation.md。
限制与故障排查
num_poses最大值:100。time_divisions最大值:20。steps最大值:18。- 单 GPU;本地运行至少需要约 24 GB VRAM。
422:ligand_file_type无效、SMILES/SDF 无效,或没有 ATOM 记录。- 构象为空:验证受体 ATOM 记录和配体是否可解析。
- 本地 URL 返回 404 通常意味着使用了错误的托管版路径,或误加了
/v1/。