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 — Type
RotamerBlitz(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 evaluator EnergyFunction or custom function, receives a Pose pose as the single argument;
  • rotamer_library::Dict{String, ProtoSyn.Peptides.BBD_RotamerLibrary} - The rotamer library used to sample new Rotamer instances from;
  • n_first::Int - Maximum number of Rotamer 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 optional Callback instance, receives two input arguments: the current Pose pose and the current DriverState driver_state;
  • selection::Opt{AbstractSelection} - If provided, only selected Residue instances will be considered as target for the RotamerBlitz simulation, otherwise, consider all Residue instances.

See also

RotamerBlitzState

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
source
ProtoSyn.Peptides.Drivers.RotamerBlitzState — Type
RotamerBlitzState{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

RotamerBlitz

Examples

julia> ProtoSyn.Peptides.Drivers.RotamerBlitzState()
ProtoSyn.Peptides.Drivers.RotamerBlitzState(0, false, false, false)
source

ProtoSyn rotamer-blitz-driver

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.