![]() |
Rosetta
2021.16
|
Base class for all of the perturber algorithms. More...
#include <Perturber.hh>

Public Member Functions | |
| virtual std::string | get_name () const =0 |
| Return the name of this perturber. More... | |
| void | perturb (Pose const &pose, ClosureProblemOP problem) |
| Perturb all of the non-pivot residues. More... | |
| void | perturb_with_balance (Pose const &pose, ClosureProblemOP problem) |
| Perturb all of the non-pivot residues such that detailed balance is obeyed. More... | |
| virtual void | perturb_subset (Pose const &pose, IndexList const &residues, ClosureProblemOP problem)=0 |
| Perturb the given residues. More... | |
| virtual void | perturb_subset_with_balance (Pose const &pose, IndexList const &residues, ClosureProblemOP problem) |
| Perturb the given residues such that detailed balance is obeyed. More... | |
Base class for all of the perturber algorithms.
Solving a kinematic closure problem has two steps. The first step is to pick a new torsion angles, bond angles, and/or bond lengths in the region being sampled. The second step is to analytically set six torsions such that the backbone stays closed. Perturber subclasses are responsible for managing the first step.
Every perturber subclass must reimplement perturb_subset(). The arguments to the method are a Pose, a list of residues, and a ClosureProblem. The pose is const and should just be used to look up residue types and other relevant contextual information. The residue list specifies the residues that should be perturbed. In other words, residues not in this list should not be changed. This allows composite perturbers to specify different perturber algorithms for different parts on the loop. For example, for antibody modeling you might use a custom perturber for loop regions with well-known motifs and the standard RamaPerturber everywhere else. Finally, the problem is used to actually set the backbone DOFS via methods like perturb_phi() and perturb_psi().
If your perturber algorithm can be made to obey detailed balance, you should also reimplement perturb_subset_with_balance(). This method is called by BalancedKicMover and it works just like perturb_subset(). If your algorithm doesn't obey detailed balance, or if you don't know what detailed balance is, then don't worry about it.
It would have been nice if any regular mover could be used to perturb the backbone, instead of being limited to single-purpose Perturber subclasses. I spent a lot of time trying to get this to work, but it was very slow. My belief is that too many AtomTree coordinates were being updated too often.
|
pure virtual |
Return the name of this perturber.
Implemented in protocols::loop_modeler::perturbers::LoopHashPerturber, protocols::kinematic_closure::perturbers::FragmentPerturber, protocols::kinematic_closure::perturbers::PerturberSet, protocols::kinematic_closure::perturbers::IdealizeNonPhiPsi, protocols::kinematic_closure::perturbers::VicinityPerturber, protocols::kinematic_closure::perturbers::WalkingBondAnglePerturber, protocols::kinematic_closure::perturbers::LogFilePerturber, protocols::kinematic_closure::perturbers::BondAnglePerturber, protocols::kinematic_closure::perturbers::WalkingPerturber, protocols::kinematic_closure::perturbers::Rama2bPerturber, protocols::kinematic_closure::perturbers::RamaPerturber, protocols::kinematic_closure::perturbers::UniformPerturber, and protocols::kinematic_closure::perturbers::OmegaPerturber.
| void protocols::kinematic_closure::perturbers::Perturber::perturb | ( | Pose const & | pose, |
| ClosureProblemOP | problem | ||
| ) |
Perturb all of the non-pivot residues.
|
pure virtual |
Perturb the given residues.
Implemented in protocols::loop_modeler::perturbers::LoopHashPerturber, protocols::kinematic_closure::perturbers::FragmentPerturber, protocols::kinematic_closure::perturbers::PerturberSet, protocols::kinematic_closure::perturbers::IdealizeNonPhiPsi, protocols::kinematic_closure::perturbers::VicinityPerturber, protocols::kinematic_closure::perturbers::WalkingBondAnglePerturber, protocols::kinematic_closure::perturbers::LogFilePerturber, protocols::kinematic_closure::perturbers::BondAnglePerturber, protocols::kinematic_closure::perturbers::WalkingPerturber, protocols::kinematic_closure::perturbers::Rama2bPerturber, protocols::kinematic_closure::perturbers::RamaPerturber, protocols::kinematic_closure::perturbers::UniformPerturber, and protocols::kinematic_closure::perturbers::OmegaPerturber.
|
virtual |
Perturb the given residues such that detailed balance is obeyed.
If not reimplemented, this method will kill rosetta and complain that no balanced implementation of this algorithm exists.
Reimplemented in protocols::loop_modeler::perturbers::LoopHashPerturber, protocols::kinematic_closure::perturbers::PerturberSet, protocols::kinematic_closure::perturbers::IdealizeNonPhiPsi, protocols::kinematic_closure::perturbers::VicinityPerturber, protocols::kinematic_closure::perturbers::WalkingBondAnglePerturber, protocols::kinematic_closure::perturbers::WalkingPerturber, protocols::kinematic_closure::perturbers::RamaPerturber, and protocols::kinematic_closure::perturbers::UniformPerturber.
References core::chemical::rdkit::get_name().
| void protocols::kinematic_closure::perturbers::Perturber::perturb_with_balance | ( | Pose const & | pose, |
| ClosureProblemOP | problem | ||
| ) |
Perturb all of the non-pivot residues such that detailed balance is obeyed.
If not reimplemented, this method will kill rosetta and complain that no balanced implementation of this algorithm exists.
1.8.7