21 #include <basic/options/keys/constraints.OptionKeys.gen.hh>
22 #include <basic/options/option.hh>
23 #include <basic/database/open.hh>
26 #include <basic/Tracer.hh>
29 #include <utility/io/izstream.hh>
30 #include <utility/vector1.hh>
31 #include <numeric/interpolation/spline/SplineGenerator.hh>
32 #include <numeric/interpolation/spline/Interpolator.hh>
33 #include <numeric/interpolation/util.hh>
41 basic::Tracer
TR(
"core.scoring.constraints.SplineFunc");
45 namespace constraints {
62 potential_vect_size_(0),
129 utility::io::izstream potential_file;
132 if( basic::options::option[ basic::options::OptionKeys::constraints::epr_distance]() )
135 filename_ = basic::database::full_name(
"scoring/constraints/epr_distance_potential.histogram");
145 numeric::interpolation::spline::SplineGenerator common_spline(numeric::interpolation::spline_from_file(
filename_,
bin_size_));
177 if( diff >= -15.0 && diff <= 15.0 )
179 interpolator_->interpolate( diff, potential_energy, delta_potential_energy);
180 weighted_potential_energy = (
weight_*potential_energy);
181 return weighted_potential_energy;
186 potential_energy = 0;
187 return potential_energy;
201 interpolator_->interpolate( diff, potential_energy, delta_potential_energy);
202 weighted_potential_energy = (
weight_*potential_energy);
203 return weighted_potential_energy;
208 potential_energy = 0;
209 return potential_energy;
217 interpolator_->interpolate( x, potential_energy, delta_potential_energy);
218 weighted_potential_energy = (
weight_*potential_energy);
219 return weighted_potential_energy;
224 potential_energy = 0;
225 return potential_energy;
243 if( diff >= -15.0 && diff <= 16.0 )
245 interpolator_->interpolate( diff, potential_energy, delta_potential_energy);
246 return (
weight_*delta_potential_energy);
256 interpolator_->interpolate( x, potential_energy, delta_potential_energy);
257 return (
weight_*delta_potential_energy);
286 if( diff >= -15.0 && diff <= 16.0 )
288 interpolator_->interpolate( diff, potential_energy, delta_potential_energy);
289 weighted_potential_energy = (
weight_*potential_energy);
294 weighted_potential_energy = 0;
298 if ( verbose_level > 100 )
300 out <<
"SPLINEFUNC:" <<
"\t" <<
"Description: " <<
KB_description_ <<
"\t"
301 <<
"exp_val: " <<
exp_val_ <<
"\t" <<
"model_dist: " << x <<
"\t" <<
"dsl-dcb: " << diff <<
"\t"
302 <<
"weighted_potential: " << weighted_potential_energy <<
"\t"
303 <<
"weight:" <<
"\t" <<
weight_ << std::endl;
305 else if ( verbose_level > 70 )
307 out <<
"SPLINEFUNC:" <<
"\t" <<
"Description: " <<
KB_description_ <<
"\t"
308 <<
"exp_val: " <<
exp_val_ <<
"\t" <<
"model_dist: " << x <<
"\t" <<
"dsl-dcb: " << diff << std::endl;
315 interpolator_->interpolate( x, potential_energy, delta_potential_energy);
316 weighted_potential_energy = (
weight_*potential_energy);
321 weighted_potential_energy = 0;
325 if ( verbose_level > 100 )
328 <<
"model_dist: " << x <<
"\t" <<
"exp_val - x: " <<
exp_val_ - x <<
"\t" <<
"weighted_potential: " << weighted_potential_energy
329 <<
"\t" <<
"weight:" <<
weight_ << std::endl;
331 else if ( verbose_level > 70 )
333 out <<
"SPLINEFUNC:" <<
"\t" <<
"Description: " <<
KB_description_ <<
"\t"
334 <<
"exp_val: " <<
exp_val_ <<
"\t" <<
"model_dist: " << x << std::endl;