Rotamer Blitz Driver
The Rotamer Blitz Driver is an algorithm for sidechain packaging, exhaustively looping through all Rotamer
possibilities and setting the most stable conformation for the Residue
sidechain.
ProtoSyn.Peptides.Drivers.RotamerBlitz
— TypeRotamerBlitz(eval!::Union{Function, ProtoSyn.Calculators.EnergyFunction}, rotamer_library::Dict{String, ProtoSyn.Peptides.BBD_RotamerLibrary}, n_first::Int, max_steps::Int, callback::Opt{ProtoSyn.Drivers.Callback}, selection::Opt{AbstractSelection})
A RotamerBlitz
Driver
instance. As such, this object is callable as a functor with the following signature:
(driver::RotamerBlitz)(pose::Pose)
This simulation performs a sidechain packaging algorithm, where each step (until a maximum of n_steps
), all Residue
instances in the provided Pose
pose
(in random order) may suffer a rotamer conformation change. As such, for each Residue
instance, all n_first
most likely Rotamer
instances in the rotamer_library
(according to the current backbone phi and psi dihedral angles) are applied (using the apply!
method) and evaluated by the provided eval!
EnergyFunction
or custom function. Once all n_first
most likely Rotamer
instances are looped over, the most favourable (least energetic) one is re-applied. Each step, a call to an optional Callback
callback
is performed. A companion RotamerBlitzState
DriverState
instance is also updated each step and provided to the Callback
callback
.
Fields
eval!::Union{Function, EnergyFunction}
- The evaluatorEnergyFunction
or custom function, receives aPose
pose
as the single argument;rotamer_library::Dict{String, ProtoSyn.Peptides.BBD_RotamerLibrary}
- The rotamer library used to sample newRotamer
instances from;n_first::Int
- Maximum number ofRotamer
instances to try, ordered from most to less likely;max_steps::Int
- The total number of simulation steps to be performed;callback::Opt{Callback}
- An optionalCallback
instance, receives two input arguments: the currentPose
pose
and the currentDriverState
driver_state
;selection::Opt{AbstractSelection}
- If provided, only selectedResidue
instances will be considered as target for theRotamerBlitz
simulation, otherwise, consider allResidue
instances.
See also
Examples
julia> rb = ProtoSyn.Peptides.Drivers.RotamerBlitz(energy_function, rot_lib, 1, 2, cb, an"CA")
⚒ Rotamer Blitz Driver:
├── ● Evaluator:
| └── 🗲 Energy Function (4 components):
| +----------------------------------------------------------------------+
| | Index | Component name | Weight (α) |
| +----------------------------------------------------------------------+
| | 1 | TorchANI_ML_Model | 1.000 |
| | 2 | Caterpillar_Solvation | 0.010 |
| | 3 | Bond_Distance_Restraint | 1.000 |
| | 4 | Cα-Cα_Clash_Restraint | 100.000 |
| +----------------------------------------------------------------------+
|
├── ● Callback:
| └── ✉ Callback:
| +----------------------------------------------------------------------+
| | Index | Field | Value |
| +----------------------------------------------------------------------+
| | 1 | Event | energy_step_frame |
| | 2 | Frequency | 10 |
| +----------------------------------------------------------------------+
|
├── ● Selection:
| └── FieldSelection › Atom.name = CA
|
└── ● Settings:
Rotamer Library: Set ✓
Max steps: 2
Search N first rotamers: 1
ProtoSyn.Peptides.Drivers.RotamerBlitzState
— TypeRotamerBlitzState{T <: AbstractFloat}(step::Int = 0, converged::Bool = false, completed::Bool = false, stalled::Bool = false, acceptance_count = 0)
RotamerBlitzState{T <: AbstractFloat}()
A RotamerBlitzState
instance is a DriverState
that keeps track of a RotamerBlitz
simulation status. Besides the default :step
, :converged
, :completed
and :stalled
fields, a RotamerBlitzState
does not add any additional tracking fields specific for RotamerBlitz
simulations.
See also
Examples
julia> ProtoSyn.Peptides.Drivers.RotamerBlitzState()
ProtoSyn.Peptides.Drivers.RotamerBlitzState(0, false, false, false)
Figure 1 | A schematic overview of the different stages in a RotamerBlitz
Driver
: (1) - For a single Residue
, all N most likely Rotamer
instances are applied (using the apply!
method) and the resulting conformation's energy is evaluated; (2) - After trying all Rotamer
instances, the less energetic conformation is recovered and applied. This is performed to all Residue
instances in a given Pose
, in random order; (3) - This process continues for a set amount of steps, resulting in a lower energy conformation for the sidechains in a Pose
.