23 #include <utility/sql_database/DatabaseSessionManager.hh>
24 #include <utility/vector1.hh>
25 #include <utility/tag/Tag.hh>
26 #include <basic/database/sql_utils.hh>
28 #include <basic/database/schema_generator/PrimaryKey.hh>
29 #include <basic/database/schema_generator/ForeignKey.hh>
30 #include <basic/database/schema_generator/Column.hh>
31 #include <basic/database/schema_generator/Schema.hh>
36 #include <cppdb/frontend.h>
37 #include <boost/uuid/uuid_io.hpp>
42 #include <utility/excn/Exceptions.hh>
43 #include <utility/vector0.hh>
51 using std::stringstream;
62 using utility::sql_database::sessionOP;
65 using cppdb::statement;
81 rotamer_boltzmann_weight_(src.rotamer_boltzmann_weight_)
100 using namespace basic::database::schema_generator;
102 Column struct_id(
"struct_id",
new DbUUID());
103 Column resNum(
"resNum",
new DbInteger());
104 Column boltzmann_weight(
"boltzmann_weight",
new DbReal());
106 Columns primary_key_columns;
107 primary_key_columns.push_back(struct_id);
108 primary_key_columns.push_back(resNum);
109 PrimaryKey primary_key(primary_key_columns);
111 Columns foreign_key_columns;
112 foreign_key_columns.push_back(struct_id);
113 foreign_key_columns.push_back(resNum);
115 reference_columns.push_back(
"struct_id");
116 reference_columns.push_back(
"resNum");
117 ForeignKey foreign_key(foreign_key_columns,
"residues", reference_columns,
true);
119 Schema table(
"rotamer_boltzmann_weight", primary_key);
120 table.add_foreign_key(foreign_key);
121 table.add_column(boltzmann_weight);
123 table.write(db_session);
129 dependencies.push_back(
"ResidueFeatures");
141 if(tag->hasOption(
"scorefxn")){
142 string scorefxn_name = tag->getOption<
string>(
"scorefxn");
146 stringstream error_msg;
148 <<
"The " <<
type_name() <<
" reporter requires a 'scorefxn' tag:" << endl
150 <<
" <feature name=" <<
type_name() <<
" scorefxn=(name_of_score_function) />" << endl;
151 throw utility::excn::EXCN_RosettaScriptsOption(error_msg.str());
160 boost::uuids::uuid
const struct_id,
164 std::string statement_string =
"INSERT INTO rotamer_boltzmann_weight (struct_id, resNum, boltzmann_weight) VALUES (?,?,?);";
165 statement stmt(basic::database::safely_prepare_statement(statement_string,db_session));
167 if(!relevant_residues[resNum])
continue;
168 Real const boltzmann_weight(
171 stmt.bind(1,struct_id);
173 stmt.bind(3,boltzmann_weight);
174 basic::database::safely_write_to_database(stmt);