28 #include <basic/Tracer.hh>
29 #include <utility/exit.hh>
30 #include <utility/stream_util.hh>
31 #include <utility/string_util.hh>
32 #include <basic/MetricValue.hh>
37 #include <utility/vector1.hh>
42 using namespace core::pose;
43 using namespace core::pose::metrics;
45 static basic::Tracer
TR(
"protocols/toolbox/PoseMetricCalculators/PackstatCalculator");
49 namespace pose_metric_calculators {
52 PackstatCalculator::PackstatCalculator(
54 bool remove_nonprotein_res
55 ) : total_packstat_(0),
56 special_region_packstat_(0),
57 oversample_(oversample),
58 remove_nonprotein_res_(remove_nonprotein_res)
66 std::set< core::Size >
const & special_region,
68 bool remove_nonprotein_res
69 ) : total_packstat_(0),
70 special_region_packstat_(0),
71 oversample_(oversample),
72 remove_nonprotein_res_(remove_nonprotein_res),
73 special_region_( special_region )
82 basic::MetricValueBase * valptr
86 if ( key ==
"total_packstat" ) {
87 basic::check_cast( valptr, &
total_packstat_,
"total_packstat expects to return a real" );
88 (
static_cast<basic::MetricValue<Real> *
>(valptr))->set(
total_packstat_ );
90 }
else if ( key ==
"special_region_packstat" ) {
94 }
else if ( key ==
"residue_packstat" ) {
95 basic::check_cast( valptr, &
residue_packstat_,
"residue_packstat expects to return a utility::vector1< Real >" );
96 (
static_cast<basic::MetricValue<utility::vector1< Real >
> *>(valptr))->set(
residue_packstat_ );
99 basic::Error() <<
"PackstatCalculator cannot compute the requested metric " << key << std::endl;
111 if ( key ==
"total_packstat" ) {
113 }
else if ( key ==
"special_region_packstat" ) {
115 }
else if ( key ==
"residue_packstat" ) {
119 basic::Error() <<
"PackstatCalculator cannot compute metric " << key << std::endl;
131 using namespace core::scoring::packstat;
135 bool has_nonprot_res(
false);
139 has_nonprot_res =
true;
144 if( has_nonprot_res ){