Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GeometrySecMatchRPE.hh
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 // :noTabs=false:tabSize=4:indentSize=4:
4 //
5 // (c) Copyright Rosetta Commons Member Institutions.
6 // (c) This file is part of the Rosetta software suite and is made available under license.
7 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
8 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
9 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
10 
11 /// @file protocols/match/downstream/GeometrySecMatchRPE.hh
12 /// @brief
13 /// @author Florian Richter, floric@u.washington.edu, june 09
14 
15 
16 #ifndef INCLUDED_protocols_match_downstream_GeometrySecMatchRPE_hh
17 #define INCLUDED_protocols_match_downstream_GeometrySecMatchRPE_hh
18 
19 // Unit headers
21 
22 // Package headers
25 
26 // Project headers
27 #include <core/types.hh>
29 
30 // Utility headers
31 #include <utility/pointer/ReferenceCount.hh>
32 
33 // C++ headers
34 // AUTO-REMOVED #include <list>
35 // AUTO-REMOVED #include <string>
36 
38 #include <utility/vector1_bool.hh>
39 
40 
41 namespace protocols {
42 namespace match {
43 namespace downstream {
44 
45 
46 
47 /// @brief helper class for GeometrySec
48 /// abstract base class for distance, angle, and dihedral derived classes
50 {
51 
52 public:
53 
54  typedef std::pair< core::Size, core::Size > SizePair;
55 
56  typedef core::Real Real;
57 
59 
61 
62  virtual
63  bool
65  core::conformation::Residue const & candidate_res,
66  core::conformation::Residue const & target_res
67  ) const = 0;
68 
69  virtual
70  bool
72 
73  virtual
74  bool
75  require_target_atom_coordinate( Size target_atom_id ) const;
76 
77 
78  /// @brief determines if the passed in value is between lowval and highval
79  bool
81  core::Real value
82  ) const;
83 
85  at_inds() const {
86  return at_inds_; }
87 
88  void
89  add_at_ind(
90  core::Size which_cst_res,
91  core::Size atom_ind_in_res
92  );
93 
95  lowval() const {
96  return lowval_;
97  }
98 
100  highval() const {
101  return highval_;
102  }
103 
104  virtual
106  print(
107  core::chemical::ResidueTypeCOP candidate_restype,
108  core::chemical::ResidueTypeCOP target_restype
109  ) const = 0;
110 
111 
112 protected:
113 
114  void
115  clear_at_inds();
116 
117  void
119 
120  void
122 
123 private:
124 
128 
129 };
130 
131 /// @brief RPE to figure out if two atoms are within a given distance
132 /// atoms need to be set through the parent class add_at_ind function
134 {
135 
136 public:
137 
138  /// @brief the constructor for this rpe sets the lowval and highval to
139  /// the squared values of the initial values, that should make distance
140  /// evaluation faster
142 
143  virtual
144  bool
146  core::conformation::Residue const & candidate_res,
147  core::conformation::Residue const & target_res
148  ) const;
149 
150  virtual
151  bool
153 
154  virtual
157  Size target_atom_id
158  ) const;
159 
160  virtual
161  Real
162  max_separation_dist_to_target_atom( Size target_atom_id ) const;
163 
164  virtual
166  print(
167  core::chemical::ResidueTypeCOP candidate_restype,
168  core::chemical::ResidueTypeCOP target_restype
169  ) const;
170 
171 };
172 
173 /// @brief RPE to figure out if three atoms are within a given angle
174 /// atoms need to be set through the parent class add_at_ind function
176 {
177 
178 public:
179 
181 
182  virtual
183  bool
185  core::conformation::Residue const & candidate_res,
186  core::conformation::Residue const & target_res
187  ) const;
188 
189  virtual
191  print(
192  core::chemical::ResidueTypeCOP candidate_restype,
193  core::chemical::ResidueTypeCOP target_restype
194  ) const;
195 
196 };
197 
198 
199 /// @brief RPE to figure out if four atoms are within a given dihedral angle
200 /// atoms need to be set through the parent class add_at_ind function
201 /// also checks whether a dihedral is periodic, i.e. multiple minima
203 {
204 
205 public:
206 
208 
209  virtual
210  bool
212  core::conformation::Residue const & candidate_res,
213  core::conformation::Residue const & target_res
214  ) const;
215 
216  virtual
218  print(
219  core::chemical::ResidueTypeCOP candidate_restype,
220  core::chemical::ResidueTypeCOP target_restype
221  ) const;
222 
223 private:
224 
226 
229 };
230 
231 
232 /// @brief holds a list of AtomGeometrySecMatchRPEs, that get evaluated in sequence
233 /// when an instance of this class is asked to evaluate two residues.
235 {
236 
237 public:
238 
239  /// @brief convenience constructor from mcfi
240  /// the downstream_inds and upstream_inds vector must
241  /// contain atoms D1(U1), D2(U2), and D3(U3), respectively,
242  /// in that order
245  utility::vector1< core::Size > const & downstream_inds,
246  utility::vector1< core::Size > const & upstream_inds
247  );
248 
249  /// @brief empty constructor
251 
252  /// @brief performs a logical AND for all of the AtomGeometry evaluators.
253  virtual
254  bool
256  core::conformation::Residue const & candidate_res,
257  core::conformation::Residue const & target_res
258  ) const;
259 
260  void
263  );
264 
265  virtual
266  bool
268 
269  virtual
270  bool
271  require_target_atom_coordinate( Size target_atom_id ) const;
272 
273  virtual
274  bool
276 
277  virtual
280  Size target_atom_id
281  ) const;
282 
283  virtual
284  Real
285  max_separation_dist_to_target_atom( Size target_atom_id ) const;
286 
288  atom_geom_rpes() const {
289  return atom_geom_rpes_;
290  }
291 
292 private:
293 
295 
296 };
297 
298 }
299 }
300 }
301 
302 #endif