Rotamer Mutator
One of the AbstractMutator
types made available by the ProtoSyn.Peptides module is the RotamerMutator
, allowing a user to sample the sidechain conformation of one or more Residue
instances. This has, for example, applications in sidechain packaging, ligand adsorption stabilization or active site generation algorithms, among others. For more information, see the Rotamers submodule section.
ProtoSyn.Peptides.Mutators.RotamerMutator
— TypeRotamerMutator(rotamer_library::Dict{String, ProtoSyn.Peptides.BBD_RotamerLibrary}, p_mut::AbstractFloat, n_first::Int, selection::Opt{AbstractSelection}, random_inexistent_phi_psi::Bool)
Return a RotamerMutator
instance. This AbstractMutator
is a functor, called with the following signature:
(rotamer_mutator::RotamerMutator)(pose::Pose)
The RotamerMutator
AbstractMutator
loops through all Atom
instances in the given Pose
and applies a Rotamer
conformation change if a random number (rand()
) is bellow a given probability of mutation p_mut
(will skip any Residue
with unnaccessible phi or psi dihedral angles, such as the first and last Residue
of a chain, unless randomize_inexistent_phi_psi
flag is set to true
, false
by default. Is this case, will randomize the missing phi or psi dihedral angles in order to sample a semi-random Rotamer
from rotamer_library
). A Rotamer
conformation change is a concerted rotation of all sidechain Atom
instances in the Residue
of the selected Atom
(therefore for a single attempt at Rotamer
change, unique Atom
names should be selected, an"CA"
, for example). If an AbstractSelection
selection
is provided, only Atom
instances marked as true
in this selection are considered for Rotamer
conformational change. The applied Rotamer
is sampled from the RotamerMutator
.rotamer_library
, based on the name of the Residue
and current phi and psi dihedral angle values. The n_first
most likely Rotamer
instances are taken into account during this sampling step. Note that the RotamerMutator
syncs any pending cartesian to internal coordinate conversion (using the c2i!
method). Requests internal to cartesian coordinates conversion (using request_i2c!
method). Does not sync!
the given Pose
afterwards.
The RotamerMutator
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
.
(rotamer_mutator::RotamerMutator)(pose::Pose, atoms::Vector{Atom})
Fields
rotamer_library::Dict{String, ProtoSyn.Peptides.BBD_RotamerLibrary}
- A dictionary ofBBD_RotamerLibrary
instances, for each aminoacid type;p_mut::AbtractFloat
- Compared against arand()
call, applies this Mutator toAtom
instances whererand() < p_mut
;n_first::Int
- Take only the N most likelyRotamer
instances from the rotamer library;selection::Opt{AbstractSelection}
- If given, this Mutator will only loop over the selectedAtom
instances;random_inexistent_phi_psi::Bool
- If set to true, any Residue instance whose phi or psi dihedral angle is unable to be determined will be randomized (example: last aminoacid in a chain);
See also
Examples
julia> rm = ProtoSyn.Peptides.Mutators.RotamerMutator(rot_lib, 1.0, 10, an"CA" & !rn"PRO")
⚯ Rotamer Mutator:
+----------------------------------------------------------------------+
| Index | Field | Value |
+----------------------------------------------------------------------+
| 1 | rotamer_library | Set ✓ |
| 2 | p_mut | 1.000 |
| 3 | n_first | 10 |
+----------------------------------------------------------------------+
● Selection: Set
└── BinarySelection ❯ & "and" (Atom)
├── FieldSelection › Atom.name = CA
└── UnarySelection ❯ ! "not" (Residue)
└── FieldSelection › Residue.name = PRO
Figure 1 | Schematic description of the RotamerMutator
.
Figure 2 | Example of the application of RotamerMutator
to simulateously change the conformation of all sidechain Atom
instances (except in Proline Residue
instances).