|
There
are three classes of molecular mechanics method.
The Energy Minimization module offers two methods:
Simple Steepest Descent and the Conjugate Gradient
method of Polak-Ribiere. The Molecular Dynamics
module offers one method: the Verlet method for
Newtonian dynamics. The Monte Carlo module offers
one method: Metropolis using three types of moves -
Atomic (single atom, translation only), Grouped
(rigid bodies, translation and rotation) and Axial
(semi-rigid bodies, rotation only).
|
Module
|
Constructor
Function
|
Simulation
Methods
|
Utility
Methods
|
|
EnerMinim
|
Minimizers()
|
SimpleSD()
CGPR()
|
-
|
|
MolDynam
|
Motors()
|
Verlet()
|
set_Temperature()
set_ThermMethod()
|
|
MonteCarlo
|
Casino()
|
Metropolis()
|
showstatistics()
showtransform()
|
In
all cases, one would need a complete Model object.
This is passed to the Constructor function which
returns a molecular mechanics object. At that
point, one can adjust some of the simulation
conditions, by assigning appropriate values to the
data attributes (see the pages for each method) or
by applying a utility method. Note that each of
the method modules have to set the parent MolMech module separately. The simulation is
performed by calling the appropriate simulation
method. In all cases, one has to specify the amount
of computation (number of steps or sweeps).
Targeted Simulations
The
default action is to perform the simulation on the
entire system. However, all simulation methods
accept a limit
argument, to confine the simulation to just a part of the model, with the
restriction that the atom numbers in the range span a contiguous range.
The limit argument can take three forms: Usually, the preset value of limit is None,
which means that the simulation will be carried out for the entire
model. This argument may also be a Group AtomMap of the model, in
which case the simulation will be restricted to only the atoms within
this AtomMap. Finally, limit may be a list (not a tuple) containing exactly two integers:
the index number of the first atom and one plus the index number of the
last atom, this defines a range and the simulation will be restricted
to just these atoms. Atoms of the model that are not included within limit are not affected by the simulation.
A Model object can have an attribute named LIMIT whose value can take
any of the three forms described above. The value of the Model LIMIT
attribute will be used if the limit argument is None.
Thus, it is possible to specify a limit that is applied in every simulation, even if one forgets to specify a value for limit. To negate this, specify the entire model as the
limit. For example, for a model M, specify limit=M.Map to override the effect of M.LIMIT.
Given a Model object M:
| limit |
Example |
Outcome |
| None |
None |
The simulation will be carried out for the entire model M or if M.LIMIT exists, the simulation will be carried out for the part of the model specified in M.LIMIT. |
| An AtomMap |
M.Map[":RNA"] |
The simulation will be carried out only for the part of the model M, named ":RNA". |
| List of two Integers |
[ 301, 501 ] |
The simulation will be carried out for all the atoms of M numbered 301 to 500. |
Multiple Models
It
is possible to create more than one simulation
object and to perform alternate calculations on
them. It is even possible to create more than one
object of a given simulation type. For example, two
Monte Carlo simulation objects. However, all the
simulation objects operate on the same set of
energy functions and Coordinates and other Atom
Vectors.
|