17 #include <basic/database/sql_utils.hh>
18 #include <numeric/roc_curve.hh>
19 #include <utility/exit.hh>
22 #include <boost/uuid/uuid.hpp>
23 #include <boost/uuid/uuid_io.hpp>
26 #include <utility/vector1.hh>
32 utility::sql_database::sessionOP db_session,
34 std::map<std::string,core::Size>
const & grid_indices) : core::optimization::Multifunc(), initial_values_(initial_values), grid_indices_(grid_indices), cutoff_(0.0)
37 "SELECT job_string_real_data.data_value\n"
38 " FROM job_string_real_data\n"
40 " job_string_real_data.data_key = ?\n"
42 " job_string_real_data.struct_id = ?;";
44 score_selection_ = basic::database::safely_prepare_statement(value_string,db_session);
46 std::string struct_id_string =
"SELECT structures.struct_id FROM structures;";
51 "SELECT structures.tag, structure_activity.activity\n"
53 " INNER JOIN structure_activity ON structures.input_tag = structure_activity.input_tag\n"
54 " WHERE structures.struct_id = ?;";
64 cppdb::result struct_id_result(basic::database::safely_read_from_database(
struct_id_selection_));
65 while(struct_id_result.next())
67 boost::uuids::uuid struct_id;
68 struct_id_result >> struct_id;
83 numeric::RocCurve roc_curve;
85 for(std::list<qsarOptData>::const_iterator data_it =
data_map_.begin(); data_it !=
data_map_.end();++data_it)
90 for(std::map<std::string,core::Real>::const_iterator score_it = data_it->score_map.begin(); score_it != data_it->score_map.end();++score_it)
97 total_score += (component_score/initial_weight)*current_weight;
100 bool predicted(total_score <
cutoff_);
101 roc_curve.insert_point(predicted,data_it->activity,data_it->tag,total_score);
104 roc_curve.generate_roc_curve();
105 return roc_curve.calculate_auc();
111 utility_exit_with_message(
"haven't implemented dfunc sorry bye");
116 utility_exit_with_message(
"haven't implemented dump sorry bye");
126 if(tag_activity_result.next())
128 tag_activity_result >> tag >> activity;
132 std::map<std::string,core::Real> score_map;
137 cppdb::result score_result(basic::database::safely_read_from_database(
score_selection_));
138 if(score_result.next())
141 score_result >> component_score;
142 score_map.insert(std::make_pair(grid_it->first,component_score));
149 new_point.
activity =
static_cast<bool>(activity);