diffdock

Par mkurman · zorai

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

name: diffdock description: Amarrage moléculaire basé sur la diffusion. Prédire les poses de liaison protéine-ligand à partir de PDB/SMILES, scores de confiance, criblage virtuel, pour la conception de médicaments basée sur la structure. Non destiné à la prédiction d'affinité. license: MIT license tags: [protein-ligand-docking, binding-pose-prediction, diffusion-docking, virtual-screening, diffdock] metadata: skill-author: K-Dense Inc. ---------|------------------|----------------| | > 0 | Élevée | Prédiction forte, probablement précise | | -1,5 à 0 | Modérée | Prédiction raisonnable, valider avec soin | | < -1,5 | Faible | Prédiction incertaine, nécessite validation |

Notes critiques :

  1. Confiance ≠ Affinité : Une confiance élevée signifie la certitude du modèle sur la structure, NON une liaison forte
  2. Le contexte importe : Ajustez vos attentes pour :
    • Ligands volumineux (>500 Da) : Confiance plus faible attendue
    • Protéines multi-chaînes : Peut diminuer la confiance
    • Familles protéiques nouvelles : Peut donner des résultats médiocres
  3. Multiples échantillons : Examinez les 3-5 meilleures prédictions, cherchez un consensus

Pour des conseils détaillés : Lisez references/confidence_and_limitations.md en utilisant l'outil Read

Personnalisation des paramètres

Utiliser une configuration personnalisée

Créez une configuration personnalisée pour des cas d'usage spécifiques :

# Copier le modèle
cp assets/custom_inference_config.yaml my_config.yaml

# Éditer les paramètres (voir le modèle pour les présets)
# Puis exécuter avec la configuration personnalisée
python -m inference \
  --config my_config.yaml \
  --protein_ligand_csv input.csv \
  --out_dir results/

Paramètres clés à ajuster

Densité d'échantillonnage :

  • samples_per_complex: 10 → Augmentez à 20-40 pour les cas difficiles
  • Plus d'échantillons = meilleure couverture mais temps d'exécution plus long

Étapes d'inférence :

  • inference_steps: 20 → Augmentez à 25-30 pour une précision plus élevée
  • Plus d'étapes = qualité potentiellement meilleure mais plus lent

Paramètres de température (contrôlent la diversité) :

  • temp_sampling_tor: 7.04 → Augmentez pour les ligands flexibles (8-10)
  • temp_sampling_tor: 7.04 → Diminuez pour les ligands rigides (5-6)
  • Température plus élevée = poses plus diverses

Présets disponibles dans le modèle :

  1. Haute précision : Plus d'échantillons + étapes, température plus faible
  2. Criblage rapide : Moins d'échantillons, plus rapide
  3. Ligands flexibles : Température de torsion augmentée
  4. Ligands rigides : Température de torsion diminuée

Pour la référence complète des paramètres : Lisez references/parameters_reference.md en utilisant l'outil Read

Techniques avancées

Amarrage d'ensemble (flexibilité de la protéine)

Pour les protéines avec flexibilité connue, amarrez-vous à plusieurs conformations :

# Créer CSV d'ensemble
import pandas as pd

conformations = ["conf1.pdb", "conf2.pdb", "conf3.pdb"]
ligand = "CC(=O)Oc1ccccc1C(=O)O"

data = {
    "complex_name": [f"ensemble_{i}" for i in range(len(conformations))],
    "protein_path": conformations,
    "ligand_description": [ligand] * len(conformations),
    "protein_sequence": [""] * len(conformations)
}

pd.DataFrame(data).to_csv("ensemble_input.csv", index=False)

Exécutez l'amarrage avec échantillonnage augmenté :

python -m inference \
  --config default_inference_args.yaml \
  --protein_ligand_csv ensemble_input.csv \
  --samples_per_complex 20 \
  --out_dir results/ensemble/

Intégration avec des fonctions de scoring

DiffDock génère des poses ; combinez avec d'autres outils pour l'affinité :

GNINA (scoring de réseau de neurones rapide) :

for pose in results/*.sdf; do
    gnina -r protein.pdb -l "$pose" --score_only
done

MM/GBSA (Plus précis, plus lent) : Utilisez AmberTools MMPBSA.py ou gmx_MMPBSA après minimisation d'énergie

Calculs d'énergie libre (Plus précis) : Utilisez OpenMM + OpenFE ou GROMACS pour les calculs FEP/TI

Flux de travail recommandé :

  1. DiffDock → Générer des poses avec scores de confiance
  2. Inspection visuelle → Vérifier la plausibilité structurale
  3. GNINA ou MM/GBSA → Rescore et classez par affinité
  4. Validation expérimentale → Essais biochimiques

Limitations et portée

DiffDock est conçu pour :

  • Petits ligands moléculaires (typiquement 100-1000 Da)
  • Composés organiques de type drogue
  • Petits peptides (<20 résidus)
  • Protéines monochaîne ou multichaîne

DiffDock N'est PAS conçu pour :

  • Grandes biomolécules (amarrage protéine-protéine) → Utilisez DiffDock-PP ou AlphaFold-Multimer
  • Grands peptides (>20 résidus) → Utilisez des méthodes alternatives
  • Amarrage covalent → Utilisez des outils d'amarrage covalent spécialisés
  • Prédiction d'affinité de liaison → Combinez avec des fonctions de scoring
  • Protéines membranaires → Non spécifiquement entraîné, utilisez avec prudence

Pour les limitations complètes : Lisez references/confidence_and_limitations.md en utilisant l'outil Read

Dépannage

Problèmes courants

Problème : Scores de confiance faibles dans toutes les prédictions

  • Cause : Ligands volumineux/inhabituels, site de liaison peu clair, flexibilité protéique
  • Solution : Augmentez samples_per_complex (20-40), essayez l'amarrage d'ensemble, validez la structure protéique

Problème : Erreurs de mémoire insuffisante

  • Cause : Mémoire GPU insuffisante pour la taille du lot
  • Solution : Réduisez --batch_size 2 ou traitez moins de complexes à la fois

Problème : Performance lente

  • Cause : Exécution sur CPU au lieu de GPU
  • Solution : Vérifiez CUDA avec python -c "import torch; print(torch.cuda.is_available())", utilisez GPU

Problème : Poses de liaison peu réalistes

  • Cause : Mauvaise préparation protéique, ligand trop volumineux, mauvais site de liaison
  • Solution : Vérifiez la protéine pour les résidus manquants, supprimez les eaux éloignées, envisagez de spécifier le site de liaison

Problème : Erreurs « Module not found »

  • Cause : Dépendances manquantes ou mauvais environnement
  • Solution : Exécutez python scripts/setup_check.py pour diagnostiquer

Optimisation des performances

Pour les meilleurs résultats :

  1. Utilisez GPU (essentiel pour un usage pratique)
  2. Pré-calculez les embeddings ESM pour un usage protéique répété
  3. Traitez par lots plusieurs complexes ensemble
  4. Commencez avec les paramètres par défaut, puis affinez si nécessaire
  5. Validez les structures protéiques (résolvez les résidus manquants)
  6. Utilisez SMILES canoniques pour les ligands

Interface utilisateur graphique

Pour un usage interactif, lancez l'interface web :

python app/main.py
# Naviguez vers http://localhost:7860

Ou utilisez la démo en ligne sans installation :

Ressources

Scripts d'aide (scripts/)

prepare_batch_csv.py : Créer et valider les fichiers CSV d'entrée par lots

  • Créer des modèles avec des entrées d'exemple
  • Valider les chemins de fichier et les chaînes SMILES
  • Vérifier les colonnes requises et les problèmes de format

analyze_results.py : Analyser les scores de confiance et classer les prédictions

  • Analyser les résultats d'exécutions simples ou par lots
  • Générer des résumés statistiques
  • Exporter en CSV pour analyse en aval
  • Identifier les meilleures prédictions sur tous les complexes

setup_check.py : Vérifier la configuration de l'environnement DiffDock

  • Vérifier la version Python et les dépendances
  • Vérifier la disponibilité de PyTorch et CUDA
  • Tester l'installation de RDKit et PyTorch Geometric
  • Fournir des instructions d'installation si nécessaire

Documentation de référence (references/)

parameters_reference.md : Documentation complète des paramètres

  • Toutes les options de ligne de commande et paramètres de configuration
  • Valeurs par défaut et plages acceptables
  • Paramètres de température pour contrôler la diversité
  • Emplacements des points de contrôle de modèle et flags de version

Lisez ce fichier quand les utilisateurs ont besoin de :

  • Explications détaillées des paramètres
  • Conseils de réglage fin pour des systèmes spécifiques
  • Stratégies d'échantillonnage alternatives

confidence_and_limitations.md : Interprétation des scores de confiance et limitations de l'outil

  • Interprétation détaillée des scores de confiance
  • Quand faire confiance aux prédictions
  • Portée et limitations de DiffDock
  • Intégration avec des outils complémentaires
  • Stratégies de validation

Lisez ce fichier quand les utilisateurs ont besoin de :

  • Aide pour interpréter les scores de confiance
  • Comprendre quand NE PAS utiliser DiffDock
  • Conseils sur la combinaison avec d'autres outils
  • Stratégies de validation

workflows_examples.md : Exemples de flux de travail complets

  • Instructions d'installation détaillées
  • Exemples pas à pas pour tous les flux de travail
  • Schémas d'intégration avancés
  • Dépannage des problèmes courants
  • Meilleures pratiques et conseils d'optimisation

Lisez ce fichier quand les utilisateurs ont besoin de :

  • Exemples de flux de travail complets avec code
  • Intégration avec GNINA, OpenMM ou d'autres outils
  • Flux de travail de criblage virtuel
  • Procédures d'amarrage d'ensemble

Actifs (assets/)

batch_template.csv : Modèle pour le traitement par lots

  • CSV pré-formaté avec colonnes requises
  • Entrées d'exemple montrant différents types d'entrée
  • Prêt à personnaliser avec les données réelles

custom_inference_config.yaml : Modèle de configuration

  • YAML annoté avec tous les paramètres
  • Quatre configurations de présets pour les cas d'usage courants
  • Commentaires détaillés expliquant chaque paramètre
  • Prêt à personnaliser et utiliser

Meilleures pratiques

  1. Toujours vérifier l'environnement avec setup_check.py avant de démarrer de gros travaux
  2. Valider les CSV par lots avec prepare_batch_csv.py pour détecter les erreurs tôt
  3. Commencer par les valeurs par défaut puis affiner les paramètres en fonction des besoins spécifiques du système
  4. Générer plusieurs échantillons (10-40) pour des prédictions robustes
  5. Inspection visuelle des meilleures poses avant analyse en aval
  6. Combiner avec des fonctions de scoring pour l'évaluation de l'affinité
  7. Utiliser les scores de confiance pour le classement initial, pas les décisions finales
  8. Pré-calculer les embeddings pour les campagnes de criblage virtuel
  9. Documenter les paramètres utilisés pour la reproductibilité
  10. Valider les résultats expérimentalement si possible

Citations

Quand vous utilisez DiffDock, citez les articles appropriés :

DiffDock-L (modèle par défaut actuel) :

Stärk et al. (2024) "DiffDock-L: Improving Molecular Docking with Diffusion Models"
arXiv:2402.18396

DiffDock original :

Corso et al. (2023) "DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking"
ICLR 2023, arXiv:2210.01776

Ressources supplémentaires

Skills similaires