Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RadiusOfGyrationFeatures.cc
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10 /// @file protocols/features/RadiusOfGyrationFeatures.cc
11 /// @brief report the radius of gyration to features Statistics Scientific Benchmark
12 /// @author Matthew O'Meara (mattjomeara@gmail.com)
13 
14 // Unit Headers
17 
18 // Project Headers
19 #include <core/types.hh>
20 #include <basic/database/sql_utils.hh>
21 
22 // Utility Headers
23 #include <utility/sql_database/DatabaseSessionManager.hh>
24 #include <utility/vector1.hh>
25 
26 #include <basic/database/schema_generator/PrimaryKey.hh>
27 #include <basic/database/schema_generator/ForeignKey.hh>
28 #include <basic/database/schema_generator/Column.hh>
29 #include <basic/database/schema_generator/Schema.hh>
30 
31 // External Headers
32 #include <cppdb/frontend.h>
33 #include <boost/uuid/uuid.hpp>
34 #include <boost/uuid/uuid_io.hpp>
35 
36 namespace protocols{
37 namespace features{
38 
39 using std::string;
40 using core::Size;
41 using core::pose::Pose;
43 using utility::vector1;
44 using utility::sql_database::sessionOP;
45 using cppdb::statement;
46 
48 
51 {}
52 
54 
55 string
56 RadiusOfGyrationFeatures::type_name() const { return "RadiusOfGyrationFeatures"; }
57 
58 void
60  sessionOP db_session
61 ) const {
63 }
64 
65 void
67  sessionOP db_session
68 ) const {
69  using namespace basic::database::schema_generator;
70 
71  Column struct_id("struct_id", new DbUUID());
72  Column radius_of_gyration("radius_of_gyration", new DbReal());
73 
74  Columns primary_key_columns;
75  primary_key_columns.push_back(struct_id);
76  PrimaryKey primary_key(primary_key_columns);
77 
78  Columns foreign_key_columns;
79  foreign_key_columns.push_back(struct_id);
80  vector1< std::string > reference_columns;
81  reference_columns.push_back("struct_id");
82  ForeignKey foreign_key(foreign_key_columns, "structures", reference_columns, true);
83 
84  Schema table("radius_of_gyration", primary_key);
85  table.add_foreign_key(foreign_key);
86  table.add_column(radius_of_gyration);
87 
88  table.write(db_session);
89 }
90 
93  utility::vector1<std::string> dependencies;
94  dependencies.push_back("StructureFeatures");
95  return dependencies;
96 }
97 
98 Size
100  Pose const & pose,
101  vector1< bool > const & relevant_residues,
102  boost::uuids::uuid struct_id,
103  sessionOP db_session
104 ){
106 
107  std::string statement_string = "INSERT INTO radius_of_gyration (struct_id, radius_of_gyration) VALUES (?,?);";
108  statement stmt(basic::database::safely_prepare_statement(statement_string,db_session));
109  stmt.bind(1,struct_id);
110  stmt.bind(2,rg.calculate_rg_score(pose, relevant_residues));
111  basic::database::safely_write_to_database(stmt);
112  return 0;
113 }
114 
115 } // features namesapce
116 } // protocols namespace