43 #include <basic/Tracer.hh>
46 #include <utility/pointer/ReferenceCount.hh>
47 #include <numeric/xyzVector.hh>
53 #include <utility/vector1.hh>
59 namespace downstream {
61 static basic::Tracer
TR(
"protocols.match.downstream.SecondaryMatcherToDownstreamResidue" );
68 upstream_pose_(upstream_pose)
103 for (
Size jj = 1; jj <= target_build_points.size(); ++jj ) {
107 TR <<
"Secondary matching against geomcst " << ii <<
" hits from build point " << target_build_points[ jj ]->original_insertion_point() << std::endl;
109 #pragma omp parallel for
110 for (
Size kk = 1; kk <= my_build_points.size(); ++kk ) {
116 hits[ kk ].splice( hits[ kk ].
end(), kk_hits );
122 std::list< Hit > all_hits;
124 for (
Size ii = 1; ii <= my_build_points.size(); ++ii ) {
125 hits[ ii ].sort( compare );
126 all_hits.splice( all_hits.end(), hits[ ii ] );
136 Size round_just_completed
143 TR <<
" hits." << std::endl;
148 TR <<
"Updating the occupied space grid with " << matcher.
hits(
geom_cst_id() ).size();
149 TR <<
" hits from geometric constraint # " <<
geom_cst_id() << std::endl;
152 occspace->prepare_to_note_hits_for_completed_round();
159 iter != iter_end; ++iter ) {
160 occspace->note_hit_geometry( iter->second() );
163 occspace->drop_unsatisfied_voxels();
190 Size drop_count( 0 );
192 while ( iter != iter_end ) {
195 if ( ! occspace->previous_round_geometry_still_matchable( iter->second() ) ) {
219 Size const scaffold_build_point_id,
220 Size const upstream_conf_id,
224 std::list< Hit > hits;
235 for (
Size kk = 1; kk <= downstream_natoms; ++kk ) {
243 eval_iter != eval_iter_end; ++eval_iter ) {
245 if ( eval_iter->first->evaluate_residues( upstream_residue, target_residue ) ) {
265 hit.
first()[ 1 ] = scaffold_build_point_id;
266 hit.
first()[ 2 ] = upstream_conf_id;
267 hit.
first()[ 3 ] = eval_iter->second;
268 hit.
first()[ 4 ] = 1;
270 hits.push_back( hit );
296 utility_exit_with_message(
"Cannot invoke SecondaryMatcherToDownstreamResidue::hits_to_include_with_partial_match()" );
335 TR <<
"Preparing for hit generation" << std::endl;
339 Size n_target_restypes = 1;
346 std::list< SecondaryMatcherToDownstreamResidueOP > secmatchers;
347 for ( std::list< DownstreamAlgorithmOP >::const_iterator iter = dsalgs.begin(),
348 iter_end = dsalgs.end(); iter != iter_end; ++iter ) {
351 runtime_assert( secmatcher );
352 if ( secmatcher !=
this ) {
355 secmatchers.push_back( secmatcher );
361 bool any_evaluators_require_all_coords(
false );
362 for ( std::list< SecondaryMatcherToDownstreamResidueOP >::const_iterator
363 secmatch_iter = secmatchers.begin(), secmatch_iter_end = secmatchers.end();
364 secmatch_iter != secmatch_iter_end; ++secmatch_iter ) {
366 for ( EvaluatorSet::const_iterator eval_iter = (*secmatch_iter)->respair_evaluators_.begin(),
367 eval_iter_end = (*secmatch_iter)->respair_evaluators_.end();
368 eval_iter != eval_iter_end; ++eval_iter ) {
370 if ( eval_iter->first->require_all_target_residue_atom_coordinates() ) {
371 any_evaluators_require_all_coords =
true;
375 if ( any_evaluators_require_all_coords )
break;
378 if ( any_evaluators_require_all_coords ) {
379 std::fill( atom_required.begin(), atom_required.end(), true );
383 for ( std::list< SecondaryMatcherToDownstreamResidueOP >::const_iterator
384 secmatch_iter = secmatchers.begin(), secmatch_iter_end = secmatchers.end();
385 secmatch_iter != secmatch_iter_end; ++secmatch_iter ) {
387 for ( EvaluatorSet::const_iterator eval_iter = (*secmatch_iter)->respair_evaluators_.begin(),
388 eval_iter_end = (*secmatch_iter)->respair_evaluators_.end();
389 eval_iter != eval_iter_end; ++eval_iter ) {
391 if ( eval_iter->first->require_target_atom_coordinate( ii ) ) {
392 atom_required[ ii ] =
true;
396 if ( atom_required[ ii ] )
break;
412 Size target_geomcst_id
425 for ( std::list< DownstreamAlgorithmOP >::const_iterator
426 iter = dsalgs.begin(), iter_end = dsalgs.end();
427 iter != iter_end; ++iter ) {
428 if ( iter->get() != this ) {
430 runtime_assert( other );
466 Size target_geomcst_id,
470 TR <<
"Preparing to examine geomcst-" << target_geomcst_id <<
"'s hits built from scaffold build point " << target_build_point.
original_insertion_point() << std::endl;
473 Size target_build_id = target_build_point.
index();
485 Size count_target_hits( 0 );
510 Size count_ds_hits( 0 );
520 *iter, dsrescoords );
525 TR <<
"Examining " << count_target_hits <<
" hits built from scaffold build point "
527 <<
" unique upstream rotamers" << std::endl;