18 #include <utility/tag/Tag.hh>
22 #include <basic/Tracer.hh>
26 #include <utility/vector1.hh>
27 #include <numeric/util.hh>
34 static basic::Tracer
TR(
"protocols.filters.ReplicateFilter" );
38 Filter(
"ReplicateFilter" ),
47 Filter(
"ReplicateFilter" ),
48 subfilter_(subfilter),
49 replicates_(replicates),
50 upper_trim_(upper_trim),
51 lower_trim_(lower_trim),
72 out<<
"ReplicateFilter returns "<<
compute(pose) <<std::endl;
79 TR.Warning <<
"Replicate Filter trims off all values - returning 0." << std::endl;
83 values.push_back(
subfilter_->report_sm( pose ) );
85 std::sort( values.begin(), values.end() );
87 TR.Warning <<
"Replicate Filter used, but all " <<
replicates_ <<
" replicates are identical! " << std::endl;
90 TR <<
"Replicate filter: ";
93 TR << values[jj] <<
" ";
96 value_trim.push_back( values[jj] );
102 value = numeric::median( value_trim );
105 value = numeric::mean( value_trim );
107 TR <<
"=> " << value << std::endl;
123 if (lower_cut < 1.0) {
127 if (upper_cut < 1.0) {
131 utility_exit_with_message(
"In ReplicateFilter, the number of items removed by upper and lower cuts exceed the total number of items.");
133 median_ = tag_ptr->getOption<
bool >(
"median", false );