Rosetta  2020.37
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G > Class Template Reference

Defines the interaction graph that will keep track of changes to the hpatch score. More...

#include <NPDHBondInteractionGraph.hh>

Inheritance diagram for core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >:
Inheritance graph
[legend]

Public Types

typedef
AdditionalBackgroundNodesInteractionGraph
< V, E, G
parent
 
- Public Types inherited from core::pack::interaction_graph::AdditionalBackgroundNodesInteractionGraph< V, E, G >
typedef std::vector
< BackgroundNode< V, E, G > * > 
BackgroundNodeVector
 
typedef std::list
< BackgroundToFirstClassEdge
< V, E, G > * > 
BackgroundEdgeList
 
typedef std::list
< BackgroundToFirstClassEdge
< V, E, G > * >::iterator 
BackgroundEdgeListIter
 
typedef std::list
< BackgroundToFirstClassEdge
< V, E, G >
* >::const_iterator 
BackgroundEdgeListConstIter
 

Public Member Functions

 NPDHBondInteractionGraph (int num_nodes)
 
 ~NPDHBondInteractionGraph () override
 
pose::Pose const & pose () const
 
void set_pose (pose::Pose const &pose)
 
scoring::ScoreFunction const & scorefxn () const
 
void set_score_function (scoring::ScoreFunction const &scorefxn)
 
utility::graph::Graph const & packer_neighbor_graph () const
 
void set_packer_neighbor_graph (utility::graph::Graph const &neighbor_graph)
 
task::PackerTask const & packer_task () const
 
void set_packer_task (task::PackerTask const &task)
 We need a copy of the packer task to figure out which residues are being packed and/or designed. We have to figure the packing options because it determines whether a residue becomes a FirstClass (NPDHBondNode) node or a background node. This method gets called in IGSupport.cc. More...
 
rotamer_set::RotamerSets const & rotamer_sets () const
 
void set_rotamer_sets (rotamer_set::RotamerSets const &rotsets)
 
void initialize (pack_basic::RotamerSetsBase const &rot_sets) override
 
void set_num_residues_in_protein (Size num_res)
 tells the graph how many residues there are total in the protein More...
 
void set_num_background_residues (Size num_background_residues)
 tells the graph how many residues there are as part of the protein that are not part of the combinatorial optimization process – they are part of the background More...
 
void set_residue_as_background_residue (int residue)
 informs the graph that a particular residue is part of the background More...
 
void prepare_graph_for_simulated_annealing () override
 Prepares the graph to begin simulated annealing. More...
 
void blanket_assign_state_0 () override
 assigns state 0 – the unassigned state – to all (first class) vertices in the graph More...
 
Real get_npd_hbond_score ()
 
void set_errorfull_deltaE_threshold (core::PackerEnergy deltaE) override
 Allows the sim-annealer to specify a deltaE threshold above which, it is no longer necessary to be very accurate. More...
 
void consider_substitution (int node_ind, int new_state, core::PackerEnergy &delta_energy, core::PackerEnergy &prev_energy_for_node) override
 Returns the (possibly approximate) change in energy induced by switching a particular node from its currently assigned state to some alternate state. More...
 
core::PackerEnergy calculate_npd_hbond_deltaE ()
 
Real calculate_alt_state_npd_hbond_score ()
 
core::PackerEnergy commit_considered_substitution () override
 Commits the substitution that the sim annealer had previously asked the graph to consider. Returns the accurate total energy for the graph. More...
 
core::PackerEnergy set_network_state (ObjexxFCL::FArray1_int &node_states) override
 Switch the state assignment of every first class node in the graph. Useful, for instance, if you want to switch to the best network state that you've found so far. More...
 
core::PackerEnergy get_energy_current_state_assignment () override
 returns the energy of the entire graph under the current network state assignment. Also sends a bunch of information to standard error. Only seems to be called by the MultiCoolAnnealer. More...
 
int get_edge_memory_usage () const override
 Should return a measurement of the memory used by the interaction graph to store the rotamer pair energies. Unimplemented. More...
 
unsigned int count_static_memory () const override
 
unsigned int count_dynamic_memory () const override
 
virtual Real get_energy_sum_for_vertex_group (Size group_id)
 returns the sum of the PD energy and the hpatch energy for all members first class members of a user-defined vertex subset. Unimplemented. More...
 
void print_internal_energies_for_current_state_assignment ()
 
void print () const override
 useful for debugging More...
 
int bg_node_2_resid (Size node_index)
 Provides read access to the bg to resid array. Returns -1 if the index is not in bounds. More...
 
std::vector< int > get_network_state () const
 Returns the state on each FCNode, but not necessarily in pose resid order. Only used by the unit tests. More...
 
void set_observed_sufficient_boolean_true ()
 Sets the observed_sufficient_npd_hbond_E_to_predict_min_ to true. Only used by the unit tests. More...
 
scoring::hbonds::HBondDatabase
const & 
hbond_database () const
 
scoring::hbonds::HBondOptions
const & 
hbond_options () const
 
scoring::hbonds::NPDHBondSet
const & 
npd_hbond_set () const
 
utility::vector1< char > & hbonding_to_res_vector ()
 
NPDHBondOP unused_hbond ()
 
void return_hbond_to_queue (NPDHBondOP const &hbond)
 
Real npd_hb_weight (scoring::hbonds::HBEvalType eval_type, bool intra_res)
 
NPDHBondNode< V, E, G > const * get_npd_hbond_node (int index) const
 
NPDHBondNode< V, E, G > * get_npd_hbond_node (int index)
 
NPDHBondBackgroundNode< V, E,
G > const * 
get_npd_hbond_bg_node (int index) const
 
NPDHBondBackgroundNode< V, E, G > * get_npd_hbond_bg_node (int index)
 
- Public Member Functions inherited from core::pack::interaction_graph::AdditionalBackgroundNodesInteractionGraph< V, E, G >
 AdditionalBackgroundNodesInteractionGraph (int num_nodes)
 AdditionalBackgroundNodesInteractionGraph constructor; no default or copy constructors; no operator =. More...
 
 ~AdditionalBackgroundNodesInteractionGraph () override
 AdditionalBackgroundNodesInteractionGraph destructor. More...
 
unsigned int getTotalMemoryUsage () const override
 Returns an int representing the total amount of memory in bytes used by this graph. More...
 
unsigned int count_dynamic_memory () const override
 Returns an int representing the amount of dynamic memory in bytes used by this graph. More...
 
int get_num_background_nodes () const
 

Static Public Member Functions

static void print_npd_hbond_avoidance_stats ()
 reports on the level of success for hpatch score calculation procrastination More...
 
static void reset_npd_hbond_avoidance_stats ()
 resets static member variables of NPDHBondIG that measure how worthwhile hpatch calculation procrastination is. More...
 

Protected Member Functions

NodeBasecreate_new_node (int node_index, int num_states) override
 factory method pattern for instantiation of NPDHBondNode objects, used by InteractionGraphBase class. More...
 
EdgeBasecreate_new_edge (int index1, int index2) override
 factory method pattern for instantiation of NPDHBondEdge objects, used by InteractionGraphBase class. More...
 
BackgroundNode< V, E, G > * create_background_node (int node_index) override
 factory method pattern for instantiation of NPDHBondBackgroundNode objects, used by AdditionalBackgroundNodesInteractionGraph class. More...
 
BackgroundToFirstClassEdge< V,
E, G > * 
create_background_edge (int fc_node_index, int bg_node_index) override
 factory method pattern for instantiation of NPDHBondBackgroundEdge objects, used by AdditionalBackgroundNodesInteractionGraph class. More...
 
void track_npd_hbond_E_min ()
 Keeps track of the minimum hpatch score seen. Every 100 substitutions, updates the variable npd_hbond_score_min_last_100. More...
 
void update_internal_energy_totals_npd_hbond ()
 After every 2^10 commits, the graph traverses its nodes and edges and re-tallies the total energy of the current state assignment. This update prevents the accumulation of numerical drift, increasing accuracy. More...
 
- Protected Member Functions inherited from core::pack::interaction_graph::AdditionalBackgroundNodesInteractionGraph< V, E, G >
void clean_up_bgtfc_edges_marked_for_deletion ()
 Remove those BackgroundToFirstClassEdges that have marked themselves for deletion. More...
 
void drop_background_edge (BackgroundEdgeListIter iter)
 Constant time edge removal. More...
 
void set_num_background_nodes (int num_bg_nodes)
 sets the number of background nodes in the graph. Should be called no more than once. Some problem instances do not require background nodes. More...
 
void add_background_edge (int first_class_node_index, int bg_node_index)
 adds a BackgroundToFirstClassEdge to the graph and performs the requisite bookkeepking. More...
 
BackgroundToFirstClassEdge< V,
E, G > * 
find_background_edge (int first_class_node_index, int bg_node_index) const
 returns a pointer to the background edge, identified by the indices of the first and second class nodes it connects. Returns the null pointer if the edge does not exist. Possibly linear time operation (in the number of BackgroundToFirstClassEdges). More...
 
int get_num_bg_edges () const
 
BackgroundNode< V, E, G > * get_background_node (int index) const
 
void prepare_graph_for_simulated_annealing () override
 invokes prepare_for_simulated_annealing on each of the BackgroundToFirstClassEdges and then invokes prepare_for_simulated_annealing on each of the BackgroundNodes. More...
 
BackgroundEdgeListConstIter get_bg_edge_list_begin () const
 
BackgroundEdgeListConstIter get_bg_edge_list_end () const
 

Private Member Functions

void reset_from_previous_delta_npd_hbond_comp ()
 
bool decide_procrastinate_npd_hbond_computations (Real const pd_deltaE, Real const threshold) const
 
 NPDHBondInteractionGraph ()=delete
 
 NPDHBondInteractionGraph (NPDHBondInteractionGraph< V, E, G > const &)=delete
 
NPDHBondInteractionGraph< V, E,
G > & 
operator= (NPDHBondInteractionGraph< V, E, G > const &)=delete
 

Private Attributes

pose::PoseOP pose_
 
scoring::ScoreFunctionOP scorefxn_
 
utility::graph::GraphOP neighbor_graph_
 
task::PackerTaskOP packer_task_
 
rotamer_set::RotamerSetsOP rotamer_sets_
 
scoring::EnergyMap npd_hbond_score_weights_
 
Size num_total_residues_ = 0
 
Size num_residues_assigned_as_background_ = 0
 
utility::vector1< Sizeresid_2_bgenumeration_
 
utility::vector1< Sizebgenumeration_2_resid_
 
bool prepared_for_simulated_annealing_ = false
 
bool observed_sufficient_npd_hbond_E_to_predict_min_ = false
 
Real npd_hbond_score_min_last_100_ = 0
 
Real npd_hbond_score_min_recent_ = 0
 
Size num_substitutions_since_npd_hbond_min_update_ = 0
 
bool calculated_npd_hbond_deltaE_ = false
 
core::PackerEnergy deltaE_for_substitution_ = 0.0
 
bool last_considered_substitution_accepted_ = false
 
Size node_considering_alt_state_ = 0
 
Size alt_state_being_considered_ = 0
 
Real total_energy_current_state_assignment_ = 0
 
Real total_energy_alternate_state_assignment_ = 0
 
Real npd_hbond_energy_current_state_assignment_ = 0
 
Real npd_hbond_energy_alternate_state_assignment_ = 0
 
int num_commits_since_last_update_ = 0
 
float deltaE_threshold_for_avoiding_npd_hbond_calcs_ = 0.0
 
scoring::hbonds::HBondDatabaseCOP hbond_database_
 
scoring::hbonds::HBondOptionsCOP hbond_options_
 
scoring::hbonds::NPDHBondSetCOP npd_hbond_set_
 
utility::vector1< char > hbonding_to_res_
 
std::list< NPDHBondOPhbonds_queue_
 

Static Private Attributes

static Size num_state_substitutions_considered_ = 0
 
static Size num_npd_hbond_comps_procrastinated_ = 0
 
static Size num_npd_hbond_comps_later_made_ = 0
 
static const int COMMIT_LIMIT_BETWEEN_UPDATES = 4096
 

Detailed Description

template<typename V, typename E, typename G>
class core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >

Defines the interaction graph that will keep track of changes to the hpatch score.

In addition to implementing the virtual base class methods, this class additionally defines methods relating to keeping track of data relating to hpatch.

Member Typedef Documentation

template<typename V, typename E, typename G>
typedef AdditionalBackgroundNodesInteractionGraph< V, E, G > core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::parent

Constructor & Destructor Documentation

template<typename V , typename E , typename G >
core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::NPDHBondInteractionGraph ( int  num_nodes)

Main constructor. Initializes all member variables to 0 and false.

template<typename V , typename E , typename G >
core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::~NPDHBondInteractionGraph ( )
override
template<typename V, typename E, typename G>
core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::NPDHBondInteractionGraph ( )
privatedelete
template<typename V, typename E, typename G>
core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::NPDHBondInteractionGraph ( NPDHBondInteractionGraph< V, E, G > const &  )
privatedelete

Member Function Documentation

template<typename V , typename E , typename G >
int core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::bg_node_2_resid ( Size  node_index)

Provides read access to the bg to resid array. Returns -1 if the index is not in bounds.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::blanket_assign_state_0 ( )
override

assigns state 0 – the unassigned state – to all (first class) vertices in the graph

This is the 3rd entry point into the NPDHBIG. It is called by the Annealer just before simulated annealing and rotamer substitutions begin to init the graph to unassigned values everywhere.

template<typename V, typename E, typename G>
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::calculate_alt_state_npd_hbond_score ( )
template<typename V , typename E , typename G >
core::PackerEnergy core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::calculate_npd_hbond_deltaE ( )

Goes through the entire process of calculating the hpatch deltaE for a substitution.

template<typename V , typename E , typename G >
core::PackerEnergy core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::commit_considered_substitution ( )
override

Commits the substitution that the sim annealer had previously asked the graph to consider. Returns the accurate total energy for the graph.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::consider_substitution ( int  node_ind,
int  new_state,
core::PackerEnergy delta_energy,
core::PackerEnergy prev_energy_for_node 
)
override

Returns the (possibly approximate) change in energy induced by switching a particular node from its currently assigned state to some alternate state.

First, queries the NPDHBondNode for the pairwise-decomposable (PD) energy. If the PD difference implies a collision, then the NPDHBondIG pretends as if the state substitution causes the best improvement possible in hpatch score, and returns the PD difference + pretend hpatch difference. It will procrastinate computing the actual hpatch score difference until the guiding SimAnnealer decides to commit the substitution. If the SimAnnealer rejects the substitution, then the work to compute the hpatch score is never done. If it is unclear that the SimAnnealer will reject the substitution based on the PD difference, then the Graph goes ahead and computes the change in hpatch score accurately.

This function is the 4th major entry point from the Annealer into the NPDHBIG.

Also returns the sum of the two body energies for the node in its current state; the sim-annealer accepts state substitutions at higher chance if the original state was also at a poor energy.

Parameters
node_ind- [in] - the index of the (first class) node new_state - [in] - the alternate state that the node should consider delta_energy - [out] - the change in energy induced on the entire graph by substituting a node's current state with the alternate. This energy may be inaccurate if it exceeds a threshold set by the sim-annealer. prev_energy_for_node - [out] - the sum of the pair-wise decomposable portion of the energy function for the node's currently assigned state
template<typename V , typename E , typename G >
unsigned int core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::count_dynamic_memory ( ) const
override
template<typename V , typename E , typename G >
unsigned int core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::count_static_memory ( ) const
override
template<typename V , typename E , typename G >
BackgroundToFirstClassEdge< V, E, G > * core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::create_background_edge ( int  fc_node_index,
int  bg_node_index 
)
overrideprotectedvirtual
template<typename V , typename E , typename G >
BackgroundNode< V, E, G > * core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::create_background_node ( int  node_index)
overrideprotectedvirtual
template<typename V , typename E , typename G >
EdgeBase * core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::create_new_edge ( int  index1,
int  index2 
)
overrideprotected

factory method pattern for instantiation of NPDHBondEdge objects, used by InteractionGraphBase class.

template<typename V , typename E , typename G >
NodeBase * core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::create_new_node ( int  node_index,
int  num_states 
)
overrideprotected

factory method pattern for instantiation of NPDHBondNode objects, used by InteractionGraphBase class.

template<typename V , typename E , typename G >
bool core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::decide_procrastinate_npd_hbond_computations ( Real const  pd_deltaE,
Real const  threshold 
) const
private

Makes the decision whether or not to procrastinate calculating the NPD-hbond score. Basically, if the PD energy got better (dE < 0) then return false so we don't procrastinate the calculation (because the alternate state probably will be accepted?). If the best guess for the hpatch deltaE also comes back better (dE < 0), then return false. Finally, if the difference between the deltaE for the PD terms and the (guessed) npd-hbond deltaE is greater than the threshold, return true so we do procrastinate. So basically if the PD energy gets much worse, procrastinate. Otherwise, don't.

template<typename V , typename E , typename G >
int core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_edge_memory_usage ( ) const
override

Should return a measurement of the memory used by the interaction graph to store the rotamer pair energies. Unimplemented.

template<typename V , typename E , typename G >
core::PackerEnergy core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_energy_current_state_assignment ( )
override

returns the energy of the entire graph under the current network state assignment. Also sends a bunch of information to standard error. Only seems to be called by the MultiCoolAnnealer.

template<typename V , typename E , typename G >
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_energy_sum_for_vertex_group ( Size  group_id)
virtual

returns the sum of the PD energy and the hpatch energy for all members first class members of a user-defined vertex subset. Unimplemented.

template<typename V , typename E , typename G >
std::vector< int > core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_network_state ( ) const

Returns the state on each FCNode, but not necessarily in pose resid order. Only used by the unit tests.

template<typename V, typename E, typename G>
NPDHBondBackgroundNode< V, E, G > const* core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_npd_hbond_bg_node ( int  index) const
inline
template<typename V, typename E, typename G>
NPDHBondBackgroundNode< V, E, G >* core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_npd_hbond_bg_node ( int  index)
inline
template<typename V, typename E, typename G>
NPDHBondNode< V, E, G > const* core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_npd_hbond_node ( int  index) const
inline
template<typename V, typename E, typename G>
NPDHBondNode< V, E, G >* core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_npd_hbond_node ( int  index)
inline
template<typename V, typename E, typename G>
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::get_npd_hbond_score ( )
template<typename V , typename E , typename G >
scoring::hbonds::HBondDatabase const & core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::hbond_database ( ) const
template<typename V , typename E , typename G >
scoring::hbonds::HBondOptions const & core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::hbond_options ( ) const
template<typename V , typename E , typename G >
utility::vector1< char > & core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::hbonding_to_res_vector ( )
template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::initialize ( pack_basic::RotamerSetsBase const &  rot_sets_base)
override

This function is the 1st major entry point (well, after the constructor) into the NPDHBIG. It needs to set residues that are not changing as background residues

Oldest comments: In ++, there's a file InteractionGraphSupport.cc which is an analog of the InteractionGraphFactory in mini. In ++, the InteractionGraphSupport file instantiates and initializes, depending on the command line switches, the right interaction graph. For the NPDHBondInteractionGraph, it first initializes the PDInteractionGraph (which is the base) and then calls the NPDHBondIG initialize method.

The thing is that this initialize method can't be called when the graph is constructed in the InteractionGraphFactory. The reason is that the PDInteractionGraph base initialize() method is NOT called until later in the pack rotamers process. (Actually it's called from within rotsets->compute_energies().) Only after the rotsets->compute energies returns can I stick in an initialize() method call for the NPDHBondInteractionGraph (NPDHBIG). But then that's too late because the rotsets object has already computed some energies. Perhaps that's ok though. The rotsets object only calculates the PD energy terms - it doesn't do anything with non-PD terms.

If a NPDHBIG init method is called during construction of the NPDHBIG, then the init method that's called by the rotsets object causes all the node info that was set in the NPDHBIG init method to be lost because the rotsets init method recreates all the nodes in the interaction graph when it runs. (That was a fun behaviour to figure out.)

So the solution I'm going for is to call this init method in the prepare for simulated annealing method of this class. That gets called just before SA starts, so it will do the task above then. It doesn't really matter when the task gets done as long as it happens before SA starts. This also means that the NPDHBIG will now have to keep a reference to the Pose, the Task, and the RotamerSets objects since it needs all of these things to do tasks 1) and 2). (For the port of this NPDHBondIG, we might not need the task and rotamer sets objects.)

prepare_graph_for_simulated_annealing gets called by the FixbbSA::run() method. Before this method, the rotamersets object has called compute_energies() (the whole process being started in pack_rotamers) which calls initialize() on the IG. I need to place the NPDHBIG init method directly after the IG init method that the RS object calls.

References core::pack::rotamer_set::RotamerSets::nmoltenres().

template<typename V , typename E , typename G >
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::npd_hb_weight ( scoring::hbonds::HBEvalType  eval_type,
bool  intra_res 
)
template<typename V , typename E , typename G >
scoring::hbonds::NPDHBondSet const & core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::npd_hbond_set ( ) const
template<typename V, typename E, typename G>
NPDHBondInteractionGraph< V, E, G >& core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::operator= ( NPDHBondInteractionGraph< V, E, G > const &  )
privatedelete
template<typename V, typename E, typename G>
utility::graph::Graph const& core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::packer_neighbor_graph ( ) const
inline
template<typename V, typename E, typename G>
task::PackerTask const& core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::packer_task ( ) const
inline
template<typename V, typename E, typename G>
pose::Pose const& core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::pose ( ) const
inline
template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::prepare_graph_for_simulated_annealing ( )
override

Prepares the graph to begin simulated annealing.

Invokes both base-class prepare_graph_for_simulated_annealing subroutines: InteractionGraphBase first, to prepare the NPDHBondNodes and NPDHBondEdges. Then the AdditionalBackgroundNodesInteractionGraph, to prepare the NPDHBondBackgroundNodes, the NPDHBondBackgroundEdges, and to do a little more preparing of the NPDHBondNodes. Also computes background/background overlap. This is the 2nd major entry point into the NPDHBIG.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::print ( ) const
override

useful for debugging

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::print_internal_energies_for_current_state_assignment ( )
template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::print_npd_hbond_avoidance_stats ( )
static

reports on the level of success for hpatch score calculation procrastination

References core::pack::interaction_graph::TR().

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::reset_from_previous_delta_npd_hbond_comp ( )
private
template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::reset_npd_hbond_avoidance_stats ( )
static

resets static member variables of NPDHBondIG that measure how worthwhile hpatch calculation procrastination is.

Referenced by core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_errorfull_deltaE_threshold().

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::return_hbond_to_queue ( NPDHBondOP const &  hbond)
template<typename V, typename E, typename G>
rotamer_set::RotamerSets const& core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::rotamer_sets ( ) const
inline
template<typename V, typename E, typename G>
scoring::ScoreFunction const& core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::scorefxn ( ) const
inline
template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_errorfull_deltaE_threshold ( core::PackerEnergy  deltaE)
override

Allows the sim-annealer to specify a deltaE threshold above which, it is no longer necessary to be very accurate.

When the annealer asks the graph to consider a state substitution that produces a large collision, the graph may approximate the hpatch deltaE instead of performing expensive sphere overlap computations. The deltaE returned by consider_substitution() will be inaccurate, but if the annealer is unlikely to accept the substitution, then time can be saved. The graph guarantees that if the annealer does commit that substitution that it will go back and perform the hpatch computations and return an accurate total energy for the graph.

References core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::reset_npd_hbond_avoidance_stats().

template<typename V , typename E , typename G >
core::PackerEnergy core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_network_state ( ObjexxFCL::FArray1_int &  node_states)
override

Switch the state assignment of every first class node in the graph. Useful, for instance, if you want to switch to the best network state that you've found so far.

This function is the last major entry point from the Annealer into the NPDHBIG.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_num_background_residues ( Size  num_background_residues)

tells the graph how many residues there are as part of the protein that are not part of the combinatorial optimization process – they are part of the background

The other half of switching between enumeration schemes for the background residues is knowing how many background residues there are.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_num_residues_in_protein ( Size  num_res)

tells the graph how many residues there are total in the protein

The graph maintains its own enumeration for the background residues; but asks that anyone wanting to refer to them use their original resid. The graph has to switch back and forth between enumeration schemes and must know how many residues there are total to do that efficiently.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_observed_sufficient_boolean_true ( )

Sets the observed_sufficient_npd_hbond_E_to_predict_min_ to true. Only used by the unit tests.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_packer_neighbor_graph ( utility::graph::Graph const &  neighbor_graph)
template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_packer_task ( task::PackerTask const &  task)

We need a copy of the packer task to figure out which residues are being packed and/or designed. We have to figure the packing options because it determines whether a residue becomes a FirstClass (NPDHBondNode) node or a background node. This method gets called in IGSupport.cc.

References core::pack::task::PackerTask::clone().

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_pose ( pose::Pose const &  pose)

All throughout this class, I refer back to the original pose sequence. To be able to do that, I need to have a handle to the pose in this class. That's what this method provides. In IGFactory.cc, this method gets called with the pose object that's being packed/designed.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_residue_as_background_residue ( int  residue)

informs the graph that a particular residue is part of the background

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_rotamer_sets ( rotamer_set::RotamerSets const &  rotsets)
template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::set_score_function ( scoring::ScoreFunction const &  sfxn)

All throughout this class, I refer back to the original pose sequence. To be able to do that, I need to have a handle to the pose in this class. That's what this method provides. In IGFactory.cc, this method gets called with the pose object that's being packed/designed.

References core::scoring::ScoreFunction::clone(), and core::scoring::EnergiesCacheableDataType::NPD_HBOND_SET.

template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::track_npd_hbond_E_min ( )
protected

Keeps track of the minimum hpatch score seen. Every 100 substitutions, updates the variable npd_hbond_score_min_last_100.

template<typename V , typename E , typename G >
NPDHBondOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::unused_hbond ( )
template<typename V , typename E , typename G >
void core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::update_internal_energy_totals_npd_hbond ( )
protected

After every 2^10 commits, the graph traverses its nodes and edges and re-tallies the total energy of the current state assignment. This update prevents the accumulation of numerical drift, increasing accuracy.

Member Data Documentation

template<typename V, typename E, typename G>
Size core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::alt_state_being_considered_ = 0
private
template<typename V, typename E, typename G>
utility::vector1< Size > core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::bgenumeration_2_resid_
private
template<typename V, typename E, typename G>
bool core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::calculated_npd_hbond_deltaE_ = false
private
template<typename V, typename E, typename G>
const int core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::COMMIT_LIMIT_BETWEEN_UPDATES = 4096
staticprivate
template<typename V, typename E, typename G>
core::PackerEnergy core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::deltaE_for_substitution_ = 0.0
private
template<typename V, typename E, typename G>
float core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::deltaE_threshold_for_avoiding_npd_hbond_calcs_ = 0.0
private
template<typename V, typename E, typename G>
scoring::hbonds::HBondDatabaseCOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::hbond_database_
private
template<typename V, typename E, typename G>
scoring::hbonds::HBondOptionsCOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::hbond_options_
private
template<typename V, typename E, typename G>
utility::vector1< char > core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::hbonding_to_res_
private
template<typename V, typename E, typename G>
std::list< NPDHBondOP > core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::hbonds_queue_
private
template<typename V, typename E, typename G>
bool core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::last_considered_substitution_accepted_ = false
private
template<typename V, typename E, typename G>
utility::graph::GraphOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::neighbor_graph_
private
template<typename V, typename E, typename G>
Size core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::node_considering_alt_state_ = 0
private
template<typename V, typename E, typename G>
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::npd_hbond_energy_alternate_state_assignment_ = 0
private
template<typename V, typename E, typename G>
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::npd_hbond_energy_current_state_assignment_ = 0
private
template<typename V, typename E, typename G>
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::npd_hbond_score_min_last_100_ = 0
private
template<typename V, typename E, typename G>
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::npd_hbond_score_min_recent_ = 0
private
template<typename V, typename E, typename G>
scoring::EnergyMap core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::npd_hbond_score_weights_
private
template<typename V, typename E, typename G>
scoring::hbonds::NPDHBondSetCOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::npd_hbond_set_
private
template<typename V, typename E, typename G>
int core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::num_commits_since_last_update_ = 0
private
template<typename V, typename E, typename G>
Size core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::num_npd_hbond_comps_later_made_ = 0
staticprivate
template<typename V, typename E, typename G>
Size core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::num_npd_hbond_comps_procrastinated_ = 0
staticprivate
template<typename V, typename E, typename G>
Size core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::num_residues_assigned_as_background_ = 0
private
template<typename V, typename E, typename G>
Size core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::num_state_substitutions_considered_ = 0
staticprivate
template<typename V, typename E, typename G>
Size core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::num_substitutions_since_npd_hbond_min_update_ = 0
private
template<typename V, typename E, typename G>
Size core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::num_total_residues_ = 0
private
template<typename V, typename E, typename G>
bool core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::observed_sufficient_npd_hbond_E_to_predict_min_ = false
private
template<typename V, typename E, typename G>
task::PackerTaskOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::packer_task_
private
template<typename V, typename E, typename G>
pose::PoseOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::pose_
private
template<typename V, typename E, typename G>
bool core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::prepared_for_simulated_annealing_ = false
private
template<typename V, typename E, typename G>
utility::vector1< Size > core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::resid_2_bgenumeration_
private
template<typename V, typename E, typename G>
rotamer_set::RotamerSetsOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::rotamer_sets_
private
template<typename V, typename E, typename G>
scoring::ScoreFunctionOP core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::scorefxn_
private
template<typename V, typename E, typename G>
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::total_energy_alternate_state_assignment_ = 0
private
template<typename V, typename E, typename G>
Real core::pack::interaction_graph::NPDHBondInteractionGraph< V, E, G >::total_energy_current_state_assignment_ = 0
private

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