GenMol NIM
Générez des molécules de type médicament avec GenMol. Utilisez ce guide pour une première utilisation en mode hébergé ou local ; chargez les fichiers supplémentaires uniquement si nécessaire :
references/api.md: endpoints, schéma, flags Docker, champs de réponse.references/science.md: cas d'usage, forces, limites et transitions.references/parameters.md: motifs SAFE et effets de réglage.references/validation.md: vérifications chimiques et d'artefacts.references/examples.md: motifs de requête compacts.
Choisir le mode
Posez la question uniquement si le contexte est flou :
API NVIDIA hébergée ou NIM Docker local ?
- Hébergé :
https://health.api.nvidia.com/v1/biology/nvidia/genmol/generate - Local :
http://localhost:8000/generate
Les requêtes hébergées utilisent Authorization: Bearer $NGC_API_KEY. Le démarrage Docker local pris en charge utilise NGC_API_KEY (ou NVIDIA_API_KEY via le préflight) pour la connexion au registre, les vérifications d'entitlement et les téléchargements de modèles à la première exécution ; passez-le au conteneur avec -e NGC_API_KEY. Les requêtes d'inférence locales n'utilisent aucun header d'authentification après readiness. Le démarrage sans clé avec cache chaud varie selon l'image/version et ne doit pas être supposé.
Docker local
Utilisez d'abord l'env shell ; sourcez le .env à la racine du repo uniquement s'il existe. N'imprimez pas les clés.
Pour les réponses de configuration locale, incluez cette séquence : préflight env, docker login, docker run, boucle readiness, puis une requête localhost sans authentification. N'inventez pas de cache par défaut et ne supprimez pas le fallback NVIDIA_API_KEY.
Pour le préflight de démarrage exact (sourçage de .env, fallback NVIDIA_API_KEY, --shm-size=2G, les deux flags --ulimit, docker login et le docker run pour nvcr.io/nim/nvidia/genmol:1.0.1), copiez le bloc de commande dans references/api.md sous Docker run reference verbatim.
GenMol est mono-GPU ; NIM_TEST_GPU a pour défaut 0. Attendez la readiness :
until curl -sf http://localhost:8000/v1/health/ready; do sleep 5; done
Entrée SAFE
Le champ API s'appelle smiles, mais GenMol s'attend à la notation SAFE. Les positions masquées utilisent [*{min-max}].
- De novo :
safe_input = "[*{20-30}]" - Décoration d'échafaudage :
safe_input = scaffold_to_safe("C1CC(=O)NC1", 10, 15) - Extension de motif :
safe_input = f"[*{{5-10}}].{motif_safe}.[*{{5-10}}]" - Optimisation de lead : encodez le hit, puis remplacez un fragment par
.[*{5-12}]
Utilisez safe-mol pour la génération conditionnée. Les échafaudages en anneau simples peuvent lever SAFEFragmentationError ; repliez-vous sur le SMILES original plus un masque SAFE.
Voir l'helper scaffold_to_safe dans references/examples.md sous Scaffold Decoration.
Les masques plus larges augmentent la diversité ; les masques serrés maintiennent la taille des analogues plus prévisible.
Motif de requête
import os
import requests
HOSTED = True
url = (
"https://health.api.nvidia.com/v1/biology/nvidia/genmol/generate"
if HOSTED else "http://localhost:8000/generate"
)
headers = {"Content-Type": "application/json"}
if HOSTED:
headers["Authorization"] = f"Bearer {os.getenv('NGC_API_KEY')}"
payload = {
"smiles": "[*{20-30}]", # notation SAFE
"num_molecules": 30,
"temperature": "1.0", # chaîne, pas float
"noise": "1.0", # chaîne, pas float
"step_size": 1,
"scoring": "QED", # ou "LogP"
"unique": False,
}
response = requests.post(url, headers=headers, json=payload, timeout=180)
response.raise_for_status()
result = response.json()
Pièges :
temperatureetnoisesont des chaînes.num_moleculesest 1-1000 ; les molécules invalides/dupliquées peuvent être filtrées, donc demandez plus quand l'utilisateur a besoin d'un nombre minimum.scoringest"QED"pour la ressemblance aux médicaments ou"LogP"pour la lipophilie.- Définissez
unique=Truepour les listes d'analogues dédupliquées.
Enregistrer et reporter la sortie
Triez les molécules par score, imprimez les meilleures rangs et écrivez un fichier .smi comme montré dans references/examples.md sous Save Ranked Results. Pour la validité chimique, l'unicité, les alertes PAINS et la visualisation avec RDKit, lisez references/validation.md.
Limites et dépannage
- Moins de molécules que demandé est attendu après filtrage.
- Les chaînes SAFE invalides causent
status: "failed"ou des erreurs de validation. - Installez
safe-moluniquement pour les workflows d'échafaudage, motif ou optimisation de lead ; les masques de novo fonctionnent sans conversion. - Le démarrage local télécharge environ 20 GB dans
LOCAL_NIM_CACHE. - Problèmes de conteneur : confirmez
nvidia-smi, NVIDIA Container Toolkit et--runtime=nvidia; utilisezNIM_TEST_GPUpour choisir le seul GPU visible.