14 #include <numeric/util.hh>
19 #include <basic/options/option.hh>
21 #include <basic/options/keys/constraints.OptionKeys.gen.hh>
27 #include <utility/vector1.hh>
32 namespace constraints {
42 Real lowest_sdev(100);
44 for (
Size i = 1; i <= n_funcs; ++i ) {
45 Real mean(0.0), sdev(0.0), weight(0.0);
46 in >> mean >> sdev >> weight;
56 if ( sdev < lowest_sdev ) lowest_sdev = sdev;
74 using namespace basic::options;
75 using namespace basic::options::OptionKeys;
76 if ( option[ OptionKeys::constraints::sog_upper_bound ].user() ) {
77 upper_bound(option[ OptionKeys::constraints::sog_upper_bound ]());
89 for (
Size ii = 1; ii <=
sdevs_.size(); ++ii ) {
90 total += std::pow(
sdevs_[ii], -10 );
94 for (
Size ii = 1; ii <=
sdevs_.size(); ++ii ) {
133 Real const alt_mean( 18.991 );
134 Real const alt_sdev( 7.353 );
135 return -1 * std::log(
dgaussian( x, alt_mean, alt_sdev, 1.0 ) );
144 w != w_end && m != m_end && s != s_end;
161 if ( score <= 1e-50 ) {
164 Real sc = -std::log(score);
172 Real const h( 1e-6 );
179 if ( numeric::isinf( val ) || numeric::isnan( val ) ) {
180 std::cerr <<
"bounds error (radius = " << x <<
", val = " << val <<
"), def = ";
183 utility_exit_with_message(
"Fatal SOGFunc_Impl error." );
192 out <<
"SOGFUNC " <<
weights_.size();
208 using namespace basic::options;
209 using namespace basic::options::OptionKeys;
211 if ( option[ basic::options::OptionKeys::constraints::sog_cst_param ].user() ) {
212 sog_cst_param( option[ basic::options::OptionKeys::constraints::sog_cst_param ]() );