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. Maxtime_divisions: 20. Maxsteps: 18. - GPU unique ; le minimum local est d'environ 24 GB de VRAM.
422:ligand_file_typeinvalide, 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/.