openfold3-nim について
openfold3-nimは、OpenFold3をNVIDIAのホステッドAPIまたはローカルDocker NIMで使うためのスキルです。タンパク質、核酸、リガンド、複合体の構造予測に加え、リクエスト設定と結果の確認方法を案内します。
主な機能
- 01タンパク質と核酸の構造予測
- 02リガンドと複合体への対応
- 03ホステッドAPIまたはローカルDockerの設定
- 04構造結果の保存と評価
活用シーン
- 01タンパク質や核酸の構造予測
- 02複数分子からなる複合体のモデリング
- 03ローカル推論の準備と起動確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia-bionemo/ bionemo-agent-toolkit --skill openfold3-nimインストール後、Claude Code で/openfold3-nimを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigconfig/skillspector-baseline.ymlevals/evals.jsontrigger_evals.jsonreferences/api.mdexamples.mdparameters.mdscience.mdvalidation.md詳細
OpenFold3 NIM
OpenFold3 で生体分子の構造を予測します。タンパク質、DNA、RNA、小分子リガンド、複数エンティティの複合体に対応しています。このガイドでは、ホスト型およびローカル NIM の基本的な使用方法を説明します。より詳しい情報が必要な場合にのみ、補足ファイルを参照してください。
references/api.md:正確なエンドポイント、スキーマ、Docker フラグ、レスポンスフィールド。references/science.md:目的、強み、制限事項、モデルの引き継ぎ。references/parameters.md:分子フィールド、MSA、テンプレート、サンプル、調整。references/validation.md:アーティファクトの確認と科学的な妥当性チェック。references/examples.md:ホスト型およびローカルの簡潔なリクエスト例。
モードを選択
コンテキストが不明確な場合にのみ確認してください。
NVIDIA API のホスト型とローカル Docker NIM のどちらを使用しますか?
- ホスト型 URL:
https://health.api.nvidia.com/v1/biology/openfold/openfold3/predict - ローカル URL:
http://localhost:8000/biology/openfold/openfold3/predict - ローカルの準備状態確認:
http://localhost:8000/v1/health/ready
モードの違い:ローカルの予測パスには /v1/ プレフィックスがありません。ホスト型リクエストでは Authorization: Bearer $NGC_API_KEY を使用します。サポート対象のローカル Docker 起動では、レジストリへのログイン、利用資格の確認、初回のモデルダウンロードに NGC_API_KEY(または preflight を介した NVIDIA_API_KEY)を使用します。-e NGC_API_KEY でコンテナに渡してください。準備状態の確認後、ローカルの推論リクエストでは認証ヘッダーを使用しないため、ホストポートはループバックにバインドし、-p 127.0.0.1:8000:8000 を指定してください。キャッシュが温まった後のキー不要な起動方法はイメージのバージョンによって異なるため、前提にしないでください。
認証と環境
環境内で既に提供されている、またはシークレットマネージャーから注入された認証情報を使用してください。認証情報ファイルを読み込んだり、キーを表示したり、シェルトレースを有効にしたりしないでください。シェルテストでキーの有無を確認してください。
ホスト型では、リクエストヘッダーに NGC_API_KEY が必要です。ローカル起動では、NGC_API_KEY、または代替として NVIDIA_API_KEY と、LOCAL_NIM_CACHE が必要です。
ローカル Docker
公式の OpenFold3 NIM イメージを使用し、LOCAL_NIM_CACHE を /opt/nim/.cache にマウントしてください。セットアップを実行する前に、レジストリ認証ではキーが NVIDIA レジストリ https://nvcr.io に送信されること、および初回起動時には約 10~15 GB のモデル重みがキャッシュにダウンロードされることを説明してください。デプロイは依頼された場合にのみ実行してください。セットアップガイドを求められた場合は、コマンドを提示するだけで、実行しないでください。
ローカルのセットアップコマンドを記述するときは、以下の preflight をそのままコピーしてください。単純な : "${NGC_API_KEY:?Set NGC_API_KEY}" チェックに置き換えたり、NVIDIA_API_KEY を省いたり、LOCAL_NIM_CACHE の既定値を独自に設定したりしないでください。これらの行は、このリポジトリにおけるローカル NIM の環境変数の仕様です。既定の単一 GPU 起動では、文字どおり --gpus "device=0" を表示してください。別のデバイスを選ぶのは、ユーザーが依頼した場合に限ります。
set +x
if [ -z "${NGC_API_KEY:-}" ] && [ -n "${NVIDIA_API_KEY:-}" ]; then
NGC_API_KEY="$NVIDIA_API_KEY"
fi
: "${NGC_API_KEY:?Set NGC_API_KEY or NVIDIA_API_KEY}"
export NGC_API_KEY
: "${LOCAL_NIM_CACHE:?Set LOCAL_NIM_CACHE}"
mkdir -p "${LOCAL_NIM_CACHE}"
chmod 755 "${LOCAL_NIM_CACHE}"
printf '%s\n' "$NGC_API_KEY" | \
docker login nvcr.io --username '$oauthtoken' --password-stdin && \
docker run --rm --name openfold3 \
--runtime=nvidia \
--gpus "device=0" \
--shm-size=16g \
-e NGC_API_KEY \
-v "${LOCAL_NIM_CACHE}:/opt/nim/.cache" \
-p 127.0.0.1:8000:8000 \
nvcr.io/nim/openfold/openfold3:latest
準備状態の確認:
until curl -sf http://localhost:8000/v1/health/ready; do sleep 5; done
リクエストのパターン
requests.post(..., json=payload, timeout=300) を使用してください。ローカル Docker のタスクでは、準備状態の確認が成功した後に hosted = False を設定してください。
import os
import requests
hosted = True
url = (
"https://health.api.nvidia.com/v1/biology/openfold/openfold3/predict"
if hosted
else "http://localhost:8000/biology/openfold/openfold3/predict"
)
headers = {"Content-Type": "application/json"}
if hosted:
headers["Authorization"] = f"Bearer {os.getenv('NGC_API_KEY')}"
seq = "MKTVRQERLKSIVR"
payload = {
"inputs": [{
"input_id": "prediction_1",
"output_format": "pdb",
"molecules": [{
"type": "protein",
"id": "A",
"sequence": seq,
"diffusion_samples": 1,
"msa": {
"main": {
"a3m": {
"alignment": f">query\n{seq}",
"format": "a3m"
}
}
}
}]
}]
}
response = requests.post(url, headers=headers, json=payload, timeout=300)
response.raise_for_status()
result = response.json()
ペイロードに関する注意点:
- トップレベルは
{"inputs": [...]}で、OpenFold3 が受け付ける入力は 1 つだけです。 moleculesには、typeがprotein、dna、rna、ligandのいずれかであるオブジェクトを 1~32 個指定できます。- タンパク質/RNA の MSA は省略できますが、指定する場合、
alignmentは>query\nSEQUENCEのような FASTA ヘッダーで始まる必要があります。 - リガンドでは
smilesまたはccd_codesのいずれかを使用します。例:{"type": "ligand", "id": "L", "ccd_codes": "ATP"}。 - DNA/RNA エンティティでは、たとえば
{"type": "dna", "id": "B", "sequence": "ATCGATCG"}のようにsequenceを使用します。 diffusion_samplesは 1~5 です。output_formatはpdbまたはcifです。
出力の保存と解釈
返された構造はすべて、科学的アーティファクトとして保存してください。主なレスポンスパスは result["outputs"][0]["structures_with_scores"] です。
output = result["outputs"][0]
for i, sample in enumerate(output["structures_with_scores"], start=1):
fmt = sample["format"]
with open(f"openfold3_structure_{i}.{fmt}", "w", encoding="utf-8") as fh:
fh.write(sample["structure"])
print("confidence_score", sample.get("confidence_score"))
print("complex_plddt_score", sample.get("complex_plddt_score"))
print("ptm_score", sample.get("ptm_score"))
print("iptm_score", sample.get("iptm_score"))
print("complex_pde_score", sample.get("complex_pde_score"))
confidence_score、complex_plddt_score、ptm_score、iptm_score は高いほど一般に良好で、complex_pde_score は低いほど一般に良好です。おもちゃのような短い配列は API のスモークテストとして扱い、意味のある構造生物学の結果とは見なさないでください。OpenFold3 が科学的に適切な理由や使用すべき状況については、references/science.md を参照してください。
一般的な制限
- 1 リクエストあたりの入力数:1。
- 1 入力あたりの分子数:1~32。
- 拡散サンプル数:1~5。
- TensorRT パスは短い配列に対応します。PyTorch パスはより長い配列にも対応できますが、長い入力ではより多くの GPU メモリが必要です。
- 約 1800 残基を超える配列には、少なくとも 80 GB の GPU メモリが必要です。
- ローカル NIM は単一 GPU 専用です。Docker フラグで対象デバイスを選択してください。
トラブルシューティング
401:NGC API キーがない、有効期限切れ、または認証されていません。422:分子タイプが無効、配列に無効な文字が含まれている、MSA の形状が正しくない、またはdiffusion_samplesが 1~5 の範囲外です。- MSA エラー:アラインメントが
>query\nで始まっていることを確認してください。 - ローカルでの
404:予測 URL から/v1/を削除してください。 - ローカル起動が停止したように見える:初回実行時は、モデルの重み(10~15 GB)を
LOCAL_NIM_CACHEにダウンロードしている可能性があります。 - メモリエラー:配列を短くする、サンプル数を減らす、またはより大きな GPU を使用してください。