18 #include <numeric/interpolation/spline/SplineGenerator.hh>
20 #include <utility/vector1.hh>
21 #include <utility/io/izstream.hh>
22 #include <utility/json_spirit/json_spirit_reader.h>
24 #include <basic/Tracer.hh>
33 static basic::Tracer
TR(
"core.scoring.NV");
40 NVlookup::~NVlookup() {}
42 using namespace numeric::interpolation::spline;
47 assert(bin_centers.size() == data.size());
49 Real lower_bound_x = 0;
50 Real upper_bound_x = 1.1;
52 core::Real lower_bound_y = *std::min_element(data.begin(),data.end());
53 core::Real upper_bound_y = *std::max_element(data.begin(),data.end());
58 SplineGenerator spline(lower_bound_x,lower_bound_y,0,upper_bound_x,upper_bound_y,0);
60 for(
Size potential_index = 1; potential_index <= data.size(); ++potential_index)
62 Real x_value = bin_centers[potential_index];
63 Real y_value = data[potential_index];
64 spline.add_known_value(x_value,y_value);
69 lookup_table_[aa_type] = spline.get_interpolator();
77 utility::io::izstream infile;
78 infile.open(filename.c_str(),ifstream::in);
79 utility::json_spirit::mValue histogram_object;
80 utility::json_spirit::read(infile,histogram_object);
83 utility::json_spirit::mArray
const & bin_array_data = histogram_object.get_obj()[
"bin_centers"].get_array();
87 for(
core::Size i =0; i < bin_array_data.size();++i)
89 bin_centers.push_back(bin_array_data[i].get_real());
93 utility::json_spirit::mObject
const & spline_objects = histogram_object.get_obj()[
"scores"].get_obj();
95 utility::json_spirit::mObject::const_iterator spline_object_iterator = spline_objects.begin();
96 for(; spline_object_iterator != spline_objects.end();++spline_object_iterator)
98 std::string aa_name_string = spline_object_iterator->first;
99 assert(aa_name_string.size() == 1);
100 char aa_name = aa_name_string[0];
104 utility::json_spirit::mArray
const & spline_array_data = spline_object_iterator->second.get_array();
106 for(
core::Size i = 0; i < spline_array_data.size(); ++i)
108 spline_values.push_back(spline_array_data[i].get_real());
124 Real potential_energy;
125 Real delta_potential_energy;
127 row->interpolate(score,potential_energy,delta_potential_energy);
129 return potential_energy;