Backrub Mutator

A BackrubMutator instance changes a Pose State by introducing random translational movements in the Atom instances.

ProtoSyn.Mutators.BackrubMutatorType
BackrubMutator(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 a Vector{Float} axis (X, Y and Z dimensions). Is called with no input arguments;
  • p_mut::AbtractFloat - Compared against a rand() call, applies this Mutator to Atom instances where rand() < p_mut;
  • step_size::AbstractFloat - Multiplies the sampled vector by this value;
  • selection::Opt{AbstractSelection} - If given, this Mutator will only loop over the selected Atom instances.

See also

TranslationRigidBodyMutator

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
source

ProtoSyn Backrub Mutator

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).