19 #include <basic/Tracer.hh>
30 #include <basic/database/sql_utils.hh>
31 #include <basic/database/schema_generator/PrimaryKey.hh>
32 #include <basic/database/schema_generator/ForeignKey.hh>
33 #include <basic/database/schema_generator/Column.hh>
34 #include <basic/database/schema_generator/Schema.hh>
35 #include <basic/database/schema_generator/Constraint.hh>
38 #include <utility/sql_database/DatabaseSessionManager.hh>
39 #include <utility/vector1.hh>
61 return "SecondaryStructureSegmentFeatures";
67 utility::sql_database::sessionOP db_session)
const
69 using namespace basic::database::schema_generator;
72 Column struct_id(
"struct_id",
new DbUUID(),
false);
73 Column segment_id(
"segment_id",
new DbInteger(),
false);
74 Column residue_begin(
"residue_begin",
new DbInteger(),
false);
75 Column residue_end(
"residue_end",
new DbInteger(),
false);
76 Column dssp(
"dssp",
new DbText(1),
false);
79 pkey_cols.push_back(struct_id);
80 pkey_cols.push_back(segment_id);
82 Columns foreign_key_columns1;
83 foreign_key_columns1.push_back(struct_id);
85 reference_columns1.push_back(
"struct_id");
86 ForeignKey foreign_key1(foreign_key_columns1,
"structures", reference_columns1,
true);
88 Columns foreign_key_columns2;
89 foreign_key_columns2.push_back(struct_id);
90 foreign_key_columns2.push_back(residue_begin);
92 reference_columns2.push_back(
"struct_id");
93 reference_columns2.push_back(
"resNum");
94 ForeignKey foreign_key2(foreign_key_columns2,
"residues", reference_columns2,
true);
96 Columns foreign_key_columns3;
97 foreign_key_columns3.push_back(struct_id);
98 foreign_key_columns3.push_back(residue_end);
100 reference_columns3.push_back(
"struct_id");
101 reference_columns3.push_back(
"resNum");
102 ForeignKey foreign_key3(foreign_key_columns3,
"residues", reference_columns3,
true);
110 Schema secondary_structure_segments(
"secondary_structure_segments", PrimaryKey(pkey_cols));
111 secondary_structure_segments.add_foreign_key(foreign_key1);
112 secondary_structure_segments.add_foreign_key(foreign_key2);
113 secondary_structure_segments.add_foreign_key(foreign_key3);
114 secondary_structure_segments.add_column(dssp);
117 secondary_structure_segments.write(db_session);
126 dependencies.push_back(
"ResidueFeatures");
127 dependencies.push_back(
"ResidueSecondaryStructureFeatures");
164 boost::uuids::uuid struct_id,
165 utility::sql_database::sessionOP db_session)
167 using namespace basic::database;
170 "SELECT resNum, dssp\n"
171 "FROM residue_secondary_structure\n"
172 "WHERE struct_id=?\n"
175 cppdb::statement select_stmt(safely_prepare_statement(select_secondary_struct_string,db_session));
176 select_stmt.bind(1,struct_id);
177 cppdb::result res=safely_read_from_database(select_stmt);
180 "INSERT INTO secondary_structure_segments (struct_id, segment_id, residue_begin, residue_end,dssp)\n"
181 "VALUES (?,?,?,?,?)";
191 res >> resNum >> residue_secondary;
196 residue_secondary=
"L";
199 else if(
is_helix(residue_secondary))
201 residue_secondary=
"H";
204 if(residue_secondary != segment_secondary)
208 segment_end=resNum-1;
211 cppdb::statement stmt(basic::database::safely_prepare_statement(sec_structure_statement_string,db_session));
212 stmt.bind(1,struct_id);
213 stmt.bind(2,segment_counter);
214 stmt.bind(3,segment_begin);
215 stmt.bind(4,segment_end);
216 stmt.bind(5,segment_secondary);
217 basic::database::safely_write_to_database(stmt);
222 segment_secondary = residue_secondary;
223 segment_begin=resNum;
228 cppdb::statement stmt(basic::database::safely_prepare_statement(sec_structure_statement_string,db_session));
229 stmt.bind(1,struct_id);
230 stmt.bind(2,segment_counter);
231 stmt.bind(3,segment_begin);
233 stmt.bind(5,segment_secondary);
234 basic::database::safely_write_to_database(stmt);