molecular-dynamics

Par mkurman · zorai

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

name: molecular-dynamics description: Exécutez et analysez des simulations de dynamique moléculaire avec OpenMM et MDAnalysis. Configurez des systèmes protéine/petite molécule, définissez des champs de force, exécutez la minimisation d'énergie et la MD de production, analysez les trajectoires (RMSD, RMSF, cartes de contact, surfaces d'énergie libre). Pour la biologie structurale, la liaison de ligands et la biophysique. license: MIT tags: [scientific-skills, molecular-dynamics, cheminformatics] metadata: skill-author: Kuan-lin Huang -----|------------------------|-------------| | Protéines standard | AMBER14 (amber14-all.xml) | TIP3P-FB | | Protéines + petites molécules | AMBER14 + GAFF2 | TIP3P-FB | | Protéines membranaires | CHARMM36m | TIP3P | | Acides nucléiques | AMBER99-bsc1 ou AMBER14 | TIP3P | | Protéines désordonnées | ff19SB ou CHARMM36m | TIP3P |

Outils de préparation du système

PDBFixer (pour les fichiers PDB bruts)

from pdbfixer import PDBFixer
from openmm.app import PDBFile

def fix_pdb(input_pdb, output_pdb, ph=7.0):
    """Corrigez les problèmes PDB courants : résidus manquants, atomes, ajoutez H, normalisez."""
    fixer = PDBFixer(filename=input_pdb)
    fixer.findMissingResidues()
    fixer.findNonstandardResidues()
    fixer.replaceNonstandardResidues()
    fixer.removeHeterogens(True)    # Supprimez l'eau/les ligands
    fixer.findMissingAtoms()
    fixer.addMissingAtoms()
    fixer.addMissingHydrogens(ph)

    with open(output_pdb, 'w') as f:
        PDBFile.writeFile(fixer.topology, fixer.positions, f)

    return output_pdb

GAFF2 pour les petites molécules (via OpenFF Toolkit)

# Pour la paramétrisation de ligands, utilisez OpenFF toolkit ou ACPYPE
# pip install openff-toolkit
from openff.toolkit import Molecule, ForceField as OFFForceField
from openff.interchange import Interchange

def parameterize_ligand(smiles, ff_name="openff-2.0.0.offxml"):
    """Générez les paramètres GAFF2/OpenFF pour une petite molécule."""
    mol = Molecule.from_smiles(smiles)
    mol.generate_conformers(n_conformers=1)

    off_ff = OFFForceField(ff_name)
    interchange = off_ff.create_interchange(mol.to_topology())
    return interchange

Bonnes pratiques

  • Toujours minimiser avant la MD : Les structures PDB brutes présentent des chocs stériques
  • Équilibrer avant la production : NVT (50–100 ps) → NPT (100–500 ps) → Production
  • Utiliser un GPU : Les simulations sont 10–100× plus rapides sur GPU (CUDA/OpenCL)
  • Pas de temps de 2 fs avec contraintes de liaisons H : Standard ; utilisez 4 fs avec HMR (répartition de masse d'hydrogène)
  • Analyser uniquement la trajectoire équilibrée : Descartez les premiers 20–50 % pour l'équilibration
  • Sauvegarder les checkpoints : Les exécutions de MD peuvent échouer ; les checkpoints permettent le redémarrage
  • Conditions aux limites périodiques : Requises pour les systèmes solvatés
  • PME pour l'électrostatique : Plus précis que les méthodes de cutoff pour les systèmes chargés

Ressources supplémentaires

Skills similaires