Retour
Biotech
Octobre 2021

GROMACS sur Qarnot Cloud

GROMACS est l'un des progiciels de dynamique moléculaire les plus rapides et les plus populaires. Il est principalement conçu pour les simulations de dynamique moléculaire de protéines, de lipides et d'acides nucléiques. Il est gratuit et open-source et peut fonctionner sur des unités centrales de traitement (CPU) et des unités de traitement graphique (GPU).

Version

Le cas test utilise la version 2021.2 de GROMACS de la série 2021.

Si vous êtes intéressé par une autre version, veuillez nous envoyer un e-mail à qlab@qarnot.com.

Prérequis

Avant de lancer une tâche de calcul, veuillez vous assurer que vous remplissez déjà ces conditions :

Cas test

Ce cas test est basé sur la simulation du tutoriel de Justin A. Lemkul, Ph.D., sur le lysozyme dans l'eau. Un tutoriel de mdtutorials est disponible. Les fichiers .mdp, le fichier .pdb de la Protein Data Bank et le script pour lancer la simulation peuvent être téléchargés en une seule fois via ce zip. Décompressez le dossier lysozyme-in-water.zip pour pouvoir l'utiliser sur Qarnot.

Copiez le code suivant dans un script .sh et placez-le dans le dossier lysozyme-in-water que vous avez décompressé précédemment. Il contient les instructions GROMACS pour exécuter la simulation.

run_md.sh

#!/bin/bash

#--------------- Lysozyme in water --------------------#

. /usr/local/gromacs/bin/GMXRC

#-- Get a topology file, a position retrain file, a post-processed structure file
# spce is the water model
# 15: OPLS-AA/L all-atom force field (2001 aminoacid dihedrals)
echo 15 | gmx pdb2gmx -f 1aki.pdb -o 1aki_processed.gro -water spce

#-- Create the limits of the system
gmx editconf -f 1aki_processed.gro -o 1aki_newbox.gro -d 1.0 -bt cubic

#-- Fill the vaccum with water molecules
gmx solvate -cp 1aki_newbox.gro -cs spc216.gro -o 1aki_solv.gro -p topol.top

#-- Add ions to the system
gmx grompp -f ions.mdp -c 1aki_solv.gro -p topol.top -o ions.tpr
echo 13 | gmx genion -s ions.tpr -o 1aki_solv_ions.gro -p topol.top -pname NA -nname CL -nn 8

#-- Relax the system (energy minimization)
gmx grompp -f minim.mdp -c 1aki_solv_ions.gro -p topol.top -o em.tpr
gmx mdrun -v -deffnm em

#-- NVT simulation : constant Number of particles, Volume, and Temperature. Stabilize the temperature of the system
gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr
gmx mdrun -v -deffnm nvt

#-- NPT simulation: Number of particles, Pressure, and Temperature are all constant. Stabilize the pressure
gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr
gmx mdrun -v -deffnm npt

#-- The system is now well-equilibrated at the desired temperature and pressure. Release the position restraints and run production MD for data collection
gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -o md_0_1.tpr
gmx mdrun -v -deffnm md_0_1

Le lecteur peut consulter le Tutoriel GROMACS : Lysozyme dans l'eau pour plus d'informations sur ce script et l'interprétation des résultats.

Lancement du cas

Copiez le code suivant dans un script Python et enregistrez-le à côté du dossier lysozyme-in-water. Assurez-vous d'avoir copié votre jeton d'authentification dans le script (à la place de MY_SECRET_TOKEN) pour pouvoir lancer la tâche sur Qarnot.

gromacs.py

#!/usr/bin/env python3

import qarnot

# Create a connection
conn = qarnot.connection.Connection(client_token="MY_SECRET_TOKEN")

# Create a task
task = conn.create_task('md-gromacs', 'docker-batch', 1)

# Create a resource bucket and add iput files 
input_bucket = conn.create_bucket('md-gromacs-input')
input_bucket.sync_directory('input/')

# Attach the bucket to the task
task.resources.append(input_bucket)

# Create a result bucket and attach it to the task
output_bucket = conn.create_bucket('md-gromacs-output')
task.results = output_bucket

# Set the command to run when launching the container, by overriding a constant.
# Task constants are the main way of controlling a task's behaviour
task.constants['DOCKER_REPO'] = 'qarnotlab/gromacs'
task.constants['DOCKER_TAG'] = '2021.2'
task.constants['DOCKER_CMD'] = 'sh -c "./run_md.sh 2>&1 | tee output.log"'

# Submit the task to the Api, that will launch it on the cluster
task.submit()

Assurez-vous que tous les fichiers d'entrée mentionnés ci-dessus (1 fichier .pdb, 5 fichiers .mdp, 1 fichier .sh) se trouvent dans le même dossier nommé lysozyme-in-water. Votre répertoire de travail devrait ressembler à ceci :

Pour lancer ce script, ouvrez un terminal dans votre répertoire de travail et exécutez python3 gromacs.py &. Cela lancera l'exécution de run_md.sh sur Qarnot et attendra en arrière-plan jusqu'à ce que l'exécution soit terminée pour télécharger les résultats (cela peut prendre jusqu'à 1h).

Résultats

À tout moment, vous pouvez surveiller l'état de votre tâche sur notre plateforme. Vous devriez maintenant avoir un dossier output dans votre répertoire de travail sur votre ordinateur et un bucket gromacs-out sur Tasq contenant tous les fichiers de sortie. Vous pouvez par exemple ouvrir le fichier md_0_1.gro pour visualiser le résultat final en utilisant un programme de visualisation tel que VMD ou avec un visualiseur de fichiers .gro en ligne tel que Groview.

La simulation de dynamique moléculaire GROMACS génère plusieurs fichiers de sortie dans le dossier output. Pour plus d'informations, consultez la partie Analyse du Tutoriel GROMACS : Lysozyme dans l'eau de Justin A. Lemkul, Ph.D.

Conclusion

C'est tout ! Si vous avez des questions, veuillez contacter qlab@qarnot.com et nous vous aiderons avec plaisir !

Retour

Nos articles