pymol

Par mkurman · zorai

Visualiser, analyser et afficher des structures protéiques et moléculaires avec PyMOL. À utiliser lorsque l'utilisateur souhaite créer des images de structures protéiques, effectuer des alignements ou des superpositions structurales, mesurer des distances ou des contacts, mettre en évidence des sites de liaison ou des résidus du site actif, colorier selon le B-factor/pLDDT, ou analyser des interactions protéine-ligand. Ne pas utiliser pour le docking, la dynamique moléculaire, ou l'analyse de séquences uniquement.

npx skills add https://github.com/mkurman/zorai --skill pymol

PyMOL

Prérequis

  1. uv : Lisez la skill uv et suivez ses instructions de configuration pour vous assurer que uv est installé et sur PATH.
  2. Notification utilisateur : Si LICENSE_NOTIFICATION.txt n'existe pas déjà dans le répertoire de cette skill, alors (1) notifiez l'utilisateur de manière bien visible de vérifier la licence sur https://www.pymol.org/, puis (2) créez le fichier en enregistrant le texte de notification et l'horodatage.

Vue d'ensemble

Toutes les commandes PyMOL s'exécutent sur l'hôte via uv avec le rendu logiciel OSMesa — aucun GPU, affichage ou serveur X n'est nécessaire. Les fichiers de structure doivent être téléchargés sur l'hôte avant d'exécuter PyMOL.

À NE PAS utiliser quand :

  • L'utilisateur veut exécuter des prédictions AlphaFold.
  • L'utilisateur veut des simulations d'ancrage ou de dynamique moléculaire.
  • L'utilisateur n'a que une séquence et aucun fichier de structure — récupérez d'abord la structure. Vérifiez si d'autres skills installées peuvent récupérer des structures de la PDB ou de la AlphaFold Database avant de continuer.

Configuration (Instructions pour l'agent)

Assurez-vous que uv est installé sur le système hôte. Les scripts PyMOL utilisent les en-têtes PEP 0723 pour déclarer leurs dépendances, et uv run gérera automatiquement leur installation (y compris pymol-open-source-whl) quand le script s'exécute.

Règles fondamentales

  • Les chemins de sortie doivent être absolus ou relatifs à la racine du projet de l'utilisateur. Exécutez toujours les scripts PyMOL depuis le répertoire du projet de l'utilisateur.
  • Rendu logiciel uniquement. Utilisez cmd.png() pour la sortie. N'utilisez jamais cmd.draw() ou cmd.ray() avec accélération matérielle — OSMesa ne le supporte pas. Définissez la variable d'environnement PYOPENGL_PLATFORM=osmesa pour le rendu sans affichage.
  • Enregistrez toujours un fichier de session .pse aux côtés de toute sortie PNG. Cela permet à l'utilisateur d'ouvrir la session dans sa PyMOL locale pour une inspection ultérieure.
  • Appelez toujours cmd.quit() à la fin de chaque script PyMOL. L'omettre cause l'arrêt du processus.
  • Le code d'initialisation est obligatoire. Chaque script PyMOL doit commencer par la séquence d'initialisation. from pymol import cmd doit venir après finish_launching(), pas avant.
  • Consultez references/PYMOL_REFERENCE.md pour la syntaxe de sélection, les commandes courantes et les pièges.
  • Vérification préalable des fichiers : Avant d'écrire le script PyMOL ou de l'exécuter, vous DEVEZ vérifier que le fichier de structure demandé existe réellement sur la machine hôte.
  • Vérifiez le chargement de la structure : Après avoir chargé une structure avec cmd.load(), vérifiez toujours qu'elle a réussi en vérifiant cmd.count_atoms("all"). Si le résultat est 0, imprimez une erreur sur stdout et appelez cmd.quit() immédiatement.
  • Notification : Si cette skill est utilisée, assurez-vous que cela est mentionné dans la sortie.

Démarrage rapide

  • Assurez-vous que les fichiers de structure sont téléchargés dans un répertoire du projet de l'utilisateur.
  • Écrivez un script PyMOL Python (par exemple, render.py) avec le code d'initialisation obligatoire et l'en-tête PEP 0723.
  • Exécutez-le via uv run : bash uv run render.py

Exemple de script minimal (render.py)

# /// script
# requires-python = ">=3.10, <3.13"
# dependencies = [
#     "pymol-open-source-whl",
# ]
# ///

import os
import sys

# Set environment variable for headless rendering
os.environ["PYOPENGL_PLATFORM"] = "osmesa"

import pymol # pytype: disable=import-error
pymol.pymol_argv = ["pymol", "-cq"]
pymol.finish_launching()

from pymol import cmd # pytype: disable=import-error

cmd.load("AF-P00520-F1-model_v4.cif", "structure")
cmd.show("cartoon")
cmd.color("green", "ss h")
cmd.color("yellow", "ss s")
cmd.color("gray", "ss l+''")
cmd.orient()
cmd.set("ray_opaque_background", 1)
cmd.png("output/render.png", width=1200, height=900, dpi=150)
cmd.save("output/session.pse")
cmd.quit()

Recettes courantes

Consultez references/RECIPES.md pour les recettes complètes et prêtes à copier-coller. Recettes disponibles :

  • Cartoon avec coloration de structure secondaire — coloration basique hélice/feuillet/boucle
  • Coloration par facteur B (pLDDT) — coloration continue du spectre par facteur B
  • Coloration pLDDT AlphaFold — couleurs de confiance canoniques basées sur seuils
  • Mettre en surbrillance des résidus spécifiques — montrer le site actif ou les résidus clés comme bâtons
  • Rendu de surface — surface transparente sur cartoon
  • Rendu de surface électrostatique — électrostatiques sous vide (qualitatif)
  • Couleurs de complexe multi-chaîne — coloration automatique par chaîne
  • Analyse putty par facteur B — largeur de tube proportionnelle à la flexibilité
  • Visualisation de cavités et poches — détection de cavités de surface avec focus sur ligand
  • Rendu batch multi-structure — rendu d'un répertoire de structures
  • Mesurer la distance entre résidus — distance CA–CA avec étiquettes
  • Zoom dans la poche de liaison — simple focus sur poche
  • Interaction protéine-ligand — isolement du ligand, rendu stylisé, contacts polaires
  • Superposition de deux structures avec RMSD — align/cealign avec repli automatique
  • Mutagenèse in silico — mutation de résidus avec l'assistant mutagenèse
  • Charger et modifier une session existante — réouvrir un fichier .pse

Interprétation des résultats

  • Le répertoire output/ contient les images PNG et un fichier de session .pse.
  • Toutes les mesures ou métriques (distances, RMSD, comptages d'atomes) sont imprimées sur stdout par le script PyMOL. Rapportez ces valeurs à l'utilisateur.
  • Présentez les images PNG à l'utilisateur et décrivez la visualisation.
  • Dites à l'utilisateur qu'il peut ouvrir le fichier .pse dans sa PyMOL locale pour explorer, faire pivoter ou modifier la visualisation.
  • Si l'utilisateur veut des modifications, chargez la .pse enregistrée dans un nouveau script et réexécutez.
  • Les grandes sessions avec surfaces peuvent dépasser la limite --max_output_mb (500 MB par défaut). Augmentez-la avec --max_output_mb=1000 si nécessaire.

Skills similaires