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"。
ligand_file_type に "smiles" を指定しないでください。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 位のポーズの信頼度です。
順位付けされたポーズの SDF を保存するには、references/examples.md の Save Ranked Poses にあるスニペットを使用してください。
受容体とともに、PyMOL、ChimeraX、または UCSF Chimera でポーズの SDF ファイルを表示してください。ポーズの妥当性確認と信頼度に関する注意点は、references/validation.md を参照してください。
制限事項とトラブルシューティング
num_posesの上限:100。time_divisionsの上限:20。stepsの上限:18。- GPU は 1 基です。ローカル環境では、VRAM が約 24 GB 以上必要です。
422:ligand_file_typeが無効、SMILES/SDF が無効、または ATOM レコードがありません。- ポーズが空:受容体の ATOM レコードとリガンドの解析可能性を確認してください。
- ローカル URL の 404 は、通常、ホスト型のパスを誤って指定したか、誤って
/v1/を付けたことを意味します。