Rosetta 3.4
Public Member Functions | Protected Member Functions
core::pack::interaction_graph::PDNode Class Reference

#include <PDInteractionGraph.hh>

Inheritance diagram for core::pack::interaction_graph::PDNode:
Inheritance graph
[legend]
Collaboration diagram for core::pack::interaction_graph::PDNode:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 PDNode (InteractionGraphBase *owner, int node_id, int num_states)
 main constructor, no default or copy constructors
virtual ~PDNode ()
 destructor
virtual void print () const
 prints a description of the node and all of it's one-body energies
virtual void set_amino_acid_types (std::vector< int > const &)
 sets the amino acid type for each state
virtual int aatype_for_state (int state) const
 return the amino acid type for a particular state -- this indexing is of course completely arbitrary
utility::vector1< int > const & get_num_states_for_aa_types () const
 returns an FArray & with the number of states for each amino acid type
virtual void update_one_body_energy (int state, core::PackerEnergy energy)
 update energy to the one-body energy for state
virtual void update_one_body_energies (ObjexxFCL::FArray1< core::PackerEnergy > &energies)
 set all the one-body energies for this node
virtual void add_to_one_body_energy (int state, core::PackerEnergy energy)
 adds energy to the one-body energy for state state
virtual void add_to_one_body_energies (ObjexxFCL::FArray1< core::PackerEnergy > &energies)
 adds all the energies in energies to the one-body energies for this node
virtual void zero_one_body_energies ()
core::PackerEnergy get_one_body_energy (int state)
 returns the one body energy for a state
virtual void prepare_for_simulated_annealing ()
 prepares node for simulated annealing
void assign_zero_state ()
 assigns node's state to it's zero, or "unassigned" state.
virtual bool state_unassigned () const
void assign_state (int new_state)
 assigns node a new_state
int get_current_state () const
 returns the state the node is currently assigned
core::PackerEnergy get_one_body_energy_current_state () const
 returns the one body energy for the state the node is currently assigned
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
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)
void project_deltaE_for_substitution (int alternate_state, core::PackerEnergy &deltaE_unweighted, core::PackerEnergy &prevE_unweighted, core::PackerEnergy &deltaE_weighted, core::PackerEnergy &prevE_weighted, ObjexxFCL::FArray2D< core::PackerEnergy > const &weights)
 returns the change in weighted energy that would be induced by switching this node from its current state into another state
core::PackerEnergy get_weighted_energy_with_higher_indexed_nodes (ObjexxFCL::FArray2D< core::PackerEnergy > const &weights) const
 Paul's code.
void acknowledge_neighbors_state_substitution (int edge_to_altered_neighbor, core::PackerEnergy new_edge_energy, int other_node_new_state, SparseMatrixIndex const &other_node_new_state_sparse_info)
 updates bookkeeping arrays for when a neighbor has changed its state
SparseMatrixIndex const & get_sparse_mat_info_for_state (int state) const
 returns the sparse matrix information for a paricular state
SparseMatrixIndex const & get_sparse_mat_info_for_curr_state () const
 returns the sparse matrix information for the current state
int get_num_states_for_aa_type (int aa_type) const
 returns the number of states that are of a particular amino acid type
void print_internal_energies () const
 outputs to standard error the bookkeeping energies for the node in its current state assignment
void update_internal_energy_sums ()
 removes numerical drift long stretches of efficient bookkeeping produces
virtual unsigned int count_static_memory () const
virtual unsigned int count_dynamic_memory () const
 memory accounting scheme

Protected Member Functions

void update_internal_vectors ()
 updates bookkeeping arrays that correspond to edge-list.
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)
 
  • allow derived class to "drive" through the deltaE calculation

bool considering_alternate_state () const

Constructor & Destructor Documentation

core::pack::interaction_graph::PDNode::PDNode ( 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. allocates space for sparse-matrix information.

core::pack::interaction_graph::PDNode::~PDNode ( ) [virtual]

destructor

not responsible for any dynamically allocated memory, so node does nothing it's member variables, of course, are implicitly destructed


Member Function Documentation

int core::pack::interaction_graph::PDNode::aatype_for_state ( int  state) const [virtual]

return the amino acid type for a particular state -- this indexing is of course completely arbitrary

Referenced by core::pack::interaction_graph::PDInteractionGraph::aatype_for_node_state().

void core::pack::interaction_graph::PDNode::acknowledge_neighbors_state_substitution ( int  edge_to_altered_neighbor,
core::PackerEnergy  new_edge_energy,
int  other_node_new_state,
SparseMatrixIndex const &  other_node_new_state_sparse_info 
) [inline]

updates bookkeeping arrays for when a neighbor has changed its state

Parameters:
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
other_node_new_state_sparse_info- [in] - the sparse-matrix info corresponding to the neighbor's new state
virtual void core::pack::interaction_graph::PDNode::add_to_one_body_energies ( ObjexxFCL::FArray1< core::PackerEnergy > &  energies) [virtual]

adds all the energies in energies to the one-body energies for this node

Implements core::pack::interaction_graph::NodeBase.

void core::pack::interaction_graph::PDNode::add_to_one_body_energy ( int  state,
core::PackerEnergy  energy 
) [virtual]

adds energy to the one-body energy for state state

Parameters:
state- [in] - one-based index of the state
energy- [in] - the energy that should be added.

Implements core::pack::interaction_graph::NodeBase.

void core::pack::interaction_graph::PDNode::assign_state ( int  new_state)
void core::pack::interaction_graph::PDNode::assign_zero_state ( ) [virtual]

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 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::PDInteractionGraph::blanket_assign_state_0().

void core::pack::interaction_graph::PDNode::calc_deltaEpd ( int  alternate_state) [protected]

  • allow derived class to "drive" through the deltaE calculation

References make_table_of_pilot_apps::f, and project_deltaE_for_substitution().

void core::pack::interaction_graph::PDNode::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::PDEdge::acknowledge_substitution(), core::pack::interaction_graph::NodeBase::get_node_index(), and core::pack::interaction_graph::NodeBase::get_num_incident_edges().

bool core::pack::interaction_graph::PDNode::considering_alternate_state ( ) const [inline, protected]
unsigned int core::pack::interaction_graph::PDNode::count_dynamic_memory ( ) const [virtual]

memory accounting scheme

Reimplemented from core::pack::interaction_graph::NodeBase.

unsigned int core::pack::interaction_graph::PDNode::count_static_memory ( ) const [virtual]
core::PackerEnergy core::pack::interaction_graph::PDNode::get_alt_pd_energy_total ( ) const [inline, protected]
int core::pack::interaction_graph::PDNode::get_alternate_state ( ) const [inline, protected]
core::PackerEnergy core::pack::interaction_graph::PDNode::get_curr_pd_energy_total ( ) const [inline, protected]
int core::pack::interaction_graph::PDNode::get_current_state ( ) const

returns the state the node is currently assigned

Referenced by core::pack::interaction_graph::PDInteractionGraph::print_current_state_assignment().

int core::pack::interaction_graph::PDNode::get_num_states_for_aa_type ( int  aa_type) const

returns the number of states that are of a particular amino acid type

Parameters:
aa_type- [in] - the amino acid type in question
utility::vector1< int > const & core::pack::interaction_graph::PDNode::get_num_states_for_aa_types ( ) const

returns an FArray & with the number of states for each amino acid type

Used by AminoAcidNeighborSparseMatrix. The FArray must persist for as long as any AminoAcidNeighborSparseMatrix points to it.

Referenced by core::pack::interaction_graph::PDEdge::get_second_node_num_states_per_aa().

core::PackerEnergy core::pack::interaction_graph::PDNode::get_one_body_energy ( int  state)

returns the one body energy for a state

Parameters:
state- [in]

Referenced by core::pack::interaction_graph::PDInteractionGraph::get_one_body_energy_for_node_state().

float core::pack::interaction_graph::PDNode::get_one_body_energy_current_state ( ) const

returns the one body energy for the state the node is currently assigned

Referenced by core::pack::interaction_graph::PDInteractionGraph::get_energy_sum_for_vertex_group().

SparseMatrixIndex const & core::pack::interaction_graph::PDNode::get_sparse_mat_info_for_curr_state ( ) const

returns the sparse matrix information for the current state

SparseMatrixIndex const & core::pack::interaction_graph::PDNode::get_sparse_mat_info_for_state ( int  state) const

returns the sparse matrix information for a paricular state

Parameters:
state- [in] - the state whose information is requested

References core::pack::interaction_graph::NodeBase::get_num_states().

float core::pack::interaction_graph::PDNode::get_weighted_energy_with_higher_indexed_nodes ( ObjexxFCL::FArray2D< core::PackerEnergy > const &  weights) const
void core::pack::interaction_graph::PDNode::prepare_for_simulated_annealing ( ) [virtual]

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().

void core::pack::interaction_graph::PDNode::print ( ) const [virtual]
void core::pack::interaction_graph::PDNode::print_internal_energies ( ) const
float core::pack::interaction_graph::PDNode::project_deltaE_for_substitution ( int  alternate_state,
core::PackerEnergy prev_node_energy 
) [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 PDEdge class. This "store edge information on the nodes" strategy gives me performance equivalent to the previous energy2b lookup tables.

Parameters:
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 core::pack::interaction_graph::SparseMatrixIndex::get_aa_type(), core::pack::interaction_graph::NodeBase::get_num_edges_to_smaller_indexed_nodes(), core::pack::interaction_graph::NodeBase::get_num_incident_edges(), and core::pack::interaction_graph::SparseMatrixIndex::get_state_ind_for_this_aa_type().

Referenced by calc_deltaEpd().

void core::pack::interaction_graph::PDNode::project_deltaE_for_substitution ( int  alternate_state,
core::PackerEnergy deltaE_unweighted,
core::PackerEnergy prevE_unweighted,
core::PackerEnergy deltaE_weighted,
core::PackerEnergy prevE_weighted,
ObjexxFCL::FArray2D< core::PackerEnergy > const &  weights 
)

returns the change in weighted energy that would be induced by switching this node from its current state into another state

void core::pack::interaction_graph::PDNode::set_alternate_state ( int  alt) [inline, protected]
void core::pack::interaction_graph::PDNode::set_amino_acid_types ( std::vector< int > const &  aatypes_for_state) [virtual]

sets the amino acid type for each state

The graph doesn't know anything specific about amino acid types, for instance, nothing specially distinguishes glycine and threonine. The sparse-matrix representation for the PDEdge two-body energy tables requires knowing when two states are of the *same* amino acid type and when they are *different* amino acid types.

Parameters:
aatypes_for_state- [in] - amino acid type for each state in the node

References core::pack::interaction_graph::NodeBase::get_num_states().

Referenced by core::pack::interaction_graph::PDInteractionGraph::initialize().

virtual bool core::pack::interaction_graph::PDNode::state_unassigned ( ) const [inline, virtual]
void core::pack::interaction_graph::PDNode::update_internal_energy_sums ( )
void core::pack::interaction_graph::PDNode::update_internal_vectors ( ) [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

It's possible that a derived class created an Edge, but that Edge doesn't have any two body energies. For example, in the HPatchIG, two residues (Nodes) may have SASA overlap, but be outside of the 5.5A energy function cutoff. To handle this case, check the size of the two-body energy table before trying to dereference it. (ronj)

References core::pack::interaction_graph::PDEdge::get_edge_table_ptr(), core::pack::interaction_graph::NodeBase::get_index_of_adjacent_node(), core::pack::interaction_graph::NodeBase::get_node_index(), core::pack::interaction_graph::NodeBase::get_num_edges_to_larger_indexed_nodes(), core::pack::interaction_graph::NodeBase::get_num_incident_edges(), core::pack::interaction_graph::PDEdge::get_offsets_for_aatypes(), core::pack::interaction_graph::PDEdge::get_second_node_num_states_per_aa(), core::pack::interaction_graph::PDEdge::get_two_body_table_size(), and core::pack::interaction_graph::NodeBase::update_edge_vector().

Referenced by prepare_for_simulated_annealing().

void core::pack::interaction_graph::PDNode::update_one_body_energies ( ObjexxFCL::FArray1< core::PackerEnergy > &  energies) [virtual]

set all the one-body energies for this node

decrements the one body energies by the values held in old_energy1b, increments the one body energies by the values held in new_energy1b, and copies new_energy1b into old_energy1b.

Parameters:
energies- [in] - the array of energies. Must hold num_states_ entries

InteractionGraphBase::add_to_one_body_energies

Detailed:
Parameters:
old_energy1b- [in/out] - the one body energies representing interactions with portions of the background that are no longer valid new_energy1b - [in] - the one body energies representing interactions with the background after the background has changed
Global Read:
Global Write:
Remarks:
useful if you want to move something in the background like a ligand. moving the background does not invalidate the two-body energies.
References:
Authors:
apl
Last Modified:

References core::pack::interaction_graph::NodeBase::get_num_states().

void core::pack::interaction_graph::PDNode::update_one_body_energy ( int  state,
core::PackerEnergy  energy 
) [virtual]

update energy to the one-body energy for state

Parameters:
state- [in] - one-based index of the state
energy- [in] - the energy that should be set.

Implements core::pack::interaction_graph::NodeBase.

void core::pack::interaction_graph::PDNode::zero_one_body_energies ( ) [virtual]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines