34 #include <basic/MetricValue.hh>
38 #include <basic/Tracer.hh>
46 #include <utility/exit.hh>
47 #include <utility/vector1.hh>
50 static basic::Tracer
tr(
"protocols.evaluation.RMSD");
52 namespace simple_filters {
57 : evaluation::SingleValuePoseEvaluator<
Real >( tag ),
59 nchi_max_( nchi_max ),
60 sasa_threshold_( sasa_threshold ),
63 copy( selection.begin(), selection.end(), std::back_inserter(
selection_ ) );
67 : evaluation::SingleValuePoseEvaluator<
Real >( tag ),
69 nchi_max_( nchi_max ),
70 sasa_threshold_( sasa_threshold ),
83 if ( !target_pose ) utility_exit_with_message(
" no target pose for rmsd simple_filters "+
tag_ );
89 basic::MetricValue<utility::vector1< Real > > residue_sasa;
91 sasa_calc.
get(
"residue_sasa", residue_sasa, pose );
94 for ( core::scoring::ResidueSelection::const_iterator it =
selection_.begin(); it !=
selection_.end(); ++it ) {
97 tr.Debug <<
"residue " << seqpos <<
" is solvent exposed (SASA: " << residue_sasa.value()[ seqpos ] <<
" ) ignored... " << std::endl;
102 if ( rsd.type().name() != target_rsd.type().name() )
continue;
110 Size nchi = rsd.chi().size();
112 for (
Size i=1; i<= std::min( nchi,
nchi_max_ ) && good; ++i ) {
113 tr.Debug <<
"Chi " << i <<
" " << rot[ i ] <<
" target: " << target_rot[ i ] << std::endl;
114 good = rot[ i ] == target_rot[ i ];
116 if ( good ) correct+=1;
118 tr.Debug <<
"pos: " << seqpos <<
" correct: " << correct <<
" total: " << total << std::endl;
120 return 1.0/total*correct;