mcpField
D
diffdock-nim

diffdock-nim

github.com/nvidia-bionemo其他502257 次安装2 天前更新
代码仓库

关于 diffdock-nim

diffdock-nim 是一份技能指南,介绍如何通过托管 NVIDIA API 或本地 Docker NIM 进行盲对接,预测蛋白质与配体的结合姿势,并涵盖输入准备、结果处理和验证。

主要功能

  1. 01托管与本地对接指南
  2. 02蛋白质和配体输入准备
  3. 03排序姿势结果处理
  4. 04姿势置信度与验证检查

适用场景

  1. 01估算配体在蛋白质中的姿势
  2. 02通过托管或本地 NIM 运行对接
  3. 03保存并检查排序后的姿势 SDF 文件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nvidia-bionemo/bionemo-agent-toolkit --skill diffdock-nim

安装后在 Claude Code 中输入/diffdock-nim确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
skill-card.md
skill.oms.sig
config/
skillspector-baseline.yml
evals/
config.yml
evals.json
trigger_evals.json
evals/files/
protein.pdb
references/
api.md
examples.md
parameters.md
science.md
validation.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/。

评论

支持 Markdown