Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
LigandConformerBuilder.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/LigandConformerBuilder.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_LigandConformerBuilder_hh
18 #define INCLUDED_protocols_match_downstream_LigandConformerBuilder_hh
19 
20 // Unit headers
22 
23 // Package headers
27 // AUTO-REMOVED #include <protocols/match/Hit.hh>
28 
29 // Project headers
30 #include <core/types.hh>
34 
35 // Numeric headers
36 // AUTO-REMOVED #include <numeric/HomogeneousTransform.hh>
37 
38 // Utility headers
39 #include <utility/pointer/ReferenceCount.hh>
40 
41 // C++ headers
42 #include <list>
43 
44 #include <utility/fixedsizearray1.hh>
45 #include <utility/vector1.hh>
46 
47 #ifdef WIN32
49 #endif
50 
51 
52 
53 namespace protocols {
54 namespace match {
55 namespace downstream {
56 
58 public:
60 
61 public:
63 
65 
66  // for collision checking
67  //LigandConformerBuilder( LigandConformerBuilder const & , core::chemical::ResidueTypeCOP upstream_restype );
68 
69  virtual ~LigandConformerBuilder();
70 
71  virtual
73  clone() const;
74 
75  virtual
76  std::list< Hit >
77  build(
78  HTReal const & atom3_frame,
79  Size const scaffold_build_point_id,
80  Size const upstream_conf_id,
81  Size const external_geometry_id,
82  core::conformation::Residue const & upstream_residue
83  ) const;
84 
85 
86  /// @brief goes through the list of conformers and does rms calculations (overlaid
87  /// on the relevant_atom_indices) between them. any conformers that have an rms
88  /// < rmsd_unique_cutoff_ will be grouped together in a conformer_group
89  void
91  utility::vector1< core::Size > const & relevant_atom_indices
92  );
93 
94  virtual
95  void
98  );
99 
100  virtual bool
102 
103  virtual bool compatible(
104  Hit const & my_hit,
105  DownstreamBuilder const & other,
106  Hit const & other_hit,
107  bool first_dispatch = true
108  ) const;
109 
110  virtual bool compatible(
111  Hit const & my_hit,
112  LigandConformerBuilder const & other,
113  Hit const & other_hit,
114  bool first_dispatch = true
115  ) const;
116 
117  virtual
118  void
120  core::id::AtomID const & id
121  );
122 
123  virtual
125  atom1_radius() const;
126 
127  virtual
129  atom2_radius() const;
130 
131  virtual
133  atom3_radius() const;
134 
135  virtual
136  bool
138 
139  virtual
140  bool
142 
143  virtual
144  bool
146 
147 
148  virtual
149  Real
150  atom1_atom2_distance() const;
151 
152  virtual
153  Real
154  atom2_atom3_distance() const;
155 
156  /// @brief Returns an angle in degrees between the three downstream atoms.
157  virtual
158  Real
159  atom1_atom2_atom3_angle() const;
160 
161  virtual
162  void
164  Hit const & hit,
165  utility::vector1< AtomID > const & atom_indices,
166  utility::vector1< Vector > & atom_coords
167  ) const;
168 
169  virtual
172  Hit const & hit
173  ) const;
174 
175  virtual
176  Size
178 
179 public:
180  // Initialization
181 
182  /// @brief Specify the residue, with coordinates, that's being used as the downstream
183  /// partner. This class is meant to be used in conjuction with the ClassicMatchAglrotihm,
184  /// and therefore the initialization routines are specific for that algorithm. In this
185  /// initialization function, one must list atoms "D1, D2 and D3" in the convention of
186  /// describing the rigid-body orientation between three atoms of the upstream partner
187  /// (atoms U3, U2 & U1) and three atoms of the downstream partner (atoms D1, D2 & D3) in terms
188  /// of 2 angles, 1 distance, and 3 dihedrals. The user must also list the 3 atoms used to
189  /// define the orientation frame of the downstream ligand. It is essential to the
190  /// matching algorithm that the same three orientation atoms are used for all LigandConformerBuilders.
191  void
193  Size atom1,
194  Size atom2,
195  Size atom3,
196  Size orientation_atom1,
197  Size orientation_atom2,
198  Size orientation_atom3,
199  core::conformation::Residue const & residue
200  );
201 
202  void
204  core::chemical::ResidueTypeCOP upstream_res,
206  );
207 
208  void ignore_h_collisions( bool setting );
209 
210  virtual
212  get_lig_conformers(core::Size conf_id) const;
213 
214 // virtual
215 // utility::vector1< utility::vector1< std::pair< core::Size, core::Real > > >
216 // get_min_sep_d2_from_upstream_atoms() const;
217 
218  virtual
220  get_upstream_restype() const;
221 
222  /*Real6
223  global_orientation_from_frame3(
224  HTReal const & frame3
225  ) const;
226 
227  HTReal
228  frame_from_global_orientation(
229  Real6 orientation
230  ) const;*/
231 
232 private:
233 
234  std::list< Hit >
236  Size const confgrp_id,
237  HTReal const & atom3_frame,
238  Size const scaffold_build_point_id,
239  Size const upstream_conf_id,
240  Size const external_geometry_id,
241  core::conformation::Residue const & upstream_residue
242  ) const;
243 
244  void
246 
247  void
249 
250 
251 private:
252 
255 
258 
259  /// The indices of the three atoms defining the orientation of the
260  /// ligand in the global coordinate frame
261  /// These indices are in the restype indexing of atoms.
262  utility::fixedsizearray1< Size, 3 > orientation_atoms_;
263  utility::fixedsizearray1< Size, 3 > atoms_123_;
264  utility::fixedsizearray1< ProbeRadius, 3 > radii_123_;
265  utility::fixedsizearray1< bool, 3 > ats123_reqd_in_active_site_;
266 
269 
271 
272  /// Grouped into sets compatible ligand conformers
277 
278  /// Detect collision between the upstream residue (sidechain?!) conformation and the atoms of the
279  /// downstream residue
281 
282 };
283 
284 }
285 }
286 }
287 
288 #endif