The replica_exchange Stage

This stage runs a replica exchange MD simulation on the system. For an overview of Replica Exchange, see the Replica Exchange Panel.

The replica_exchange stage is a Desmond simulation stage. For more information on Desmond simulation stages, see The simulate Stage. In addition to keywords common to other simulatioon stages, the replica exchange stage also takes a special replica keyword, which allows for replica-specific configuration.

Table 1. Keywords for the replica_exchange stage

Keyword

Description

cfg_file

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.

restraints

Specify internal coordinate restraints on bonds, angles, and torsions for specified atoms. Restraints can be a critical part of a simulation; see Simulation Restraints for more information on this keyword.

atom_group

Define atom groups within the .cms file (defined by the i_ffio_grp_name property). Atom groups can be restrained, or associated with particular thermostats. This keyword can take on the following values:

  • none—Remove all atom groups.

  • retain—Keep all atom groups from the previous stage.

  • { atom = atoms index = i name = name }—atom group block. Put the specified atoms in the atom group i that has the name name. The atom keyword accepts an atom list, an ASL expression prefixed by asl:, or keywords heavy atom, solute, solute_heavy_atom, solvent, solvent_heavy_atom. The index i is the value for the i_ffio_grp_name property. Desmond only supports index numbers from 0 to 7.

  • [ group1 group2 ... ]—Specify multiple atom groups. Each group can be specified as a block, in the above format.

Atom groups may also be defined in the assign_forcefield stage.

replica

Sets the simulation configuration for each replica. There are two ways to specify this keyword, described below.

The replica keyword sets the simulation configuration for each replica. There are two forms for setting this keyword. The first is for replica exchange calculations in which the temperature is set in each replica for all atoms in the system. Here, the replica keyword is a list, and each element of the list is a map value, which in turn specifies the simulation configuration for the corresponding replica. This example

replica = [ { temperature = 300.0 }
            { temperature = 302.0 }
            { temperature = 305.0 }
            { temperature = 308.0 }
            { temperature = 312.0 }
          ]

specifies that 5 replicas that will run, one at each of 300.0, 302.0, 305.0, 308.0, and 312.0 K. Within each of these map values, additional common keywords may be set. Note that there is no default value for replica keywords, since the settings often strongly depend on the model system.

Sometimes, different CMS files are used for different replicas. The CMS files can be specified in this form:

replica = [ { model_file = file1.cms  temperature = 300.0 }
            { model_file = file2.cms  temperature = 302.0 }
            { model_file = file3.cms  temperature = 305.0 }
            { model_file = file4.cms  temperature = 308.0 }
            { model_file = file5.cms  temperature = 312.0 }
          ]

The second form of the replica keyword is used for the REST (replica exchange with solute tempering) method [32], in which the temperature is set for only a subset of the atoms (the solute) in each replica. Here, replica is specified as a map, for example

replica = {
generator = solute_tempering
atom = "asl:atom.num 1-128"
temperature = [300.0 400.0 500.0 600.0]
}

The generator keyword specifies that solute tempering is used to generate the replicas. The atom keyword specifies the atoms involved, and the temperature list provides the temperatures to be used.

Default configurations for the replica_exchange 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"
   }
   replica = [
      {model_file = {str}
       temperature = 300
      }

      {model_file = {str}
       temperature = 310
      }
   ]
   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}
   total_proc = {int}
   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 = {}
}