Tutorial#
Molecular dynamics simulation of DHFR#
DHFR (dihydrofolate reductase) is a globular protein commonly used as a benchmark in MD simulations.
For the MD simulation with ACEMD, you need to:
Prepare the simulation system and corresponding force field files
Write an input file
Run the simulation
All these tasks can be done easily with HTMD: following the tutorial of the molecular dynamics protocols.
In this tutorial, we show how to run the MD simulation with ACEMD directly.
The prepared DHFR files for the CHARMM 36 force field can be found here
.
Preparation#
Extract the files to an empty directory and change into the dhfr_charmm
directory
unzip acemd_benchmarks.zip -d /tmp/
cd /tmp/acemd_benchmarks/dhfr_charmm
The input file is for an NVT (298.15 K) simulation with 4 fs time step
parameters: dhfr.prm
structure: dhfr.psf
coordinates: dhfr.pdb
boxsize: [62.23, 62.23, 62.23]
thermostat: true
run: 28ns
The other parameters are set to the default values (see the input file options for details).
Starting the simulation#
acemd
By default, ACEMD runs on the first GPU (device 0).
This can be changed with --device
argument (see the command line arguments for details).
During the simulation, log messages are written to the standard output as well as to the output.csv
file,
and the simulation trajectory is saved to output.xtc
.
Also, the simulation state is periodically saved to restart.chk
(see the input options for details)
$ ls -1
dhfr.pdb
dhfr.prm
dhfr.psf
input.yaml
output.coor
output.csv
output.vel
output.xsc
output.xtc
restart.chk
Python API#
ACEMD 4.0 introduces a basic Python API to run simulations. Instead of executing the acemd
command from the command line,
simulations can be run by importing the acemd
package and calling the acemd()
function. This allows for better
integration of ACEMD within python packages and scripts.
from acemd import acemd
acemd(".") # Execute the current directory
This function can also accept any keyword arguments from the input options in lower case to override the values read from the input file in the given directory.
For example if we want to run the simulation in the directory /tmp/my_simulation
for 2 ns,
we can do the following:
acemd("/tmp/my_simulation", run="2ns")
This will read the input file from /tmp/my_simulation/input.yaml
and override the run
parameter with the given value.
You can also pass as keyword arguments any of the command line arguments for example to specify the device to run on:
acemd("/tmp/my_simulation", device=[0, 1], run="2ns")