Rosetta
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
core::pack::interaction_graph::HPatchEdge< V, E, G > Class Template Reference

Defines a HPatch Edge which connects two first-class HPatch Nodes. Edges have to keep some state so that updates to SASA and the hpatch score can be done fast. More...

#include <HPatchInteractionGraph.hh>

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

Public Types

typedef FirstClassEdge< V, E, Gparent
 

Public Member Functions

 HPatchEdge (G *owner, int node1, int node2)
 main constructor. No default, or copy constructors, no assignment operator More...
 
 ~HPatchEdge () override
 
void prepare_for_simulated_annealing () override
 drops zero submatrices of the AminoAcidNeighborSparseMatrix and if the two_body_energies_ member then holds nothing, it checks whether or not its incident nodes have any sphere overlaps. If they don't then the edge deletes itself. More...
 
void acknowledge_state_zeroed (int node_index)
 respond to when one of its vertices enters the "unassigned" state. More...
 
Real update_state_at_neighbor (int node_considering_substitution, int alt_state, RotamerDots &alt_state_dots)
 returns the change in sasa for the neighbor of a node that is produced by the state substitution it is considering. More...
 
void acknowledge_substitution ()
 bookkeeping following the decision to substitute a nodes current state with the alternate it was asked to consider. More...
 
utility::vector1< utility::vector1< bool > > const & get_current_state_atom_atom_overlaps () const
 Returns a const reference to the atom-x-atom-pair vector-of-vectors of bools that specifies which atoms are overlapping, assuming the current state assignment. More...
 
utility::vector1< utility::vector1< bool > > const & get_alt_state_atom_atom_overlaps () const
 Returns a const reference to the atom-x-atom-pair vector-of-vectors of bools that specifies which atoms are overlapping, assuming the alternate state assignment. More...
 
void declare_energies_final () override
 Reduces memory usage in the two body energy table after the energy calculating function declares that the energies will not change thereafter. More...
 
virtual unsigned int getMemoryUsageInBytes () const
 
unsigned int count_static_memory () const override
 
unsigned int count_dynamic_memory () const override
 
Real get_current_two_body_energy () const
 
- Public Member Functions inherited from core::pack::interaction_graph::FirstClassEdge< V, E, G >
 ~FirstClassEdge () override
 FirstClassEdge destructor. More...
 
 FirstClassEdge (G *owner, int first_node_ind, int second_node_ind)
 FirstClassEdge constructor. More...
 
unsigned int count_dynamic_memory () const override
 

Protected Member Functions

HPatchNode< V, E, G > * get_hpatch_node (int index)
 

Private Member Functions

void inform_non_changing_node_of_neighbors_change ()
 tells the node that isn't considering a substitution or changing state that its neighbor who is has changed. More...
 
 HPatchEdge ()
 
 HPatchEdge (HPatchEdge< V, E, G > const &)
 
HPatchEdge< V, E, G > & operator= (HPatchEdge< V, E, G > const &)
 

Private Attributes

int node_changing_
 
int node_not_changing_
 
int nodes_curr_states_ [2]
 
int nodes_alt_states_ [2]
 
RotamerDotsCache nodes_curr_pair_dot_counts_ [2]
 
RotamerDotsCache nodes_alt_pair_dot_counts_ [2]
 
utility::vector1< utility::vector1< bool > > current_state_atom_atom_overlaps_
 
utility::vector1< utility::vector1< bool > > alt_state_atom_atom_overlaps_
 
utility::vector1< std::pair< Size, Size > > curr_state_exolap_hphobes_
 pairs of hphobes that have exposed overlap More...
 
utility::vector1< std::pair< Size, Size > > alt_state_exolap_hphobes_
 

Detailed Description

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

Defines a HPatch Edge which connects two first-class HPatch Nodes. Edges have to keep some state so that updates to SASA and the hpatch score can be done fast.

Member Typedef Documentation

◆ parent

template<typename V , typename E , typename G >
typedef FirstClassEdge< V, E, G > core::pack::interaction_graph::HPatchEdge< V, E, G >::parent

Constructor & Destructor Documentation

◆ HPatchEdge() [1/3]

template<typename V , typename E , typename G >
core::pack::interaction_graph::HPatchEdge< V, E, G >::HPatchEdge ( G owner,
int  node1,
int  node2 
)

main constructor. No default, or copy constructors, no assignment operator

Parameters
owner- [in] - the owning interaction graph object node1 - [in] - the index of the lower-indexed HPatchNode node2 - [in] - the index of the higher-indexed HPatchNode

References core::pack::interaction_graph::HPatchEdge< V, E, G >::nodes_alt_states_, and core::pack::interaction_graph::HPatchEdge< V, E, G >::nodes_curr_states_.

◆ ~HPatchEdge()

template<typename V , typename E , typename G >
core::pack::interaction_graph::HPatchEdge< V, E, G >::~HPatchEdge
override

◆ HPatchEdge() [2/3]

template<typename V , typename E , typename G >
core::pack::interaction_graph::HPatchEdge< V, E, G >::HPatchEdge ( )
private

◆ HPatchEdge() [3/3]

template<typename V , typename E , typename G >
core::pack::interaction_graph::HPatchEdge< V, E, G >::HPatchEdge ( HPatchEdge< V, E, G > const &  )
private

Member Function Documentation

◆ acknowledge_state_zeroed()

template<typename V , typename E , typename G >
void core::pack::interaction_graph::HPatchEdge< V, E, G >::acknowledge_state_zeroed ( int  node_that_changed)

respond to when one of its vertices enters the "unassigned" state.

called during the HIG::blanket_assign_state_0 -> HPatchNode::assign_zero_state() cascade of calls.

◆ acknowledge_substitution()

template<typename V , typename E , typename G >
void core::pack::interaction_graph::HPatchEdge< V, E, G >::acknowledge_substitution

bookkeeping following the decision to substitute a nodes current state with the alternate it was asked to consider.

◆ count_dynamic_memory()

template<typename V , typename E , typename G >
unsigned int core::pack::interaction_graph::HPatchEdge< V, E, G >::count_dynamic_memory
override

◆ count_static_memory()

template<typename V , typename E , typename G >
unsigned int core::pack::interaction_graph::HPatchEdge< V, E, G >::count_static_memory
override

◆ declare_energies_final()

template<typename V , typename E , typename G >
void core::pack::interaction_graph::HPatchEdge< V, E, G >::declare_energies_final
override

Reduces memory usage in the two body energy table after the energy calculating function declares that the energies will not change thereafter.

Remarks
(all by apl) In the PDEdge's version of this method, after invoking two_body_energies_.drop_zero_submatrices_where_possible(); the PDEdge checks if the two body energy table it now holds is empty. If the table is empty, the edge deletes itself.

A HPatchEdge should not delete itself if the pair energies are all zero since the Minkowski sum of a water and a van der Waal's sphere extends further out from an atoms center than its (lj_atr, lj_rep, lksolv) interaction sphere. However, if a HPatchEdge holds no pair energies, it's a very good candidate for removal – it just first needs to check that no (vdw + 1.4 A) spheres overlap between any pair of rotamers on the edges it connects.

◆ get_alt_state_atom_atom_overlaps()

template<typename V , typename E , typename G >
utility::vector1< utility::vector1< bool > > const & core::pack::interaction_graph::HPatchEdge< V, E, G >::get_alt_state_atom_atom_overlaps

Returns a const reference to the atom-x-atom-pair vector-of-vectors of bools that specifies which atoms are overlapping, assuming the alternate state assignment.

◆ get_current_state_atom_atom_overlaps()

template<typename V , typename E , typename G >
utility::vector1< utility::vector1< bool > > const & core::pack::interaction_graph::HPatchEdge< V, E, G >::get_current_state_atom_atom_overlaps

Returns a const reference to the atom-x-atom-pair vector-of-vectors of bools that specifies which atoms are overlapping, assuming the current state assignment.

◆ get_current_two_body_energy()

template<typename V , typename E , typename G >
Real core::pack::interaction_graph::HPatchEdge< V, E, G >::get_current_two_body_energy ( ) const

◆ get_hpatch_node()

template<typename V , typename E , typename G >
HPatchNode< V, E, G >* core::pack::interaction_graph::HPatchEdge< V, E, G >::get_hpatch_node ( int  index)
inlineprotected

◆ getMemoryUsageInBytes()

template<typename V , typename E , typename G >
unsigned int core::pack::interaction_graph::HPatchEdge< V, E, G >::getMemoryUsageInBytes
virtual
Remarks
Not implemented.

◆ inform_non_changing_node_of_neighbors_change()

template<typename V , typename E , typename G >
void core::pack::interaction_graph::HPatchEdge< V, E, G >::inform_non_changing_node_of_neighbors_change
inlineprivate

tells the node that isn't considering a substitution or changing state that its neighbor who is has changed.

◆ operator=()

template<typename V , typename E , typename G >
HPatchEdge< V, E, G >& core::pack::interaction_graph::HPatchEdge< V, E, G >::operator= ( HPatchEdge< V, E, G > const &  )
private

◆ prepare_for_simulated_annealing()

template<typename V , typename E , typename G >
void core::pack::interaction_graph::HPatchEdge< V, E, G >::prepare_for_simulated_annealing
override

drops zero submatrices of the AminoAcidNeighborSparseMatrix and if the two_body_energies_ member then holds nothing, it checks whether or not its incident nodes have any sphere overlaps. If they don't then the edge deletes itself.

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

◆ update_state_at_neighbor()

template<typename V , typename E , typename G >
Real core::pack::interaction_graph::HPatchEdge< V, E, G >::update_state_at_neighbor ( int  node_considering_substitution,
int  alt_state,
RotamerDots changing_node_alt_state_dots 
)

returns the change in sasa for the neighbor of a node that is produced by the state substitution it is considering.

Very complicated. See HPatchNode::project_deltaE_for_neighbors_state_sub This edge collects cached sphere overlaps and hands this cached data to the node that is not considering the state substitution. That node computes more sphere overlaps and returns a delta sasa; this method then passes that delta sasa along.

See more comments inline.

Parameters
changing_node_alt_state_dots- [in] - the RotamerDots object for the alternate state at the changing Node

References core::pack::interaction_graph::RotamerDots::get_num_atoms().

Member Data Documentation

◆ alt_state_atom_atom_overlaps_

template<typename V , typename E , typename G >
utility::vector1< utility::vector1< bool > > core::pack::interaction_graph::HPatchEdge< V, E, G >::alt_state_atom_atom_overlaps_
private

◆ alt_state_exolap_hphobes_

template<typename V , typename E , typename G >
utility::vector1< std::pair< Size, Size > > core::pack::interaction_graph::HPatchEdge< V, E, G >::alt_state_exolap_hphobes_
private

◆ curr_state_exolap_hphobes_

template<typename V , typename E , typename G >
utility::vector1< std::pair< Size, Size > > core::pack::interaction_graph::HPatchEdge< V, E, G >::curr_state_exolap_hphobes_
private

pairs of hphobes that have exposed overlap

◆ current_state_atom_atom_overlaps_

template<typename V , typename E , typename G >
utility::vector1< utility::vector1< bool > > core::pack::interaction_graph::HPatchEdge< V, E, G >::current_state_atom_atom_overlaps_
private

◆ node_changing_

template<typename V , typename E , typename G >
int core::pack::interaction_graph::HPatchEdge< V, E, G >::node_changing_
private

◆ node_not_changing_

template<typename V , typename E , typename G >
int core::pack::interaction_graph::HPatchEdge< V, E, G >::node_not_changing_
private

◆ nodes_alt_pair_dot_counts_

template<typename V , typename E , typename G >
RotamerDotsCache core::pack::interaction_graph::HPatchEdge< V, E, G >::nodes_alt_pair_dot_counts_[2]
private

◆ nodes_alt_states_

template<typename V , typename E , typename G >
int core::pack::interaction_graph::HPatchEdge< V, E, G >::nodes_alt_states_[2]
private

◆ nodes_curr_pair_dot_counts_

template<typename V , typename E , typename G >
RotamerDotsCache core::pack::interaction_graph::HPatchEdge< V, E, G >::nodes_curr_pair_dot_counts_[2]
private

◆ nodes_curr_states_

template<typename V , typename E , typename G >
int core::pack::interaction_graph::HPatchEdge< V, E, G >::nodes_curr_states_[2]
private

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