diffdock-nim

Par nvidia · skills

Exécutez le docking moléculaire DiffDock via NVIDIA NIM pour prédire les poses de liaison de petites molécules sur des cibles protéiques. À utiliser pour DiffDock, le docking moléculaire, le docking de ligands, le blind docking, les ligands SMILES ou SDF, les poses classées, les scores de confiance, l'API NVIDIA hébergée ou le déploiement Docker local.

npx skills add https://github.com/nvidia/skills --skill diffdock-nim

DiffDock NIM

Prédire les poses de liaison protéine-ligand avec docking aveugle. Utilisez ce guide pour une première utilisation hébergée/locale ; chargez les fichiers supplémentaires seulement si nécessaire :

  • references/api.md : endpoints et schémas hébergés/locaux exacts, drapeaux Docker.
  • references/science.md : cas d'usage du docking, limites et relais.
  • references/parameters.md : formats de ligands, nombre de poses, contrôles de diffusion.
  • references/validation.md : vérifications du récepteur, du ligand, de la pose et de la confiance.
  • references/examples.md : motifs compacts hébergés/locaux et sauvegarde de poses.

Choisir le mode

Posez la question seulement si le contexte n'est pas clair :

API NVIDIA hébergée ou Docker NIM local ?

  • Hébergé : https://health.api.nvidia.com/v1/biology/mit/diffdock
  • Local : http://localhost:8000/molecular-docking/diffdock/generate

Les chemins hébergés et locaux diffèrent. Local n'a pas le préfixe /v1/ et utilise la route /molecular-docking/. Les requêtes hébergées utilisent Authorization: Bearer $NGC_API_KEY. Le démarrage Docker local supporté utilise NGC_API_KEY (ou NVIDIA_API_KEY via le préalable) pour la connexion au registre, les vérifications de droit et les téléchargements de modèle à la première exécution ; transmettez-le au conteneur avec -e NGC_API_KEY. Les requêtes d'inférence locales n'utilisent aucun en-tête d'authentification après la disponibilité. Le démarrage sans clé avec cache chaud varie selon l'image/version et ne doit pas être supposé.

Docker local

Pour le préalable local exact (chargement .env, fallback NVIDIA_API_KEY, LOCAL_NIM_CACHE, NVIDIA_VISIBLE_DEVICES=0, --shm-size=2G, les deux drapeaux --ulimit, docker login et le docker run pour nvcr.io/nim/mit/diffdock:2.2.0), copiez le bloc de commande dans references/api.md sous Docker Reference textuellement.

Disponibilité :

until curl -sf http://localhost:8000/v1/health/ready; do sleep 5; done

Préparer les entrées

Le récepteur protéique doit contenir uniquement les enregistrements ATOM. Supprimez les en-têtes, l'eau et 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")

Options de ligand :

  • 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".

N'utilisez pas "smiles" comme ligand_file_type ; SMILES est "txt".

Motif de requête

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()

Enregistrer et rapporter la sortie

ligand_positions et position_confidence sont des listes parallèles classées. position_confidence[0] est la confiance de la pose de rang 1.

Enregistrez les SDF de pose classés en utilisant l'extrait dans references/examples.md sous Save Ranked Poses.

Affichez les fichiers SDF de pose avec le récepteur dans PyMOL, ChimeraX ou UCSF Chimera. Pour les vérifications de cohérence de pose et les avertissements sur la confiance, consultez references/validation.md.

Limites et dépannage

  • Max num_poses : 100. Max time_divisions : 20. Max steps : 18.
  • GPU unique ; le minimum local est d'environ 24 GB de VRAM.
  • 422 : ligand_file_type invalide, SMILES/SDF invalide, ou pas d'enregistrements ATOM.
  • Poses vides : validez les enregistrements ATOM du récepteur et l'analysabilité du ligand.
  • L'URL locale 404 signifie généralement le mauvais chemin hébergé ou un accidental /v1/.

Skills similaires