35 #include <utility/vector1.functions.hh>
39 #include <utility/vector1.hh>
74 using namespace graph;
86 if ( dynamic_cast< conformation::symmetry::SymmetricConformation const * > ( & pose.
conformation() ) ) {
88 static_cast< conformation::symmetry::SymmetricConformation const & > ( pose.
conformation() ));
96 Distance const max_radius = utility::max( residue_radii );
97 Distance const atomic_itxn_dist = scfxn.
info()->max_atomic_interaction_distance();
102 core::conformation::find_neighbors<core::conformation::PointGraphVertexData,core::conformation::PointGraphEdgeData>( point_graph, atomic_itxn_dist + 2 * max_radius );
106 for (
Size ii = 1; ii <= total_nodes; ++ii ) {
108 if ( symm_info && symm_info->bb_follows( ii ) != 0 ) {
109 ii_asu = symm_info->bb_follows(ii);
111 Distance const ii_itxn_rad = residue_radii[ ii_asu ] + atomic_itxn_dist;
113 iter = point_graph->get_vertex( ii ).const_upper_edge_list_begin(),
114 iter_end = point_graph->get_vertex( ii ).const_upper_edge_list_end();
115 iter != iter_end; ++iter ) {
117 Size jj = iter->upper_vertex();
119 if ( symm_info && symm_info->bb_follows( jj ) != 0 ) {
120 jj_asu = symm_info->bb_follows(jj);
122 Distance const jj_rad = residue_radii[ jj_asu ];
124 if ( jj_rad + ii_itxn_rad > 0 &&
125 iter->data().dsq() < ( jj_rad + ii_itxn_rad )*( jj_rad + ii_itxn_rad ) ) {
127 g->add_edge( ii, jj );
147 using namespace chemical;
184 if ( the_task->pack_residue( ii ) ) {
186 allowed_iter = the_task->residue_task( ii ).allowed_residue_types_begin(),
187 allowed_end = the_task->residue_task( ii ).allowed_residue_types_end();
188 allowed_iter != allowed_end; ++allowed_iter ) {
189 if ((*allowed_iter)->nbr_radius() > max_radius_for_res ) {
190 max_radius_for_res = (*allowed_iter)->nbr_radius();
196 rotsetop_iter = the_task->residue_task( ii ).rotamer_set_operation_begin(),
197 rotsetop_end = the_task->residue_task( ii ).rotamer_set_operation_end();
198 rotsetop_iter != rotsetop_end; ++rotsetop_iter ) {
200 core::Real radius_change = (*rotsetop_iter)->increase_packer_residue_radius( pose, the_task, ii );
201 if( radius_change > max_rad_change ) {
202 max_rad_change = radius_change;
205 if( max_rad_change != 0.0 ) max_radius_for_res = max_radius_for_res + max_rad_change;
209 residue_max_radii[ ii ] = max_radius_for_res;
211 return residue_max_radii;