42 #include <utility/exit.hh>
46 #include <utility/vector1.hh>
80 if ( ! dynamic_cast< SymmetricEnergies const * > ( &other ) ) {
128 using namespace graph;
136 dynamic_cast<SymmetricConformation const &> ( pose.
conformation()) );
158 bool const ii_moved( ii_map == 0 || all_moved );
161 Distance const ii_intxn_radius( iiradius +
165 ii_iter = pg->get_vertex( ii ).upper_edge_list_begin(),
166 ii_end_iter = pg->get_vertex( ii ).upper_edge_list_end();
167 ii_iter != ii_end_iter; ++ii_iter ) {
168 uint const jj = ii_iter->upper_vertex();
176 if ( ii_intxn_radius + jjradius > 0 ) {
177 if ( square_distance < (ii_intxn_radius + jjradius )*(ii_intxn_radius + jjradius )) {
190 for (
uint kk = 1; kk <= context_graphs_present.size(); ++kk ) {
191 context_graphs_present[ kk ]->conditionally_add_edge( ii, jj, square_distance );
200 int symm_res ( SymmConf.
Symmetry_Info()->bb_follows( res ) );
207 for (
uint kk = 1; kk <= context_graphs_present.size(); ++kk ) {
209 int symm_res ( SymmConf.
Symmetry_Info()->bb_follows( res ) );
210 int neighbors_symm ( context_graphs_present[ kk ]->get_node( symm_res )->num_neighbors_counting_self() );
211 context_graphs_present[ kk ]->get_node( res )->set_num_neighbors_counting_self_static( neighbors_symm );
224 dynamic_cast<SymmetricConformation const &> ( pose.
conformation()) );
234 Distance const neighbor_cutoff = numeric::max( energy_neighbor_cutoff, context_cutoff );
237 core::conformation::find_neighbors_restricted<core::conformation::PointGraphVertexData,core::conformation::PointGraphEdgeData>( pg, neighbor_cutoff, symm_info->independent_residues() );
249 assert( cgraphs[type] == 0 );
250 required_cgraphs[type] =
true;
252 if ( cgraphs[type] == 0 ) {
253 utility_exit_with_message(
"Error: Null returned from ContextGraphFactory::create_context_graph( " + utility::to_string( type ) +
")" );
255 cgraphs[type]->set_num_nodes(
size() );
262 required_cgraphs[type] =
true;
264 using namespace graph;
268 for (
uint ii = 1, ii_end =
size(); ii <= ii_end; ++ii ) {
270 ii_iter =
point_graph->get_vertex( ii ).upper_edge_list_begin(),
271 ii_end_iter =
point_graph->get_vertex( ii ).upper_edge_list_end();
272 ii_iter != ii_end_iter; ++ii_iter ) {
273 uint const jj = ii_iter->upper_vertex();
275 cgraphs[type]->conditionally_add_edge( ii, jj, square_distance );
280 dynamic_cast<SymmetricConformation const &> ( (*
owner()).conformation()) );
284 for (
uint res = 1; res <= (*
owner()).total_residue(); ++res ) {
286 int symm_res ( SymmConf.
Symmetry_Info()->bb_follows( res ) );
287 int neighbors_symm ( cgraphs[ type ]->get_node( symm_res )->num_neighbors_counting_self() );
288 cgraphs[ type ]->get_node( res )->set_num_neighbors_counting_self_static( neighbors_symm );