Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DownstreamBuilder.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/DownstreamBuilder.hh
12 /// @brief
13 /// @author Alex Zanghellini (zanghell@u.washington.edu)
14 /// @author Andrew Leaver-Fay (aleaverfay@gmail.com), porting to mini
15 /// @author Florian Richter (floric@u.washington.edu)
16 
17 #ifndef INCLUDED_protocols_match_downstream_DownstreamBuilder_hh
18 #define INCLUDED_protocols_match_downstream_DownstreamBuilder_hh
19 
20 // Unit headers
22 
23 // Package headers
25 // AUTO-REMOVED #include <protocols/match/Hit.hh>
31 
32 // Project headers
33 #include <core/types.hh>
34 // AUTO-REMOVED #include <core/id/AtomID.hh>
37 #include <core/pose/Pose.fwd.hh>
38 
39 // Numeric headers
40 #include <numeric/HomogeneousTransform.fwd.hh>
41 
42 // Utility headers
43 #include <utility/pointer/ReferenceCount.hh>
44 
45 // C++ headers
46 #include <list>
47 
48 #include <core/id/AtomID.fwd.hh>
50 #include <utility/vector1.hh>
51 
52 
53 namespace protocols {
54 namespace match {
55 namespace downstream {
56 
58 public:
62  typedef core::Real Real;
63  typedef numeric::HomogeneousTransform< Real > HTReal;
64 
65 public:
67 
69 
70  virtual ~DownstreamBuilder();
71 
72  virtual
74  clone() const = 0;
75 
76  virtual
77  std::list< Hit >
78  build(
79  HTReal const & atom6_frame,
80  Size const scaffold_build_point_id,
81  Size const upstream_conf_id,
82  Size const external_geometry_id,
83  core::conformation::Residue const & upstream_residue
84  ) const = 0;
85 
86  virtual
87  void
90  );
91 
92  void
95  );
96 
97  void
100  );
101 
102  /// @brief In case downstream builders can return hits that
103  /// are incompatible with each other (e.g. different ligand
104  /// conformations ) the matcher needs to know about this to
105  /// allow for speedy match enumeration
106  virtual bool
107  hits_potentially_incompatible() const = 0;
108 
109  virtual bool compatible(
110  Hit const & my_hit,
111  DownstreamBuilder const & other,
112  Hit const & other_hit,
113  bool first_dispatch = true
114  ) const;
115 
116  virtual bool compatible(
117  Hit const & my_hit,
118  RigidLigandBuilder const & other,
119  Hit const & other_hit,
120  bool first_dispatch = true
121  ) const;
122 
123  virtual bool compatible(
124  Hit const & my_hit,
125  LigandConformerBuilder const & other,
126  Hit const & other_hit,
127  bool first_dispatch = true
128  ) const;
129 
130  virtual
131  void
133  core::id::AtomID const & id
134  ) = 0;
135 
136  virtual
138  atom1_radius() const = 0;
139 
140  virtual
142  atom2_radius() const = 0;
143 
144  virtual
146  atom3_radius() const = 0;
147 
148  virtual
149  bool
150  atom1_belongs_in_active_site() const = 0;
151 
152  virtual
153  bool
154  atom2_belongs_in_active_site() const = 0;
155 
156  virtual
157  bool
158  atom3_belongs_in_active_site() const = 0;
159 
160 
161  virtual
162  Real
163  atom1_atom2_distance() const = 0;
164 
165  virtual
166  Real
167  atom2_atom3_distance() const = 0;
168 
169  /// @brief Returns an angle in degrees between the three downstream atoms.
170  virtual
171  Real
172  atom1_atom2_atom3_angle() const = 0;
173 
174  virtual
175  void
177  Hit const & hit,
178  utility::vector1< AtomID > const & atom_indices, // these are the indices of the atoms whose coordinates are requested
179  utility::vector1< Vector > & atom_coords // ouput coordinates are placed in this array.
180  ) const = 0;
181 
182  virtual
184  get_lig_conformers(core::Size conf_id) const = 0;
185 
186 // virtual
187 // utility::vector1< utility::vector1< std::pair< core::Size, core::Real > > >
188 // get_min_sep_d2_from_upstream_atoms() const = 0;
189 
190  virtual
192  get_upstream_restype() const = 0;
193 
194  virtual
197  Hit const & hit
198  ) const = 0;
199 
200  virtual
201  Size
202  n_possible_hits_per_at3frame() const = 0;
203 
204 
205 protected:
206  bool
207  bbgrid_set() const {
208  return bb_grid_.get() != 0;
209  }
210 
211  BumpGrid const &
212  bbgrid() const {
213  return *bb_grid_;
214  }
215 
216  bool
217  occ_space_set() const {
218  return space_ != 0;
219  }
220 
221  OccupiedSpaceHash const &
222  occ_space() const {
223  return *space_;
224  }
225 
226  bool
228  return active_site_grid_ != 0;
229  }
230 
231  ActiveSiteGrid const &
233  return *active_site_grid_;
234  }
235 
236 private:
240 
241 };
242 
243 }
244 }
245 }
246 
247 #endif