15 #ifndef INCLUDED_core_pack_interaction_graph_PDInteractionGraph_hh
16 #define INCLUDED_core_pack_interaction_graph_PDInteractionGraph_hh
28 #include <ObjexxFCL/FArray1D.hh>
29 #include <ObjexxFCL/FArray2D.hh>
30 #include <ObjexxFCL/FArray3D.hh>
39 #include <utility/vector1.hh>
40 #include <ObjexxFCL/FArray1A.hh>
46 namespace interaction_graph {
50 class PDInteractionGraph;
58 virtual void print()
const;
112 ObjexxFCL::FArray2D< core::PackerEnergy >
const& weights
119 int edge_to_altered_neighbor,
121 int other_node_new_state,
274 int first_node_alt_state,
275 int second_node_orig_state,
277 int first_node_state_offset_minus_1,
278 int second_node_curr_num_states_per_aatype,
279 int aa_neighbor_offset,
280 ObjexxFCL::FArray1< core::PackerEnergy > & edge_energy_table
286 int first_node_orig_state,
287 int second_node_alt_state,
290 int second_node_alt_state_num_states_per_aatype,
291 int aa_neighbor_offset,
292 ObjexxFCL::FArray1< core::PackerEnergy > & edge_energy_table
296 int substituted_node_index,
317 ObjexxFCL::FArray2D< core::PackerEnergy >
385 virtual void add_edge(
int node1,
int node2);
448 ObjexxFCL::FArray2D< core::PackerEnergy >
const& weights
466 ObjexxFCL::FArray2D< core::PackerEnergy >
605 int first_node_alt_state,
606 int second_node_orig_state,
608 int first_node_state_offset_minus_1,
609 int second_node_curr_num_states_per_aatype,
610 int aa_neighbor_offset,
611 FArray1< core::PackerEnergy > & edge_energy_table
615 if (first_node_alt_state == 0 || second_node_orig_state == 0) {
619 second_node_orig_state_sparse_info,
620 first_node_state_offset_minus_1,
621 second_node_curr_num_states_per_aatype,
638 int substituted_node_index,
639 float const curr_state_energy,
644 int node_substituted = substituted_node_index ==
get_node_index(0) ? 0 : 1;
645 int node_not_substituted = ! node_substituted;
650 acknowledge_neighbors_state_substitution (
654 nodes_new_state_sparse_info
681 int first_node_orig_state,
682 int second_node_alt_state,
685 int second_node_alt_state_num_states_per_aatype,
686 int aa_neighbor_offset,
687 FArray1< core::PackerEnergy > & edge_energy_table
691 if (first_node_orig_state == 0 || second_node_alt_state == 0) {
695 first_node_orig_state_sparse_info,
696 second_node_alternate_state_sparse_info,
697 second_node_alt_state_num_states_per_aatype,
715 int edge_to_altered_neighbor,
716 float new_edge_energy,
717 int other_node_new_state,
724 curr_state_two_body_energies_[edge_to_altered_neighbor] = new_edge_energy;
727 other_node_new_state_sparse_info;
748 float & prev_energy_for_node
762 int alt_state_num_states_per_aa_type =
764 int alt_state_for_aa_type_minus_1 =
777 get_alternate_state_energy_second_node(
782 alt_state_num_states_per_aa_type,
784 aa_neighb_linear_index_offset +
802 get_alternate_state_energy_first_node(
807 alt_state_for_aa_type_minus_1,
813 aa_neighb_linear_index_offset +
835 #endif //SPARSE_PD_INTERACTION_GRAPH_H