25 #include <basic/options/option.hh>
26 #include <basic/options/keys/dna.OptionKeys.gen.hh>
27 #include <basic/options/keys/score.OptionKeys.gen.hh>
28 #include <basic/database/sql_utils.hh>
29 #include <basic/database/schema_generator/PrimaryKey.hh>
30 #include <basic/database/schema_generator/Column.hh>
31 #include <basic/database/schema_generator/Schema.hh>
32 #include <utility/exit.hh>
33 #include <utility/vector1.hh>
35 #include <cppdb/frontend.h>
37 #include <boost/lexical_cast.hpp>
49 analytic_etable_evaluation_( false ),
50 atom_vdw_atom_type_set_name_(chemical::
CENTROID),
52 exclude_protein_protein_hack_elec_(false),
53 exclude_monomer_hack_elec_(false),
54 hackelec_max_dis_(5.5),
55 hackelec_min_dis_(1.5),
57 hackelec_no_dis_dep_die_(false),
58 smooth_hack_elec_( false ),
59 exclude_DNA_DNA_(true),
60 hbond_options_(new hbonds::HBondOptions()),
61 cst_max_seq_sep_(core::
SZ_MAX),
62 cartbonded_len_(-1.0),
63 cartbonded_ang_(-1.0),
64 cartbonded_tors_(-1.0),
65 cartbonded_proton_(-1.0),
66 cartbonded_improper_(-1.0),
67 cartbonded_linear_(false),
68 pb_bound_tag_(
"bound"),
69 pb_unbound_tag_(
"unbound"),
70 bond_angle_residue_type_param_set_(NULL)
77 hackelec_max_dis_ = basic::options::option[basic::options::OptionKeys::score::hackelec_max_dis ]();
78 hackelec_min_dis_ = basic::options::option[basic::options::OptionKeys::score::hackelec_min_dis ]();
79 hackelec_die_ = basic::options::option[ basic::options::OptionKeys::score::hackelec_die ]();
81 smooth_hack_elec_ = basic::options::option[ basic::options::OptionKeys::score::smooth_hack_elec ]();
82 exclude_DNA_DNA_ = basic::options::option[basic::options::OptionKeys::dna::specificity::exclude_dna_dna];
87 : ReferenceCount( src )
310 utility_exit_with_message(
"EnergyMethodOptions::method_weights do not exist: " +
410 out <<
"EnergyMethodOptions::show: method_weights: " << it->first;
411 for (
Size i=1; i<= it->second.size(); ++i ) {
412 out <<
' ' << it->second[i];
418 out <<
"EnergyMethodOptions::show: exclude_protein_protein_hack_elec: "
420 out <<
"EnergyMethodOptions::show: exclude_monomer_hack_elec: "
422 out <<
"EnergyMethodOptions::show: hackelec_max_dis: " <<
hackelec_max_dis_ << std::endl;
423 out <<
"EnergyMethodOptions::show: hackelec_min_dis: " <<
hackelec_min_dis_ << std::endl;
424 out <<
"EnergyMethodOptions::show: hackelec_die: " <<
hackelec_die_ << std::endl;
425 out <<
"EnergyMethodOptions::show: hackelec_no_dis_dep_die: "
427 out <<
"EnergyMethodOptions::show: smooth_hack_elec: " << (
smooth_hack_elec_ ?
"true" :
"false" ) << std::endl;
428 out <<
"EnergyMethodOptions::show: exclude_DNA_DNA: "
430 out <<
"EnergyMethodOptions::show: cst_max_seq_sep: " <<
cst_max_seq_sep_ << std::endl;
431 out <<
"EnergyMethodOptions::show: pb_bound_tag: " <<
pb_bound_tag_ << std::endl;
432 out <<
"EnergyMethodOptions::show: pb_unbound_tag: " <<
pb_unbound_tag_ << std::endl;
433 out <<
"EnergyMethodOptions::show: bond_angle_central_atoms_to_score:";
435 out <<
"setting ignored";
442 out <<
"EnergyMethodOptions::show: bond_angle_residue_type_param_set: "
445 out <<
" central_atoms_to_score:";
451 out <<
" use_residue_type_theta0: "
464 utility::sql_database::sessionOP db_session
466 using namespace basic::database::schema_generator;
468 Column batch_id(
"batch_id",
new DbInteger(),
true);
469 Column score_function_name(
"score_function_name",
new DbText(),
true);
470 Column option_key(
"option_key",
new DbText(),
true);
471 Column option_value(
"option_value",
new DbText(),
true);
474 pkey_cols.push_back(batch_id);
475 pkey_cols.push_back(score_function_name);
476 pkey_cols.push_back(option_key);
478 Columns foreign_key_columns;
479 foreign_key_columns.push_back(batch_id);
481 reference_columns.push_back(
"batch_id");
482 ForeignKey foreign_key(foreign_key_columns,
"batches", reference_columns,
true);
485 Schema table(
"score_function_method_options", PrimaryKey(pkey_cols));
486 table.add_foreign_key(foreign_key);
487 table.add_column(option_value);
489 table.write(db_session);
498 utility::sql_database::sessionOP db_session
504 option_keys.push_back(
"etable_type");
507 option_keys.push_back(
"analytic_etable_evaluation");
510 option_keys.push_back(
"atom_vdw_atom_type_set_name");
513 option_keys.push_back(
"unfolded_energies_type");
516 option_keys.push_back(
"exclude_protein_protein_hack_elec");
519 option_keys.push_back(
"exclude_monomer_hack_elec");
522 option_keys.push_back(
"hackelec_max_dis");
525 option_keys.push_back(
"hackelec_min_dis");
528 option_keys.push_back(
"hackelec_die");
529 option_values.push_back(boost::lexical_cast<std::string>(
hackelec_die_));
531 option_keys.push_back(
"hackelec_no_dis_dep_die");
534 option_keys.push_back(
"exclude_DNA_DNA");
537 option_keys.push_back(
"cst_max_seq_sep");
538 option_values.push_back(boost::lexical_cast<std::string>(
cst_max_seq_sep_));
540 option_keys.push_back(
"cartbonded_len");
541 option_values.push_back(boost::lexical_cast<std::string>(
cartbonded_len_));
543 option_keys.push_back(
"cartbonded_ang");
544 option_values.push_back(boost::lexical_cast<std::string>(
cartbonded_ang_));
546 option_keys.push_back(
"cartbonded_tors");
547 option_values.push_back(boost::lexical_cast<std::string>(
cartbonded_tors_));
549 option_keys.push_back(
"cartbonded_proton");
552 option_keys.push_back(
"cartbonded_linear");
555 string statement_string;
556 switch(db_session->get_db_mode()){
557 case utility::sql_database::DatabaseMode::sqlite3:
558 statement_string =
"INSERT OR IGNORE INTO score_function_method_options (batch_id, score_function_name, option_key, option_value) VALUES (?,?,?,?);";
560 case utility::sql_database::DatabaseMode::mysql:
561 case utility::sql_database::DatabaseMode::postgres:
562 statement_string =
"INSERT IGNORE INTO score_function_weights (batch_id, score_function_name, option_key, option_value) VALUES (?,?,?,?);";
565 utility_exit_with_message(
566 "Unrecognized database mode: '" +
567 name_from_database_mode(db_session->get_db_mode()) +
"'");
570 cppdb::statement stmt(
571 basic::database::safely_prepare_statement(statement_string, db_session));
573 for(
Size i=1; i <= option_keys.size(); ++i){
574 stmt.bind(1, batch_id);
575 stmt.bind(2, score_function_name);
576 stmt.bind(3, option_keys[i]);
577 stmt.bind(4, option_values[i]);
578 basic::database::safely_write_to_database(stmt);