Rosetta  2020.37
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
protocols::kinematic_closure::ClosureSolution Class Reference

Represent a single solution to a kinematic closure problem. More...

#include <ClosureSolution.hh>

Inheritance diagram for protocols::kinematic_closure::ClosureSolution:
Inheritance graph
[legend]

Public Member Functions

void apply (Pose &pose) const
 Apply this solution to the given pose. More...
 
bool apply_if_reasonable (Pose &pose, bool rama_on=true, bool bump_on=true, bool be_lenient=false) const
 If this solution passes rama and bump checks, apply it to the given pose. Return whether or not the filters were passed. More...
 
core::Size get_index () const
 Return a unique number identifying this solution. More...
 
Real get_jacobian () const
 Return the Jacobian for this solution. More...
 
Real get_distance (ClosureProblem const *problem) const
 

Private Member Functions

 ClosureSolution (ClosureProblem const *problem, core::Size const solution_index, ParameterList const &torsion_angles, ParameterList const &bond_angles, ParameterList const &bond_lengths)
 Constructor used internally to build a solution from the internal degrees of freedom returned by the closure algorithm. More...
 
bool check_rama (Pose const &pose, Real const temperature) const
 Check for unlikely pivot torsions in this solution. More...
 
bool check_overlap (Pose const &pose, Real const scale_factor) const
 Check for overlapping backbone atoms in this solution. More...
 

Private Attributes

ClosureProblem const * problem_
 
core::Size const index_
 
ParameterList const bond_lengths_
 
ParameterList const bond_angles_
 
ParameterList const torsion_angles_
 
Real jacobian_
 

Friends

class ClosureProblem
 

Detailed Description

Represent a single solution to a kinematic closure problem.

The ClosureSolution class represents the solutions returned by ClosureProblem.solve(). The most important methods of this class are apply() and apply_if_reasonable(). The former unconditionally applies the solution to the given pose, while the latter does so only if the solution passes a rama and bump check.

Constructor & Destructor Documentation

protocols::kinematic_closure::ClosureSolution::ClosureSolution ( ClosureProblem const *  problem,
core::Size const  index,
ParameterList const &  torsion_angles,
ParameterList const &  bond_angles,
ParameterList const &  bond_lengths 
)
private

Constructor used internally to build a solution from the internal degrees of freedom returned by the closure algorithm.

This constructor is called by ClosureProblem, which is a friend class. It is declared as private because it should only be called from code that has been specifically written to solve a closure problem.

Member Function Documentation

void protocols::kinematic_closure::ClosureSolution::apply ( Pose pose) const
bool protocols::kinematic_closure::ClosureSolution::apply_if_reasonable ( Pose pose,
bool  rama_on = true,
bool  bump_on = true,
bool  be_lenient = false 
) const
bool protocols::kinematic_closure::ClosureSolution::check_overlap ( Pose const &  pose,
Real const  scale_factor 
) const
private

Check for overlapping backbone atoms in this solution.

Apply the solution to the pose before calling this filter.

References protocols::kinematic_closure::ClosureProblem::first_residue(), protocols::kinematic_closure::ClosureProblem::last_residue(), problem_, core::pose::Pose::residue(), core::pose::Pose::size(), and core::conformation::Residue::xyz().

Referenced by apply_if_reasonable().

bool protocols::kinematic_closure::ClosureSolution::check_rama ( Pose const &  pose,
Real const  temperature 
) const
private
Real protocols::kinematic_closure::ClosureSolution::get_distance ( ClosureProblem const *  problem) const

@ brief Return a distance metric indicating how similar this solution is to the given problem.

Note that this is not a rigorous distance metric. It's just meant to distinguish one solution that's nearly identical to the given problem from several solutions that aren't.

References bond_angles_, bond_lengths_, core::kinematics::distance(), protocols::kinematic_closure::ClosureProblem::num_atoms(), torsion_angles_, protocols::kinematic_closure::ClosureProblem::unperturbed_angles_, protocols::kinematic_closure::ClosureProblem::unperturbed_lengths_, and protocols::kinematic_closure::ClosureProblem::unperturbed_torsions_.

Size protocols::kinematic_closure::ClosureSolution::get_index ( ) const

Return a unique number identifying this solution.

References index_.

Real protocols::kinematic_closure::ClosureSolution::get_jacobian ( ) const

Return the Jacobian for this solution.

This quantity indicates how much the dihedral space around the pivots was warped by the choice of controls and is used as a normalization factor when picking a move in such a way that obeys detailed balance. The return value is cached, so it's cheap to call this function multiple times.

References bond_angles_, bond_lengths_, jacobian_, protocols::mean_field::max(), protocols::kinematic_closure::ClosureProblem::num_atoms(), protocols::kinematic_closure::ClosureProblem::pivot_atoms(), problem_, protocols::hybridization::r1, protocols::hybridization::r2, and torsion_angles_.

Friends And Related Function Documentation

friend class ClosureProblem
friend

Member Data Documentation

ParameterList const protocols::kinematic_closure::ClosureSolution::bond_angles_
private

Referenced by apply(), get_distance(), and get_jacobian().

ParameterList const protocols::kinematic_closure::ClosureSolution::bond_lengths_
private

Referenced by apply(), get_distance(), and get_jacobian().

core::Size const protocols::kinematic_closure::ClosureSolution::index_
private

Referenced by get_index().

Real protocols::kinematic_closure::ClosureSolution::jacobian_
mutableprivate

Referenced by get_jacobian().

ClosureProblem const* protocols::kinematic_closure::ClosureSolution::problem_
private
ParameterList const protocols::kinematic_closure::ClosureSolution::torsion_angles_
private

The documentation for this class was generated from the following files: