23 #include <basic/basic.hh>
26 #include <numeric/constants.hh>
27 #include <numeric/xyz.functions.hh>
30 #include <utility/pointer/ReferenceCount.hh>
31 #include <utility/string_util.hh>
36 #include <utility/vector1.hh>
41 namespace downstream {
47 lowval_(gsi.ideal_val() - gsi.tolerance() ),
48 highval_( gsi.ideal_val() + gsi.tolerance() )
67 if (
at_inds_[ ii ].first == 2 &&
at_inds_[ ii ].second == target_atom_id ) {
80 else if ( value <
lowval_ )
return false;
89 at_inds_.push_back( std::make_pair( which_cst_res, atom_ind_in_res ) );
149 return "AtomDistance range " + utility::to_string( std::sqrt(
lowval()) ) +
150 " A to " + utility::to_string( std::sqrt(
highval()) ) +
" A between " +
151 utility::trim(
at_inds()[ 1 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
153 utility::trim(
at_inds()[ 1 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 1 ].second ) : target_restype->atom_name(
at_inds()[ 1 ].second )) +
155 utility::trim(
at_inds()[ 2 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
157 utility::trim(
at_inds()[ 2 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 2 ].second ) : target_restype->atom_name(
at_inds()[ 2 ].second ));
168 assert(
at_inds()[ 2 ].first == 2 );
170 return at_inds()[ 2 ].second == target_atom_id;
178 if (
at_inds()[ 2 ].second == target_atom_id ) {
190 if (
at_inds()[ 2 ].second == target_atom_id ) {
229 core::Real angle( numeric::arccos( dot( u1,u2 ) / ( n1 * n2 ) ) );
250 return "AtomAngle range " + utility::to_string( numeric::constants::d::radians_to_degrees *
lowval() ) +
251 " degrees to " + utility::to_string( numeric::constants::d::radians_to_degrees *
highval() ) +
" degrees between " +
252 utility::trim(
at_inds()[ 1 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
254 utility::trim(
at_inds()[ 1 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 1 ].second ) : target_restype->atom_name(
at_inds()[ 1 ].second )) +
256 utility::trim(
at_inds()[ 2 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
258 utility::trim(
at_inds()[ 2 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 2 ].second ) : target_restype->atom_name(
at_inds()[ 2 ].second )) +
260 utility::trim(
at_inds()[ 3 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
262 utility::trim(
at_inds()[ 3 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 3 ].second ) : target_restype->atom_name(
at_inds()[ 3 ].second ));
268 check_periodicity_(gsi.periodicity() != 360.0 ),
269 periodicity_(gsi.periodicity() * numeric::constants::d::degrees_to_radians ),
270 offset_( basic::periodic_range( gsi.ideal_val() * numeric::constants::d::degrees_to_radians, periodicity_ ) )
310 for (
Size ii = 0; ii < n_periods; ++ii ) {
313 prefix +=
" [ " + utility::to_string( lo_deg ) +
", " + utility::to_string( hi_deg ) +
" ]";
315 prefix +=
" degrees between " +
316 utility::trim(
at_inds()[ 1 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
318 utility::trim(
at_inds()[ 1 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 1 ].second ) : target_restype->atom_name(
at_inds()[ 1 ].second )) +
320 utility::trim(
at_inds()[ 2 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
322 utility::trim(
at_inds()[ 2 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 2 ].second ) : target_restype->atom_name(
at_inds()[ 2 ].second )) +
324 utility::trim(
at_inds()[ 3 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
326 utility::trim(
at_inds()[ 3 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 3 ].second ) : target_restype->atom_name(
at_inds()[ 3 ].second )) +
328 utility::trim(
at_inds()[ 4 ].first == 1 ? candidate_restype->name() : target_restype->name() ) +
330 utility::trim(
at_inds()[ 4 ].first == 1 ? candidate_restype->atom_name(
at_inds()[ 4 ].second ) : target_restype->atom_name(
at_inds()[ 4 ].second ));
351 adist->add_at_ind( 1, upstream_inds[1] );
352 adist->add_at_ind( 2, downstream_inds[1] );
358 aang1->add_at_ind( 1, upstream_inds[2] );
359 aang1->add_at_ind( 1, upstream_inds[1] );
360 aang1->add_at_ind( 2, downstream_inds[1] );
366 aang2->add_at_ind( 1, upstream_inds[1] );
367 aang2->add_at_ind( 2, downstream_inds[1] );
368 aang2->add_at_ind( 2, downstream_inds[2] );
374 adih1->add_at_ind( 1, upstream_inds[3] );
375 adih1->add_at_ind( 1, upstream_inds[2] );
376 adih1->add_at_ind( 1, upstream_inds[1] );
377 adih1->add_at_ind( 2, downstream_inds[1] );
383 adih2->add_at_ind( 1, upstream_inds[2] );
384 adih2->add_at_ind( 1, upstream_inds[1] );
385 adih2->add_at_ind( 2, downstream_inds[1] );
386 adih2->add_at_ind( 2, downstream_inds[2] );
392 adih3->add_at_ind( 1, upstream_inds[1] );
393 adih3->add_at_ind( 2, downstream_inds[1] );
394 adih3->add_at_ind( 2, downstream_inds[2] );
395 adih3->add_at_ind( 2, downstream_inds[3] );
408 it != it_end; ++it ){
409 if ( ! (*it)->evaluate_residues( candidate_res, target_res ) )
return false;
427 it != it_end; ++it ){
428 if ( (*it)->require_target_atom_coordinate( target_atom_id ) )
return true;
438 it != it_end; ++it ){
439 if ( (*it)->require_candidate_residue_atoms_to_lie_near_target_atom( target_atom_id ) )
return true;
451 std::list< Size > atoms;
454 it != it_end; ++it ){
456 if ( reqd_atoms.size() != 0 ) {
457 for (
Size ii = 1; ii <= reqd_atoms.size(); ++ii ) {
458 atoms.push_back( reqd_atoms[ ii ] );
467 for ( std::list< Size >::const_iterator iter = atoms.begin(),
468 iter_end = atoms.end(); iter != iter_end; ++iter ) {
469 atom_vect[ count ] = *iter;
480 Real min_max_dis( -1.0 );
483 it != it_end; ++it ) {
484 Real max_dis = (*it)->max_separation_dist_to_target_atom( target_atom_id );
485 if ( max_dis > 0.0 && min_max_dis > max_dis ) {
486 min_max_dis = max_dis;