Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ResidueFeatures.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/ResidueFeatures.cc
11 /// @brief report residue features to features Statistics Scientific Benchmark
12 /// @author Matthew O'Meara
13 
14 // Unit Headers
16 
17 //External
18 #include <boost/uuid/uuid.hpp>
19 #include <boost/uuid/uuid_io.hpp>
20 
21 // Project Headers
22 #include <basic/options/option.hh>
23 #include <basic/options/keys/inout.OptionKeys.gen.hh>
25 #include <core/pose/Pose.hh>
26 #include <core/types.hh>
27 
28 //Basic Headers
29 #include <basic/database/sql_utils.hh>
30 #include <basic/database/schema_generator/PrimaryKey.hh>
31 #include <basic/database/schema_generator/ForeignKey.hh>
32 #include <basic/database/schema_generator/Column.hh>
33 #include <basic/database/schema_generator/Schema.hh>
34 #include <basic/database/schema_generator/Constraint.hh>
35 #include <basic/Tracer.hh>
36 #include <basic/options/option.hh>
37 #include <basic/options/keys/inout.OptionKeys.gen.hh>
38 
39 #include <basic/database/insert_statement_generator/InsertGenerator.hh>
40 #include <basic/database/insert_statement_generator/RowData.hh>
41 
42 // Utility Headers
43 #include <utility/vector1.hh>
44 #include <utility/sql_database/DatabaseSessionManager.hh>
45 #include <utility/tools/make_vector.hh>
46 
47 // External Headers
48 #include <cppdb/frontend.h>
49 
50 // C++ Headers
51 //#include <cmath>
52 
53 namespace protocols{
54 namespace features{
55 
56 static basic::Tracer TR("protocols.features.ResidueFeatures");
57 
58 using std::string;
59 using core::Size;
60 using core::Real;
61 using core::pose::Pose;
63 using utility::vector1;
64 using utility::sql_database::sessionOP;
65 using cppdb::statement;
66 using basic::database::insert_statement_generator::InsertGenerator;
67 using basic::database::insert_statement_generator::RowDataBaseOP;
68 using basic::database::insert_statement_generator::RowData;
69 
71 
74 {}
75 
77 {}
78 
79 string
80 ResidueFeatures::type_name() const { return "ResidueFeatures"; }
81 
82 void
83 ResidueFeatures::write_schema_to_db(utility::sql_database::sessionOP db_session) const{
84  using namespace basic::database::schema_generator;
85 
86  Column struct_id("struct_id", new DbUUID(), false);
87  Column resNum("resNum", new DbInteger(), false);
88  Column name3("name3", new DbText(), false);
89  Column res_type("res_type", new DbText(), false);
90 
91  utility::vector1<Column> residues_pkey_cols;
92  residues_pkey_cols.push_back(struct_id);
93  residues_pkey_cols.push_back(resNum);
94 
95  Schema residues("residues", PrimaryKey(residues_pkey_cols));
96  residues.add_column(struct_id);
97  residues.add_column(resNum);
98  residues.add_column(name3);
99  residues.add_column(res_type);
100  residues.add_foreign_key(ForeignKey(struct_id, "structures", "struct_id", true));
101 
102  //TODO add constraint resNum > 0
103 
104  residues.write(db_session);
105 
106 }
107 
110  utility::vector1<std::string> dependencies;
111  dependencies.push_back("StructureFeatures");
112  return dependencies;
113 }
114 
115 Size
117  Pose const & pose,
118  vector1< bool > const & relevant_residues,
119  boost::uuids::uuid const struct_id,
120  sessionOP db_session
121 ){
122  insert_residue_rows(pose, relevant_residues, struct_id, db_session);
123  return 0;
124 }
125 
126 
127 void
129  Pose const & pose,
130  vector1< bool > const & relevant_residues,
131  boost::uuids::uuid const struct_id,
132  sessionOP db_session
133 ){
134 
135 
136  InsertGenerator residues_insert("residues");
137  residues_insert.add_column("struct_id");
138  residues_insert.add_column("resNum");
139  residues_insert.add_column("name3");
140  residues_insert.add_column("res_type");
141 
142  RowDataBaseOP struct_id_data = new RowData<boost::uuids::uuid>("struct_id",struct_id);
143 
144  for(Size resNum=1; resNum <= pose.total_residue(); ++resNum){
145  if(!relevant_residues[resNum]) continue;
146  Residue res = pose.residue(resNum);
147 
148  string const name3( res.name3() );
149  string const res_type( res.name() );
150 
151  RowDataBaseOP resnum_data = new RowData<Size>("resNum",resNum);
152  RowDataBaseOP name3_data = new RowData<string>("name3",name3);
153  RowDataBaseOP res_type_data = new RowData<string>("res_type",res_type);
154 
155  residues_insert.add_row(utility::tools::make_vector(struct_id_data,resnum_data,name3_data,res_type_data));
156 
157  }
158 
159  residues_insert.write_to_database(db_session);
160 }
161 
162 void
164  boost::uuids::uuid struct_id,
165  sessionOP db_session) {
166 
167  delete_records_from_table("residues", struct_id, db_session);
168 }
169 
170 
171 
172 } // namesapce
173 } // namespace