proteinmpnn-nim

Par nvidia · skills

Exécute le repliement inverse ProteinMPNN via NVIDIA NIM pour concevoir des séquences protéiques sur un squelette cible. Envoie les fichiers PDB fournis par l'utilisateur et les paramètres de conception à l'API hébergée par NVIDIA, authentifiée par une clé API d'environnement, ou à un NIM local sélectionné par l'utilisateur. À utiliser pour la conception de séquences, la reconception de squelette, les chaînes et résidus fixés, omit_AAs, la température d'échantillonnage, le modèle soluble, Docker local et la sortie multi-FASTA.

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

ProteinMPNN NIM

<!-- nv-carps: dummy edit to trigger NIM skill validation. -->

Concevez des séquences de protéines pour une structure PDB fournie. Utilisez ce guide pour une première utilisation en mode hébergé/local ; chargez les fichiers supplémentaires uniquement si nécessaire :

  • references/api.md: endpoints exacts, schémas, flags Docker, champs de réponse.
  • references/science.md: utilisations de repliement inverse, limites et validation.
  • references/parameters.md: contrôles de conception, positions fixes, échantillonnage.
  • references/validation.md: vérifications FASTA, score et structure.
  • references/examples.md: motifs de requête hébergé/local compacts.

Choisir le mode

Respectez le mode explicite de l'utilisateur ; sinon utilisez le runtime configuré. NIM_API_MODE=local sélectionne le service local sur PROTEINMPNN_NIM_URL ; l'URL par défaut est http://localhost:8000 pour un NIM s'exécutant sur le même hôte ou conteneur. Demandez uniquement quand ni l'environnement ni la requête de l'utilisateur ne rendent le mode clair :

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

  • Hébergé : https://health.api.nvidia.com/v1/biology/ipd/proteinmpnn/predict
  • Local : ajoutez /biology/ipd/proteinmpnn/predict à PROTEINMPNN_NIM_URL (URL de base par défaut : http://localhost:8000).

Les chemins d'inférence locaux n'incluent pas /v1/. 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 la prévérification) pour la connexion au registre, les vérifications de droits 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 pas d'en-tête d'authentification après readiness. Le démarrage sans clé avec cache chaud varie selon l'image/version et ne doit pas être supposé.

Transfert de données et autorisation

Avant une requête hébergée, informez l'utilisateur que le fichier PDB entier et les paramètres de conception seront téléchargés vers l'API hébergée NVIDIA au endpoint ci-dessus. Procédez si l'utilisateur a explicitement demandé le traitement hébergé de ce PDB ou a déjà approuvé le transfert ; sinon demandez une confirmation avant de soumettre. Pour les structures confidentielles, recommandez un NIM local dans l'environnement approuvé de l'utilisateur. Une URL locale configurée peut pointer vers une autre machine ; utilisez uniquement la destination configurée ou sélectionnée par l'utilisateur. Ne basculez pas du traitement local au traitement hébergé sans l'autorisation de l'utilisateur.

Le client lit NIM_API_MODE, PROTEINMPNN_NIM_URL et, pour le mode hébergé, NGC_API_KEY depuis l'environnement. Il envoie la clé uniquement dans l'en-tête Authorization HTTPS au endpoint hébergé ; l'inférence locale n'envoie pas de clé. Gardez les credentials hors des journaux et des artefacts sauvegardés. Le répertoire de sortie contient le PDB d'entrée complet dans request.json et les séquences et scores retournés, utilisez donc un emplacement approprié à la sensibilité de l'entrée. Consultez references/api.md pour les détails du endpoint et de la gestion des données.

Docker local

Pour la configuration locale, exécutez la séquence complète — préflight d'env, docker login, docker run, boucle de readiness, puis la requête localhost sans authentification ; ne répondez pas avec seulement une requête Python localhost. Pour la préflight exacte (sourçage de .env, gestion de NGC_API_KEY/NVIDIA_API_KEY et le docker run pour nvcr.io/nim/ipd/proteinmpnn:latest), copiez le bloc de commande dans references/api.md sous Docker Reference textuellement. Le cache mount de ce NIM est /home/nvs/.cache/nim, pas /opt/nim/.cache. Quand PROTEINMPNN_NIM_URL est fourni, le service est déjà géré ailleurs ; utilisez cette URL et ne démarrez pas un autre conteneur Docker.

Readiness :

proteinmpnn_nim_url="${PROTEINMPNN_NIM_URL:-http://localhost:8000}"
until curl -sf "${proteinmpnn_nim_url%/}/v1/health/ready"; do sleep 5; done

Instructions

Pour qu'une requête exécute une conception, exécutez scripts/design.py et inspectez ses résultats. Écrire seul un script de requête ne complète pas une requête d'exécution. Si l'utilisateur demande uniquement du code ou des instructions de configuration, fournissez-les sans soumettre de requête d'inférence.

  1. Utilisez le chemin PDB de l'utilisateur et le nombre de séquences demandé. Le client lit le PDB entier dans input_pdb ; ne remplacez ni ne tronquez pas la structure fournie.
  2. Sélectionnez --mode hosted ou --mode local et suivez Transfert de données et autorisation ci-dessus avant de soumettre. Le mode hébergé télécharge le PDB au endpoint NVIDIA documenté et nécessite NGC_API_KEY dans l'environnement. Vérifiez uniquement si la clé est définie ; ne l'imprimez pas, ne vidangez pas l'environnement et ne sauvegardez pas les en-têtes d'authentification. L'inférence locale n'envoie pas d'en-tête d'autorisation.
  3. Choisissez un nouveau --output-dir pour chaque requête. Le client le réserve avant de soumettre, préserve la réponse brute pour les diagnostics et valide l'alignement du nombre de séquences conçues et du score avant de signaler l'achèvement.
  4. Lisez summary.json et signalez les résultats réels décrits ci-dessous. Si la requête ou la validation échoue, signalez l'échec et le chemin de diagnostic ; ne substituez pas des séquences d'exemple et ne renvoyez pas la même requête à plusieurs reprises.

Exemples

Exécutez depuis le répertoire de cette skill, ou utilisez un chemin absolu vers scripts/design.py. Substituez le chemin d'entrée de l'utilisateur et un nouveau répertoire de sortie :

python scripts/design.py --mode hosted \
  --pdb /path/to/backbone.pdb --num-sequences 10 \
  --temperature 0.1 --output-dir /path/to/new-design-run

Pour un NIM local en cours d'exécution, utilisez --mode local ; le client respecte PROTEINMPNN_NIM_URL. Pour concevoir uniquement la chaîne A, exclure la cystéine ou demander le modèle soluble, ajoutez --chains A, --omit-aas C ou --soluble respectivement. --seed définit random_seed ; --ca-only sélectionne le modèle CA-only. L'assistant utilise une température par requête ; exécutez des répertoires de sortie séparés pour un balayage de température. Pour les contrôles JSONL avancés ou une requête batch personnalisée, utilisez references/api.md et l'exemple post-réponse dans references/examples.md.

Sauvegarder et signaler la sortie

Le client écrit request.json, response.raw, response.json, designed_sequences.fa et summary.json dans le répertoire de sortie demandé. Le FASTA préserve le mfasta retourné complet, incluant une entrée native/WT quand elle est présente. Le résumé contient uniquement les séquences conçues, chacune appairée avec son score réel, et enregistre si les scores proviennent du tableau JSON ou des en-têtes FASTA. Il est également imprimé après que les artefacts soient sauvegardés et vérifiés.

Dans la réponse finale, signalez :

  • Le nombre de séquences conçues, excluant la référence native/WT.
  • L'identifiant et le score réel retourné de chaque conception, plus sa séquence (pour les longues séquences, donnez un aperçu clairement étiqueté et un lien vers le FASTA complet).
  • Les chemins FASTA et résumé sauvegardés, et le chemin de réponse brut pour la traçabilité.
  • Que ce sont des candidats de repliement inverse, sans validation de repliement effectuée à moins que cela n'ait été explicitement demandé et exécuté.

Ne traitez pas un score comme une preuve qu'une séquence se replie ou se lie. La validation ultérieure avec Boltz2 ou OpenFold3 est une étape facultative. Pour les vérifications de santé FASTA/score, consultez references/validation.md.

Limites et dépannage

  • VRAM GPU minimum : environ 3 GB.
  • sampling_temp doit être une liste, même pour une valeur.
  • mfasta vide : vérifiez input_pdb non vide et num_seq_per_target >= 1.
  • Erreurs de parsing PDB : utilisez des enregistrements ATOM PDB valides.
  • URL locale 404 signifie généralement un préfixe /v1/ accidentel.
  • Erreur de cache mount : utilisez /home/nvs/.cache/nim à l'intérieur du conteneur.

Skills similaires