Rosetta Protocols  2014.35
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>

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...
 
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 (ClosureProblemCOP problem) const
 

Private Member Functions

 ClosureSolution (ClosureProblemCOP const problem, 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

ClosureProblemCOP const problem_
 
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 ( ClosureProblemCOP const  problem,
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

Apply this solution to the given pose.

References bond_angles_, bond_lengths_, problem_, and torsion_angles_.

Referenced by 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

If this solution passes rama and bump checks, apply it to the given pose. Return whether or not the filters were passed.

References apply(), check_overlap(), check_rama(), protocols::kinematic_closure::num_bump_filter_fails, protocols::kinematic_closure::num_rama_filter_fails, problem_, and temperature.

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 problem_, core::pose::Pose::residue(), and core::pose::Pose::total_residue().

Referenced by apply_if_reasonable().

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

Check for unlikely pivot torsions in this solution.

References core::pose::Pose::aa(), numeric::conversions::degrees(), degrees(), problem_, rama, torsion_angles_, type, numeric::random::uniform(), and uniform().

Referenced by apply_if_reasonable().

Real protocols::kinematic_closure::ClosureSolution::get_distance ( ClosureProblemCOP  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_, distance(), and torsion_angles_.

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_, numeric::kinematic_closure::radians::chainXYZ(), jacobian_, numeric::max(), max(), problem_, r1, r2, s1, s2, 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().

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

Referenced by get_index().

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

Referenced by get_jacobian().

ClosureProblemCOP 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: