Rosetta
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

◆ ClosureSolution()

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

◆ apply()

void protocols::kinematic_closure::ClosureSolution::apply ( Pose pose) const

◆ apply_if_reasonable()

bool protocols::kinematic_closure::ClosureSolution::apply_if_reasonable ( Pose pose,
bool  rama_on = true,
bool  bump_on = true,
bool  be_lenient = false 
) const

◆ check_overlap()

bool protocols::kinematic_closure::ClosureSolution::check_overlap ( Pose const &  pose,
Real const  scale_factor 
) const
private

◆ check_rama()

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

◆ get_distance()

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_.

◆ get_index()

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

Return a unique number identifying this solution.

References index_.

◆ get_jacobian()

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

◆ ClosureProblem

friend class ClosureProblem
friend

Member Data Documentation

◆ bond_angles_

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

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

◆ bond_lengths_

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

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

◆ index_

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

Referenced by get_index().

◆ jacobian_

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

Referenced by get_jacobian().

◆ problem_

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

◆ torsion_angles_

ParameterList const protocols::kinematic_closure::ClosureSolution::torsion_angles_
private

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