The simulate Stage
- Overview
- Examples
- Default Configuration
The simulate stage is the most fundamental Desmond stage – its basic functionality is to run a Desmond simulation. The simulation is defined by the keywords of the stage, which can modify thermodynamic properties, apply restraints to atoms, activate plugins, and more.
Sample Simulate Stage
To understand the basics of a simulate stage, see the sample breakdown of a Desmond minimization stage below:
simulate
{
title = "Brownian Dynamics NVT, T = 10 K, small timesteps, and restraints on solute heavy atoms, 100ps"
time = 100
timestep = [0.001 0.001 0.003]
temperature = 10.0
ensemble =
{
class = "NVT"
method = "Brownie"
# The delta_max stops any particle ever moving >0.1 A regardless of
# the force compelling it to do so.
brownie = {delta_max = 0.1}
}
restraints.new =
[{
name = posre_harm
atoms = solute_heavy_atom
force_constants = 50.0
}]
}
The keywords of this simulation stage define a “first-pass” minimization of the input system - a rough relaxation of a potentially unstable input structure. By modifying the given keywords, the stage could behave quite differently, highlighting how versatile the simulate stage is.
The first keyword is the title, which is a general-purpose keyword that can serve as a description for a customized stage. This is heavily used in template MSJs generated through Maestro to offer some insight into what the default generated stages are doing.
This simulation duration is 100ps, as set by the time keyword, and at a temperature of 10K. The integrator is configured with short timesteps (as mentioned in the title), and restraints are applied to the solute heavy atoms. Effectively, this stage is relaxing the solvent.
The ensemble keyword is used to specify the integrator that defines the time evolution of the system (method), as well as the ensemble class (class). In the example above, the Brownie integrator is used, which is able to handle very large potential energies/forces without having the system explode. This may be useful at the start of a simulation, where there may be extremely large forces due to misplaced solvents or other clashes.
Simulate Keywords
The keywords specified here work for all Desmond simulation stages (i.e. lambda_hopping, replica_exchange), not just the simulate stage. For a full list of the keywords in the simulation stage as well as their defaults, see the Default MSJ tab.
|
Keyword |
Description |
|
|
This specifies the .cfg configuration file to be used for the given simulation, as an input to the Desmond engine. This keyword is not required; multisim is capable of creating and supplying the relevant .cfg file. |
|
|
Specify internal coordinate restraints on bonds, angles, and torsions for specified atoms. Restraints can be a critical part of a simulation; see Simulation Restraints below for more information on this keyword and the Examples tab for examples. |
|
|
Define atom groups within the
Atom groups defined in the assign_forcefield stage are “permanent”—they are inherited by all subsequent stages. This can be overridden in a particular stage, but will still be applied in subsequent stages unless the |
Simulation Restraints
|
Keyword |
Description |
Syntax |
|---|---|---|
|
|
Add new restraints to any simulate stage in the MSJ file. |
restraints.new = [
{
name = name
atoms = [atoms]
force_constants = [value]
r0 = value
theta0 = value
phi0 = value
sigma = sigmavalue
}
]
|
|
|
Specifies how to deal with existing restraints from a previous stage. Default value is |
restraints.existing = retain |
|
|
Prints restraints to the Multisim log file. |
print_restraint = true |
There are some important considerations when applying restraints to a simulation.
The number of selections defined in atoms has to match the type of restraint (i.e., two for distance, three for angle, and four for dihedral/improper restraints). Any number of atoms may be used for positional restraints. Each selection has to specify a single atom. Individual atoms can be selected using the ASL atom.num or a.num syntax. For example, to select atom number 1, the ASL would be "atom.num 1" or "a.num 1".
The r0, theta0 and phi0 settings respectively specify the equilibrium distance, angle, and dihedral/improper torsion. If they are not specified, the atomic coordinates from the input structures are used to compute them.
Force constants should be specified in units of kcal mol-1 Å-2. You can include anisotropic restraints on a positional restraint by assigning the force constant as follows:
force_constant = [x-valuey-valuez-value]
See the Examples tab for examples of various restraints that can be applied.
Default configurations for the simulate stage. A {type} value is shown for keywords which do not have defaults set. See General multisim Stage Keywords for descriptions of general keywords
{
annealing = false
atom_group = none
backend = {
}
bigger_rclone = false
box = {}
cfg_file = ""
checkpt = {
first = 0.0
interval = 240.06
name = "$JOBNAME.cpt"
write_last_step = true
}
compress = "$MAINJOBNAME_$STAGENO-out.tgz"
coulomb_method = useries
cpu = 1
cutoff_radius = 9.0
dipole_moment = false
dir = "$[$JOBPREFIX/$]$[$PREFIX/$]$MAINJOBNAME_$STAGENO$[_lambda$LAMBDA$]"
dryrun = false
ebias_force = false
effect_if = {list}
elapsed_time = 0.0
energy_group = false
eneseq = {
first = 0.0
interval = 1.2
name = "$JOBNAME$[_replica$REPLICA$].ene"
}
ensemble = NPT
fep = {
i_window = {int}
lambda = "default:12"
output = {
first = 0.0
interval = 1.2
name = "$JOBNAME$[_replica$REPLICA$].dE"
}
trajectory = {
record_windows = [0 -1 ]
}
type = small_molecule
}
gaussian_force = false
gcmc = {
ene_name = "$JOBNAME$[_replica$REPLICA$]_gcmc.ene"
first = 0.0
gcmc_region = {
cell_size = 0.22
exclusion_radius = 2.2
global_switching = {
frequency = 0.2
move_factor = 3.0
spacing_factor = 2.0
}
region_buffer = 4.0
track_voids = true
}
interval = 4.8
ligand_file = {str}
moves = {
moves_per_cycle = 5000
}
mu_excess = -6.18
seed = random
solvent = {
s_file = ""
}
solvent_density = 0.03262
verbose = 0
}
glue = solute
host = "$SUBHOST"
jin_file = []
jin_must_transfer_file = []
jlaunch_opt = ["" ]
jobname = "$MAINJOBNAME_$STAGENO$[_lambda$LAMBDA$]"
jout = ""
lambda_dynamics = false
maeff_output = {
center_atoms = solute
first = 0.0
interval = 120.0
name = "$JOBNAME$[_replica$REPLICA$]-out.cms"
periodicfix = true
trjdir = "$JOBNAME$[_replica$REPLICA$]_trj"
}
meta = false
meta_file = {str}
msd = false
prefix = ""
pressure = 1.01325
pressure_tensor = false
print_expected_memory = false
print_restraint = false
randomize_velocity = {
first = 0.0
interval = inf
seed = 2007
temperature = "@*.temperature"
}
restrain = none
restraints = {
existing = ignore
new = []
}
rnemd = false
should_skip = false
should_sync = true
simbox = {
first = 0.0
interval = 1.2
name = "$JOBNAME$[_replica$REPLICA$]_simbox.dat"
}
spatial_temperature = false
struct_output = ""
surface_tension = 0.0
taper = false
temperature = 300.0
time = 1200.0
timestep = [0.002 0.002 0.006 ]
title = {str}
trajectory = {
center = []
first = 0.0
format = dtr
frames_per_file = 250
interval = 4.8
name = "$JOBNAME$[_replica$REPLICA$]_trj"
periodicfix = true
write_last_vel = false
write_velocity = false
}
transfer_asap = false
wall_force = false
window = {}
}