Backrub Mutator
A BackrubMutator
instance changes a Pose
State
by introducing random translational movements in the Atom
instances.
ProtoSyn.Mutators.BackrubMutator
— TypeBackrubMutator(translation_vector_sampler::Function, p_mut::AbstractFloat, step_size::AbstractFloat, selection::Opt{AbstractSelection})
Return a BackrubMutator
instance. This AbstractMutator
is a functor, called with the following signature:
(backrub_mutator::BackrubMutator)(pose::Pose)
The BackrubMutator
AbstractMutator
loops through all the Atom
instances in a given Pose
and applies a translation movement if a random number (rand()
) is bellow a given probability of mutation p_mut
(therefore a higher p_mut
value applies a larger number of translation movements per call). The translation vector is sampled from the translation_vector_sampler
, multiplied by the given step_size
. The resulting value is then added to the selected Atom
.t
. Note that a new translation vector is sampled for each selected Atom
instance. If an AbstractSelection
selection
is provided, only the selected Atom
instances are looped over. If the given AbstractSelection
selection
is not of selection type Atom
, it will be promoted to this type (using promote
with default aggregator any
). Note that the BackrubMutator
syncs any pending internal to cartesian coordinate conversion (using the i2c!
method). Requests cartesian to internal coordinates conversion (using request_c2i!
method). Does not sync!
the given Pose
afterwards.
The BackrubMutator
AbstractMutator
can also be optionally called using the following signature, in which case only the provided list of Atom
instances will be considered for the application of this AbstractMutator
.
(backrub_mutator::BackrubMutator)(pose::Pose, atoms::Vector{Atom})
Fields
translation_vector_sampler::Function
- Should return aVector{Float}
axis (X, Y and Z dimensions). Is called with no input arguments;p_mut::AbtractFloat
- Compared against arand()
call, applies this Mutator toAtom
instances whererand() < p_mut
;step_size::AbstractFloat
- Multiplies the sampled vector by this value;selection::Opt{AbstractSelection}
- If given, this Mutator will only loop over the selectedAtom
instances.
See also
Examples
⚯ Backrub Mutator:
+----------------------------------------------------------------------+
| Index | Field | Value |
+----------------------------------------------------------------------+
| 1 | translation_vector_sampler | Function rand_vector_in_sphere |
| 2 | p_mut | 1.0000 |
| 3 | step_size | 1.0000 |
+----------------------------------------------------------------------+
○ Selection: Not Set
Figure 1 | A schematic representation of a BackrubMutator
instance. In this example, the BackrubMutator
selects all the Atom
instances of the peptide. For each atom, a random translation vector in a sphere is generated and applied (multiplied by the mutator step_size
). This AbstractMutator
, in conjunction with a quick SteepestDescent
energy minimization, can be helpful, among other things, as a protocol to generate "in-target" poses (slight variations of a given pose with small RMSD changes and similar secondary structure content).