Rosetta
Namespaces | Classes | Typedefs | Functions
core::optimization Namespace Reference

Namespaces

 symmetry
 

Classes

class  AtomTreeMinimizer
 High-level atom tree minimizer class. More...
 
class  AtomTreeMultifunc
 Atom tree multifunction class. More...
 
class  CartesianMinimizer
 High-level atom tree minimizer class. More...
 
class  CartesianMinimizerMap
 
class  CartesianMultifunc
 Atom tree multifunction class. More...
 
class  CMAES_Minimizer
 
class  DOF_Node
 
class  EItem
 Inner class for Genetic Algorithm, hold one population with some additional info. More...
 
class  GA_Minimizer
 
class  func_1d
 
class  LineMinimizationAlgorithm
 
class  BrentLineMinimization
 
class  ArmijoLineMinimization
 
class  StrongWolfeLineMinimization
 
class  ConvergenceTest
 
class  DFPMinConvergedFractional
 
class  DFPMinConvergedAbsolute
 
class  DescentDirectionAlgorithm
 
class  JJH_Minimizer
 
class  lbfgs_iteration_data
 
class  Minimizer
 Simple low-level minimizer class. More...
 
class  MinimizerMap
 
class  MinimizerOptions
 
class  Multifunc
 Multifunction interface class. More...
 
struct  sort_pred
 
class  NelderMeadSimplex
 
class  DerivCheckDataPoint
 
class  SimpleDerivCheckResult
 
class  DOF_DataPoint
 
class  NumDerivCheckData
 
class  NumericalDerivCheckResult
 
class  Particle
 Simple data container for PSO algorithm. More...
 
class  ParticleSwarmMinimizer
 Particle Swarm Optimization engine. More...
 
class  SingleResidueMultifunc
 A streamlined AtomTreeMultifunc designed specifically for RTMIN. More...
 

Typedefs

typedef utility::pointer::shared_ptr< AtomTreeMinimizerAtomTreeMinimizerOP
 
typedef utility::pointer::shared_ptr< AtomTreeMinimizer const > AtomTreeMinimizerCOP
 
typedef boost::tuple< Vector, Vector, Vector, VectorVectorQuad
 
typedef utility::pointer::shared_ptr< CartesianMinimizerCartesianMinimizerOP
 
typedef utility::pointer::shared_ptr< CartesianMinimizer const > CartesianMinimizerCOP
 
typedef utility::pointer::shared_ptr< CartesianMinimizerMapCartesianMinimizerMapOP
 
typedef utility::pointer::shared_ptr< CartesianMinimizerMap const > CartesianMinimizerMapCOP
 
typedef utility::pointer::shared_ptr< DOF_NodeDOF_NodeOP
 
typedef utility::pointer::shared_ptr< DOF_Node const > DOF_NodeCOP
 
typedef utility::pointer::shared_ptr< LineMinimizationAlgorithmLineMinimizationAlgorithmOP
 
typedef utility::pointer::shared_ptr< LineMinimizationAlgorithm const > LineMinimizationAlgorithmCOP
 
typedef utility::pointer::shared_ptr< MinimizerMapMinimizerMapOP
 
typedef utility::pointer::shared_ptr< MinimizerMap const > MinimizerMapCOP
 
typedef utility::pointer::shared_ptr< MinimizerOptionsMinimizerOptionsOP
 
typedef utility::pointer::shared_ptr< MinimizerOptions const > MinimizerOptionsCOP
 
typedef utility::pointer::shared_ptr< MultifuncMultifuncOP
 
typedef utility::pointer::shared_ptr< Multifunc const > MultifuncCOP
 
typedef utility::pointer::shared_ptr< SimpleDerivCheckResultSimpleDerivCheckResultOP
 
typedef utility::pointer::shared_ptr< SimpleDerivCheckResult const > SimpleDerivCheckResultCOP
 
typedef utility::pointer::shared_ptr< NumDerivCheckDataNumDerivCheckDataOP
 
typedef utility::pointer::shared_ptr< NumDerivCheckData const > NumDerivCheckDataCOP
 
typedef utility::pointer::shared_ptr< NumericalDerivCheckResultNumericalDerivCheckResultOP
 
typedef utility::pointer::shared_ptr< NumericalDerivCheckResult const > NumericalDerivCheckResultCOP
 
typedef utility::pointer::shared_ptr< ParticleParticleOP
 
typedef utility::pointer::shared_ptr< Particle const > ParticleCOP
 
typedef utility::vector1< ParticleOPParticleOPs
 
typedef utility::pointer::shared_ptr< ParticleSwarmMinimizerParticleSwarmMinimizerOP
 
typedef utility::pointer::shared_ptr< ParticleSwarmMinimizer const > ParticleSwarmMinimizerCOP
 
typedef utility::vector1< RealMultivec
 

Functions

static basic::Tracer TR ("core.optimization")
 
void atom_tree_dfunc (pose::Pose &pose, MinimizerMap &min_map, scoring::ScoreFunction const &scorefxn, Multivec const &vars, Multivec &dE_dvars)
 
Real torsional_derivative_from_cartesian_derivatives (kinematics::tree::Atom const &atom, optimization::DOF_Node const &dof_node, Real dof_deriv, Real torsion_scale_factor)
 
void atom_tree_get_atompairE_deriv (pose::Pose &pose, MinimizerMap &min_map, scoring::ScoreFunction const &scorefxn)
 
SimpleDerivCheckResult simple_numeric_deriv_check (Multifunc const &func, Multivec const &start_vars, Multivec const &dE_dvars, bool send_to_stdout, bool verbose, Size nsteps=5, Real const increment=0.0005)
 Numeric deriv check for Multifuncs other than the AtomTreeMultifunc. More...
 
void numerical_derivative_check (MinimizerMap const &min_map, Multifunc const &func, Multivec const &start_vars, Multivec const &dE_dvars, NumericalDerivCheckResultOP deriv_check_result, bool const verbose)
 
static basic::Tracer TR ("core.optimization.AtomTreeMinimizer")
 
static basic::Tracer TR ("core.optimization")
 
void activate_dof_deriv_terms_for_cart_min (pose::Pose &pose, scoring::ScoreFunction const &scorefxn, CartesianMinimizerMap const &min_map)
 Activate DOF-derivative defining terms for stationary residues if the atoms defining the DOFs these terms depend on are moving. More...
 
void cartesian_dfunc (pose::Pose &pose, CartesianMinimizerMap &min_map, scoring::ScoreFunction const &scorefxn, Multivec const &vars, Multivec &dE_dvars)
 
void cartesian_collect_atompairE_deriv (pose::Pose &pose, CartesianMinimizerMap &min_map, scoring::ScoreFunction const &scorefxn, Multivec &dE_dvars, core::Real scale)
 
void cartesian_collect_torsional_deriv (pose::Pose &pose, CartesianMinimizerMap &min_map, core::scoring::ScoreFunction const &scorefxn, Multivec &dE_dvars, core::Real scale)
 
void cart_numerical_derivative_check (CartesianMinimizerMap const &min_map, CartesianMultifunc const &func, Multivec const &start_vars, Multivec const &dE_dvars, NumericalDerivCheckResultOP deriv_check_result, bool const verbose)
 
void tors_deriv_to_cartesian (Real dE_dtor, VectorQuad const &coords, VectorQuad &dE_dxs)
 
static basic::Tracer TR ("core.optimization.CartesianMinimizer")
 
static basic::Tracer TR ("core.optimization.CMAES_Minimizer")
 
static basic::Tracer TR ("core.optimization.GA_Minimizer")
 
static bool yes_no_random (Real probability)
 Return true with given probability. More...
 
static basic::Tracer TR ("core.optimization.LineMinimizer")
 
static basic::Tracer TR ("core.optimization.Minimizer")
 
bool DOF_Node_sorter (DOF_NodeCOP a, DOF_NodeCOP b)
 
static basic::Tracer TR ("core.optimization.NelderMeadSimplex")
 
std::ostream & operator<< (std::ostream &os, Particle const &p)
 stream output operator for Particle types More...
 
bool cmp_particles (ParticleOP a, ParticleOP b)
 

Typedef Documentation

◆ AtomTreeMinimizerCOP

typedef utility::pointer::shared_ptr< AtomTreeMinimizer const > core::optimization::AtomTreeMinimizerCOP

◆ AtomTreeMinimizerOP

typedef utility::pointer::shared_ptr< AtomTreeMinimizer > core::optimization::AtomTreeMinimizerOP

◆ CartesianMinimizerCOP

typedef utility::pointer::shared_ptr< CartesianMinimizer const > core::optimization::CartesianMinimizerCOP

◆ CartesianMinimizerMapCOP

typedef utility::pointer::shared_ptr< CartesianMinimizerMap const > core::optimization::CartesianMinimizerMapCOP

◆ CartesianMinimizerMapOP

typedef utility::pointer::shared_ptr< CartesianMinimizerMap > core::optimization::CartesianMinimizerMapOP

◆ CartesianMinimizerOP

typedef utility::pointer::shared_ptr< CartesianMinimizer > core::optimization::CartesianMinimizerOP

◆ DOF_NodeCOP

typedef utility::pointer::shared_ptr< DOF_Node const > core::optimization::DOF_NodeCOP

◆ DOF_NodeOP

typedef utility::pointer::shared_ptr< DOF_Node > core::optimization::DOF_NodeOP

◆ LineMinimizationAlgorithmCOP

typedef utility::pointer::shared_ptr< LineMinimizationAlgorithm const > core::optimization::LineMinimizationAlgorithmCOP

◆ LineMinimizationAlgorithmOP

◆ MinimizerMapCOP

typedef utility::pointer::shared_ptr< MinimizerMap const > core::optimization::MinimizerMapCOP

◆ MinimizerMapOP

typedef utility::pointer::shared_ptr< MinimizerMap > core::optimization::MinimizerMapOP

◆ MinimizerOptionsCOP

typedef utility::pointer::shared_ptr< MinimizerOptions const > core::optimization::MinimizerOptionsCOP

◆ MinimizerOptionsOP

typedef utility::pointer::shared_ptr< MinimizerOptions > core::optimization::MinimizerOptionsOP

◆ MultifuncCOP

typedef utility::pointer::shared_ptr< Multifunc const > core::optimization::MultifuncCOP

◆ MultifuncOP

typedef utility::pointer::shared_ptr< Multifunc > core::optimization::MultifuncOP

◆ Multivec

typedef utility::vector1< Real > core::optimization::Multivec

◆ NumDerivCheckDataCOP

typedef utility::pointer::shared_ptr< NumDerivCheckData const > core::optimization::NumDerivCheckDataCOP

◆ NumDerivCheckDataOP

typedef utility::pointer::shared_ptr< NumDerivCheckData > core::optimization::NumDerivCheckDataOP

◆ NumericalDerivCheckResultCOP

typedef utility::pointer::shared_ptr< NumericalDerivCheckResult const > core::optimization::NumericalDerivCheckResultCOP

◆ NumericalDerivCheckResultOP

◆ ParticleCOP

typedef utility::pointer::shared_ptr< Particle const > core::optimization::ParticleCOP

◆ ParticleOP

typedef utility::pointer::shared_ptr< Particle > core::optimization::ParticleOP

◆ ParticleOPs

typedef utility::vector1< ParticleOP > core::optimization::ParticleOPs

◆ ParticleSwarmMinimizerCOP

typedef utility::pointer::shared_ptr< ParticleSwarmMinimizer const > core::optimization::ParticleSwarmMinimizerCOP

◆ ParticleSwarmMinimizerOP

◆ SimpleDerivCheckResultCOP

typedef utility::pointer::shared_ptr< SimpleDerivCheckResult const > core::optimization::SimpleDerivCheckResultCOP

◆ SimpleDerivCheckResultOP

◆ VectorQuad

Function Documentation

◆ activate_dof_deriv_terms_for_cart_min()

void core::optimization::activate_dof_deriv_terms_for_cart_min ( pose::Pose pose,
scoring::ScoreFunction const &  scorefxn,
CartesianMinimizerMap const &  min_map 
)

Activate DOF-derivative defining terms for stationary residues if the atoms defining the DOFs these terms depend on are moving.

One-body and two-body energies that define DOF derivatives are activated for nodes and edges in the minimization graph if the terms depend on atoms that are moving. The terms report which atoms define the DOFs they depend on as PartialAtomIDs. These are resolved into full-fledged atom IDs using the Residues in the Pose's Conformation.

When 1-body energies are activated, they need only be activated on the inactive residue. When 2-body energies are activated, they need to be activated on the inactive residue, and on the edges between the inactive residue and the other inactive neighbors that define the DOFs that they term depends on.

This code activates terms on residues that the ScoreFunction's setup_for_minimizing function determined were inactive. This causes the MinimizationGraph's "fixed_energies" EMap to be inaccurate: it "double counts" these terms contributions for these residues, which leads to the cosmetic discrepancy between the energy that's seen by the minimizer and the actual total energy for the Pose. This is only a cosmetic discrepancy because the minimizer will produce exactly the same results with a constant offset to the score. However, this discrepancy is ugly, so it had to be fixed.

So to compensate, the unfixed energies are re-accumulated out of the Energies object and then subtracted out of the fixed_energies.

References core::scoring::EMapVector::accumulate(), core::optimization::CartesianMinimizerMap::atom_is_moving(), core::scoring::ScoreFunction::ci_1b_methods_begin(), core::scoring::ScoreFunction::ci_1b_methods_end(), core::scoring::methods::ci_2b, core::scoring::ScoreFunction::ci_2b_begin(), core::scoring::ScoreFunction::ci_2b_end(), core::scoring::ScoreFunction::ci_lr_2b_methods_begin(), core::scoring::ScoreFunction::ci_lr_2b_methods_end(), core::pose::Pose::conformation(), core::optimization::CartesianMinimizerMap::domain_map(), core::pose::Pose::energies(), core::scoring::Energies::energy_graph(), core::pose::symmetry::is_symmetric(), core::scoring::Energies::long_range_container(), core::scoring::Energies::minimization_graph(), core::scoring::Energies::onebody_energies(), core::pose::Pose::residue(), core::conformation::Conformation::resolve_partial_atom_id(), and core::pose::Pose::total_residue().

Referenced by core::optimization::CartesianMinimizer::run().

◆ atom_tree_dfunc()

void core::optimization::atom_tree_dfunc ( pose::Pose pose,
MinimizerMap min_map,
scoring::ScoreFunction const &  scorefxn,
Multivec const &  vars,
Multivec dE_dvars 
)

car note that this calculates the deriv for all torsion angles even car those that are fixed. Because of the way that the derivative is car calculated, I don't believe this is a significant slow down (ie car have to run over all the atom pairs twice, regardless of the number car of torsion angles)

car multiple neighborlists: car cendist centroid distances in current structure, cutoff for vdw car dis2_tether centroid distances in tether structure, cutoff for tether

db computes the derivative of E with respect to each db of the torsion angles. Using the chain rule, we have db db dE/d phi = dE/dr * dr/dphi db db dr/dphi = Eab x (V-Vb) . (V' - V)/|V-V'| db db (the first cross product is the displacement of V upon a rotation dphi db around the unit vector Eab, Vb is the coordinates of the second atom in db the bond) db car dE/dR = 2r (for vdw at least) db since | V-V'| = r, db db dE/ dphi = 2 Eab x (V-Vb) . (V' - V) db db note that Eab and Vb are different for each torsion angle, but V' db and V are the same. rearranging: db db = - 2 Eab X Vb . (V' - V) - 2 Eab . (V' x V). db db now we need the averages over all Vi of the difference and the db crossproduct of V and V'.

car below, Eab x Vb is 'vec' car Eab is 'unit' car (V'-V) is 'f2' car 'F2tot' = f2*dE_dR (cumulative) car (V' X V) is 'f1' ('F1_xxxE' is cumulative for potential xxx) car eval_dE_dR actually returns dE_dR/r

car if two atoms are fixed relatively in cartesian space, then dr/dphi = 0 car and there is no contribution to the derivative

References core::kinematics::AtomTree::atom(), core::optimization::DOF_Node::atom_id(), core::pose::Pose::atom_tree(), atom_tree_get_atompairE_deriv(), core::optimization::MinimizerMap::begin(), core::optimization::MinimizerMap::copy_dofs_to_pose(), core::optimization::DOF_Node::dof_id(), core::optimization::MinimizerMap::end(), core::scoring::ScoreFunction::eval_dof_derivative(), core::scoring::ScoreFunction::finalize_after_derivatives(), core::optimization::MinimizerMap::link_torsion_vectors(), core::optimization::MinimizerMap::nangles(), core::scoring::ScoreFunction::setup_for_derivatives(), core::optimization::DOF_Node::torsion_id(), core::optimization::MinimizerMap::torsion_scale_factor(), torsional_derivative_from_cartesian_derivatives(), and core::optimization::MinimizerMap::zero_torsion_vectors().

Referenced by protocols::ncbb::SecStructMinimizeMultiFunc::dfunc(), protocols::normalmode::NormalModeMultifunc::dfunc(), and core::optimization::AtomTreeMultifunc::dfunc().

◆ atom_tree_get_atompairE_deriv()

void core::optimization::atom_tree_get_atompairE_deriv ( pose::Pose pose,
MinimizerMap min_map,
scoring::ScoreFunction const &  scorefxn 
)

◆ cart_numerical_derivative_check()

void core::optimization::cart_numerical_derivative_check ( CartesianMinimizerMap const &  min_map,
CartesianMultifunc const &  func,
Multivec const &  start_vars,
Multivec const &  dE_dvars,
NumericalDerivCheckResultOP  deriv_check_result,
bool const  verbose 
)

◆ cartesian_collect_atompairE_deriv()

void core::optimization::cartesian_collect_atompairE_deriv ( pose::Pose pose,
CartesianMinimizerMap min_map,
scoring::ScoreFunction const &  scorefxn,
Multivec dE_dvars,
core::Real  scale 
)

◆ cartesian_collect_torsional_deriv()

void core::optimization::cartesian_collect_torsional_deriv ( pose::Pose pose,
CartesianMinimizerMap min_map,
core::scoring::ScoreFunction const &  scorefxn,
Multivec dE_dvars,
core::Real  scale 
)

◆ cartesian_dfunc()

void core::optimization::cartesian_dfunc ( pose::Pose pose,
CartesianMinimizerMap min_map,
scoring::ScoreFunction const &  scorefxn,
Multivec const &  vars,
Multivec dE_dvars 
)

◆ cmp_particles()

bool core::optimization::cmp_particles ( ParticleOP  a,
ParticleOP  b 
)

◆ DOF_Node_sorter()

bool core::optimization::DOF_Node_sorter ( DOF_NodeCOP  a,
DOF_NodeCOP  b 
)

◆ numerical_derivative_check()

void core::optimization::numerical_derivative_check ( MinimizerMap const &  min_map,
Multifunc const &  func,
Multivec const &  start_vars,
Multivec const &  dE_dvars,
NumericalDerivCheckResultOP  deriv_check_result,
bool const  verbose 
)

◆ operator<<()

std::ostream & core::optimization::operator<< ( std::ostream &  os,
Particle const &  p 
)

◆ simple_numeric_deriv_check()

SimpleDerivCheckResult core::optimization::simple_numeric_deriv_check ( Multifunc const &  func,
Multivec const &  start_vars,
Multivec const &  dE_dvars,
bool  send_to_stdout,
bool  verbose,
Size  nsteps,
Real const  increment 
)

◆ tors_deriv_to_cartesian()

void core::optimization::tors_deriv_to_cartesian ( Real  dE_dtor,
VectorQuad const &  coords,
VectorQuad dE_dxs 
)

◆ torsional_derivative_from_cartesian_derivatives()

Real core::optimization::torsional_derivative_from_cartesian_derivatives ( kinematics::tree::Atom const &  atom,
optimization::DOF_Node const &  dof_node,
Real  dof_deriv,
Real  torsion_scale_factor 
)

◆ TR() [1/9]

static basic::Tracer core::optimization::TR ( "core.optimization"  )
static

◆ TR() [2/9]

static basic::Tracer core::optimization::TR ( "core.optimization"  )
static

◆ TR() [3/9]

static basic::Tracer core::optimization::TR ( "core.optimization.AtomTreeMinimizer"  )
static

◆ TR() [4/9]

static basic::Tracer core::optimization::TR ( "core.optimization.CartesianMinimizer"  )
static

◆ TR() [5/9]

static basic::Tracer core::optimization::TR ( "core.optimization.CMAES_Minimizer"  )
static

◆ TR() [6/9]

static basic::Tracer core::optimization::TR ( "core.optimization.GA_Minimizer"  )
static

◆ TR() [7/9]

static basic::Tracer core::optimization::TR ( "core.optimization.LineMinimizer"  )
static

◆ TR() [8/9]

static basic::Tracer core::optimization::TR ( "core.optimization.Minimizer"  )
static

◆ TR() [9/9]

static basic::Tracer core::optimization::TR ( "core.optimization.NelderMeadSimplex"  )
static

◆ yes_no_random()

static bool core::optimization::yes_no_random ( Real  probability)
static