![]() |
Rosetta
2021.16
|
#include <DensePDInteractionGraph.hh>

Public Member Functions | |
| DensePDNode (InteractionGraphBase *owner, int node_id, int num_states) | |
| main constructor, no default or copy constructors More... | |
| ~DensePDNode () override | |
| destructor More... | |
| void | print () const override |
| prints a description of the node and all of it's one-body energies More... | |
| void | update_one_body_energy (int state, core::PackerEnergy energy) override |
| update energy to the one-body energy for state More... | |
| virtual void | update_one_body_energies (ObjexxFCL::FArray1< core::PackerEnergy > &energies) |
| set all the one-body energies for this node More... | |
| void | add_to_one_body_energy (int state, core::PackerEnergy energy) override |
| adds energy to the one-body energy for state state More... | |
| void | add_to_one_body_energies (ObjexxFCL::FArray1< core::PackerEnergy > &energies) override |
| adds all the energies in energies to the one-body energies for this node More... | |
| void | zero_one_body_energies () override |
| sets all of the one-body energies for this node to zero More... | |
| core::PackerEnergy | get_one_body_energy (int state) const override |
| returns the one body energy for a state More... | |
| void | prepare_for_simulated_annealing () override |
| prepares node for simulated annealing More... | |
| void | assign_zero_state () override |
| assigns node's state to it's zero, or "unassigned" state. More... | |
| bool | state_unassigned () const override |
| void | assign_state (int new_state) |
| assigns node a new_state More... | |
| int | get_current_state () const |
| returns the state the node is currently assigned More... | |
| core::PackerEnergy | get_one_body_energy_current_state () const |
| returns the one body energy for the state the node is currently assigned More... | |
| core::PackerEnergy | project_deltaE_for_substitution (int alternate_state, core::PackerEnergy &prev_node_energy) |
| returns the change in energy that would be induced by switching this node from its current state into another state More... | |
| void | commit_considered_substitution () |
| tells the node that it should change its state to the last state it was asked to consider (from a call to project_deltaE_for_substitution) More... | |
| void | acknowledge_neighbors_state_substitution (int edge_to_altered_neighbor, core::PackerEnergy new_edge_energy, int other_node_new_state) |
| updates bookkeeping arrays for when a neighbor has changed its state More... | |
| void | print_internal_energies () const |
| outputs to standard error the bookkeeping energies for the node in its current state assignment More... | |
| void | update_internal_energy_sums () |
| removes numerical drift long stretches of efficient bookkeeping produces More... | |
| unsigned int | count_static_memory () const override |
| If DensePDNode is the most-derived class being used, then this function will be called and will return the amount of memory statically allocated by a single DensePDNode. More... | |
| unsigned int | count_dynamic_memory () const override |
| Called either by the IGBase if the DensePDNode is the most-derived class, or called recursively by a derived class. Called to account for the dynamically allocated memory that this node uses. More... | |
Public Member Functions inherited from core::pack::interaction_graph::PrecomputedPairEnergiesNode | |
| ~PrecomputedPairEnergiesNode () override | |
| PrecomputedPairEnergiesNode (InteractionGraphBase *owner, int node_id, int num_states) | |
Public Member Functions inherited from core::pack::interaction_graph::FixedBBNode | |
| ~FixedBBNode () override | |
| FixedBBNode (InteractionGraphBase *owner, int node_id, int num_states) | |
Public Member Functions inherited from core::pack::interaction_graph::NodeBase | |
| virtual | ~NodeBase () |
| virtual destructor More... | |
| NodeBase (InteractionGraphBase *, int node_id, int num_states) | |
| Main constructor, no default constructor nor copy constructor. More... | |
| int | get_num_states () const |
| returns the number of states for this node More... | |
| std::list< EdgeBase * >::iterator | add_edge (EdgeBase *edge_ptr) |
| adds edge pointer to edge list; returns an iterator to the new list element More... | |
| void | drop_edge (std::list< EdgeBase * >::iterator edge_iterator) |
| removes an edge iterator from the node's edge list More... | |
| void | drop_all_edges () |
| deletes all edges incident upon this node More... | |
| EdgeBase * | find_edge (int other_node_index) const |
| a slow (linear) search for an edge. The edge is identified by the index of the node to which the edge connects this node. Returns NULL when there is no such connecting edge. More... | |
| void | depth_first_connected_component_counting () |
| performs a depth first traversal of the graph. Each node informs the graph that the traversal resulted in arriving at the node. More... | |
| std::list< EdgeBase * > ::const_iterator | edge_list_begin () |
| std::list< EdgeBase * > ::const_iterator | edge_list_end () |
| int | get_node_index () const |
| int | get_num_incident_edges () const |
| int | get_num_edges_to_smaller_indexed_nodes () const |
| int | get_num_edges_to_larger_indexed_nodes () const |
| EdgeBase const * | get_incident_edge (int index) const |
| These functions are public for the sake of writing good unit tests. More... | |
| EdgeBase * | get_incident_edge (int index) |
| int | get_index_of_adjacent_node (int index) const |
| NodeBase const * | get_adjacent_node (int index) const |
| NodeBase * | get_adjacent_node (int index) |
Protected Member Functions | |
| void | update_internal_vectors () |
| updates bookkeeping arrays that correspond to edge-list. More... | |
| core::PackerEnergy | get_curr_pd_energy_total () const |
| core::PackerEnergy | get_alt_pd_energy_total () const |
| void | set_alternate_state (int alt) |
| int | get_alternate_state () const |
| void | calc_deltaEpd (int alternate_state) |
| bool | considering_alternate_state () const |
Protected Member Functions inherited from core::pack::interaction_graph::NodeBase | |
| void | update_edge_vector () |
| converts edge-list to edge-vector representation More... | |
| bool | get_edge_vector_up_to_date () const |
| InteractionGraphBase const * | get_owner () const |
| InteractionGraphBase * | get_owner () |
Private Member Functions | |
| DensePDEdge * | get_incident_dpd_edge (int index) |
| DensePDEdge const * | get_incident_dpd_edge (int index) const |
| DensePDNode * | get_adjacent_dpd_node (int index) |
| DensePDNode const * | get_adjacent_dpd_node (int index) const |
| DensePDInteractionGraph * | get_dpdig_owner () |
| DensePDInteractionGraph const * | get_dpdig_owner () const |
| DensePDNode () | |
| DensePDNode (DensePDNode const &) | |
| DensePDNode & | operator= (DensePDNode const &) |
Private Attributes | |
| std::vector< core::PackerEnergy > | one_body_energies_ |
| std::vector< int > | neighbors_curr_state_ |
| std::vector < ObjexxFCL::FArray2A < core::PackerEnergy > > | edge_matrix_ptrs_ |
| int | current_state_ |
| core::PackerEnergy | curr_state_one_body_energy_ |
| core::PackerEnergy | curr_state_total_energy_ |
| std::vector< core::PackerEnergy > | curr_state_two_body_energies_ |
| int | alternate_state_ |
| core::PackerEnergy | alternate_state_one_body_energy_ |
| core::PackerEnergy | alternate_state_total_energy_ |
| std::vector< core::PackerEnergy > | alternate_state_two_body_energies_ |
| bool | alternate_state_is_being_considered_ |
| core::pack::interaction_graph::DensePDNode::DensePDNode | ( | InteractionGraphBase * | owner, |
| int | node_id, | ||
| int | num_states | ||
| ) |
main constructor, no default or copy constructors
allocates one-body energy array and initializes it to zero.
|
overridedefault |
destructor
not responsible for any dynamically allocated memory, so node does nothing it's member variables, of course, are implicitly destructed
|
private |
Referenced by count_static_memory().
|
private |
|
inline |
updates bookkeeping arrays for when a neighbor has changed its state
| edge_to_altered_neighbor | - [in] - the index for the edge that connects this node to the node that just changed its state |
| new_edge_energ | - [in] - the pair energy between this node in its current state and the new state of the node that just changed its state |
| other_node_new_state | - [in] - the state the neighbor just adopted |
References curr_state_total_energy_, curr_state_two_body_energies_, and neighbors_curr_state_.
Referenced by core::pack::interaction_graph::DensePDEdge::acknowledge_state_zeroed().
|
overridevirtual |
adds all the energies in energies to the one-body energies for this node
| energies | - [in] - the array of energies. Must hold num_states_ entries |
Implements core::pack::interaction_graph::NodeBase.
References core::pack::interaction_graph::NodeBase::get_num_states(), and one_body_energies_.
|
overridevirtual |
adds energy to the one-body energy for state state
| state | - [in] - one-based index of the state |
| energy | - [in] - the energy that should be added. |
Implements core::pack::interaction_graph::NodeBase.
References protocols::buns::energy, and one_body_energies_.
| void core::pack::interaction_graph::DensePDNode::assign_state | ( | int | new_state | ) |
assigns node a new_state
node updates its curr_state one and two body energies
| new_state | - [in] - the new state the node should be assigned |
References core::pack::interaction_graph::DensePDEdge::acknowledge_state_change(), alternate_state_is_being_considered_, assign_zero_state(), curr_state_one_body_energy_, curr_state_total_energy_, curr_state_two_body_energies_, current_state_, get_incident_dpd_edge(), core::pack::interaction_graph::NodeBase::get_node_index(), core::pack::interaction_graph::NodeBase::get_num_incident_edges(), core::pack::interaction_graph::NodeBase::get_num_states(), and one_body_energies_.
Referenced by core::pack::interaction_graph::DensePDInteractionGraph::set_network_state(), and core::pack::interaction_graph::DensePDInteractionGraph::set_state_for_node().
|
overridevirtual |
assigns node's state to it's zero, or "unassigned" state.
zeros the edge-energy array, informs neighbors that it's in its unassigned state
Implements core::pack::interaction_graph::NodeBase.
References alternate_state_, alternate_state_is_being_considered_, curr_state_one_body_energy_, curr_state_total_energy_, curr_state_two_body_energies_, current_state_, get_incident_dpd_edge(), core::pack::interaction_graph::NodeBase::get_node_index(), and core::pack::interaction_graph::NodeBase::get_num_incident_edges().
Referenced by assign_state(), and core::pack::interaction_graph::DensePDInteractionGraph::blanket_assign_state_0().
|
protected |
References project_deltaE_for_substitution().
| void core::pack::interaction_graph::DensePDNode::commit_considered_substitution | ( | ) |
tells the node that it should change its state to the last state it was asked to consider (from a call to project_deltaE_for_substitution)
updates edge energy vector, iterates across neighbors having them update their edge energies. Bookkeeping recaptures performance lost by leaving energy2b structure
References core::pack::interaction_graph::DensePDEdge::acknowledge_substitution(), alternate_state_, alternate_state_is_being_considered_, alternate_state_one_body_energy_, alternate_state_total_energy_, alternate_state_two_body_energies_, curr_state_one_body_energy_, curr_state_total_energy_, curr_state_two_body_energies_, current_state_, get_incident_dpd_edge(), core::pack::interaction_graph::NodeBase::get_node_index(), and core::pack::interaction_graph::NodeBase::get_num_incident_edges().
|
inlineprotected |
References alternate_state_is_being_considered_.
|
overridevirtual |
Called either by the IGBase if the DensePDNode is the most-derived class, or called recursively by a derived class. Called to account for the dynamically allocated memory that this node uses.
Reimplemented from core::pack::interaction_graph::NodeBase.
References alternate_state_two_body_energies_, core::pack::interaction_graph::NodeBase::count_dynamic_memory(), curr_state_two_body_energies_, edge_matrix_ptrs_, neighbors_curr_state_, and one_body_energies_.
|
overridevirtual |
If DensePDNode is the most-derived class being used, then this function will be called and will return the amount of memory statically allocated by a single DensePDNode.
Implements core::pack::interaction_graph::NodeBase.
References DensePDNode().
|
inlineprivate |
|
inlineprivate |
|
inlineprotected |
References alternate_state_total_energy_.
|
inlineprotected |
References alternate_state_.
|
inlineprotected |
References curr_state_total_energy_.
| int core::pack::interaction_graph::DensePDNode::get_current_state | ( | ) | const |
returns the state the node is currently assigned
References current_state_.
Referenced by core::pack::interaction_graph::DensePDInteractionGraph::print_current_state_assignment().
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
overridevirtual |
returns the one body energy for a state
| state | - [in] |
Implements core::pack::interaction_graph::PrecomputedPairEnergiesNode.
References one_body_energies_.
Referenced by core::pack::interaction_graph::DensePDInteractionGraph::get_one_body_energy_for_node_state().
| core::PackerEnergy core::pack::interaction_graph::DensePDNode::get_one_body_energy_current_state | ( | ) | const |
returns the one body energy for the state the node is currently assigned
References curr_state_one_body_energy_.
Referenced by core::pack::interaction_graph::DensePDInteractionGraph::get_energy_sum_for_vertex_group().
|
private |
|
overridevirtual |
prepares node for simulated annealing
updates internal edge vector + other vectorized edge information
Implements core::pack::interaction_graph::NodeBase.
References core::pack::interaction_graph::NodeBase::get_edge_vector_up_to_date(), and update_internal_vectors().
|
overridevirtual |
prints a description of the node and all of it's one-body energies
Implements core::pack::interaction_graph::NodeBase.
References core::pack::interaction_graph::NodeBase::get_node_index(), core::pack::interaction_graph::NodeBase::get_num_states(), and one_body_energies_.
| void core::pack::interaction_graph::DensePDNode::print_internal_energies | ( | ) | const |
outputs to standard error the bookkeeping energies for the node in its current state assignment
References curr_state_one_body_energy_, curr_state_total_energy_, curr_state_two_body_energies_, current_state_, core::pack::interaction_graph::NodeBase::get_index_of_adjacent_node(), and core::pack::interaction_graph::NodeBase::get_num_incident_edges().
Referenced by core::pack::interaction_graph::DensePDInteractionGraph::print_current_state_assignment().
|
inline |
returns the change in energy that would be induced by switching this node from its current state into another state
iterates across the incident edges for a node in two phases: in the first phase, it examines edges leading to higher-indexed nodes in the second phase, it examines edges leading to smaller-indexed nodes. for cache efficiency, all of the amino-acid-neighbor-offset information that each edge calculates is stored on the nodes themselves. The edges are never touched; rather, their private information is stored on the nodes and handed to static member functions of the DensePDEdge class. This "store edge information on the nodes" strategy gives me performance equivalent to the previous energy2b lookup tables.
| alternate_state | - [in] - the alternate state to consider |
| previous_energy_for_node | - [out] - the old energy1b/energy2b sum for this node; used by simulate annealing. |
References alternate_state_, alternate_state_is_being_considered_, alternate_state_one_body_energy_, alternate_state_total_energy_, alternate_state_two_body_energies_, curr_state_total_energy_, edge_matrix_ptrs_, core::pack::interaction_graph::DensePDEdge::get_alternate_state_energy(), core::pack::interaction_graph::NodeBase::get_num_edges_to_smaller_indexed_nodes(), core::pack::interaction_graph::NodeBase::get_num_incident_edges(), neighbors_curr_state_, and one_body_energies_.
Referenced by calc_deltaEpd().
|
inlineprotected |
References alternate_state_.
|
inlineoverridevirtual |
Implements core::pack::interaction_graph::NodeBase.
References current_state_.
| void core::pack::interaction_graph::DensePDNode::update_internal_energy_sums | ( | ) |
removes numerical drift long stretches of efficient bookkeeping produces
References curr_state_one_body_energy_, curr_state_total_energy_, core::pack::interaction_graph::DensePDEdge::get_current_two_body_energy(), core::pack::interaction_graph::NodeBase::get_edge_vector_up_to_date(), get_incident_dpd_edge(), and core::pack::interaction_graph::NodeBase::get_num_incident_edges().
|
protected |
updates bookkeeping arrays that correspond to edge-list.
calls base class update_edge_vector function, and then proceeds to create appropriate bookkeeping arrays used in simulated annealing
References alternate_state_two_body_energies_, curr_state_two_body_energies_, edge_matrix_ptrs_, get_incident_dpd_edge(), core::pack::interaction_graph::NodeBase::get_num_incident_edges(), neighbors_curr_state_, and core::pack::interaction_graph::NodeBase::update_edge_vector().
Referenced by prepare_for_simulated_annealing().
|
virtual |
set all the one-body energies for this node
| energies | - [in] - the array of energies. Must hold num_states_ entries |
References core::pack::interaction_graph::NodeBase::get_num_states(), and one_body_energies_.
|
overridevirtual |
update energy to the one-body energy for state
| state | - [in] - one-based index of the state |
| energy | - [in] - the energy that should be set. |
Implements core::pack::interaction_graph::NodeBase.
References protocols::buns::energy, and one_body_energies_.
|
overridevirtual |
sets all of the one-body energies for this node to zero
Implements core::pack::interaction_graph::NodeBase.
References core::pack::interaction_graph::NodeBase::get_num_states(), and one_body_energies_.
|
private |
|
private |
|
private |
Referenced by commit_considered_substitution(), and project_deltaE_for_substitution().
|
private |
Referenced by commit_considered_substitution(), get_alt_pd_energy_total(), and project_deltaE_for_substitution().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by count_dynamic_memory(), project_deltaE_for_substitution(), and update_internal_vectors().
|
private |
|
private |
1.8.7