Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RigidLigandBuilder.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/RigidLigandBuilder.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_RigidLigandBuilder_hh
18 #define INCLUDED_protocols_match_downstream_RigidLigandBuilder_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 #ifdef __clang__
36 #endif
37 
38 // Numeric headers
39 // AUTO-REMOVED #include <numeric/HomogeneousTransform.hh>
40 
41 // Utility headers
42 #include <utility/pointer/ReferenceCount.hh>
43 
44 // C++ headers
45 #include <list>
46 
47 #include <utility/fixedsizearray1.hh>
48 #include <utility/vector1.hh>
49 
50 
51 namespace protocols {
52 namespace match {
53 namespace downstream {
54 
56 public:
58 
59 public:
61 
63 
64  //initiates collision check in the Secondary matcher
65 // RigidLigandBuilder( RigidLigandBuilder const & , core::chemical::ResidueTypeCOP upstream_restype );
66 
67  virtual ~RigidLigandBuilder();
68 
69  virtual
71  clone() const;
72 
73  virtual
74  std::list< Hit >
75  build(
76  HTReal const & atom3_frame,
77  Size const scaffold_build_point_id,
78  Size const upstream_conf_id,
79  Size const external_geometry_id,
80  core::conformation::Residue const & upstream_residue
81  ) const;
82 
83  virtual
84  void
87  );
88 
89  virtual bool
91  return false; }
92 
93  virtual bool compatible(
94  Hit const & my_hit,
95  DownstreamBuilder const & other,
96  Hit const & other_hit,
97  bool first_dispatch = true
98  ) const;
99 
100  virtual bool compatible(
101  Hit const & my_hit,
102  RigidLigandBuilder const & other,
103  Hit const & other_hit,
104  bool first_dispatch = true
105  ) const;
106 
107  virtual
108  void
110  core::id::AtomID const & id
111  );
112 
113  virtual
115  atom1_radius() const;
116 
117  virtual
119  atom2_radius() const;
120 
121  virtual
123  atom3_radius() const;
124 
125  virtual
126  bool
128 
129  virtual
130  bool
132 
133  virtual
134  bool
136 
137 
138  virtual
139  Real
140  atom1_atom2_distance() const;
141 
142  virtual
143  Real
144  atom2_atom3_distance() const;
145 
146  /// @brief Returns an angle in degrees between the three downstream atoms.
147  virtual
148  Real
149  atom1_atom2_atom3_angle() const;
150 
151  virtual
152  void
154  Hit const & hit,
155  utility::vector1< AtomID > const & atom_indices,
156  utility::vector1< Vector > & atom_coords
157  ) const;
158 
159  virtual
162  Hit const & hit
163  ) const;
164 
165  virtual
166  Size
168 
169  virtual
171  get_lig_conformers(core::Size conf_id) const;
172 
173 // virtual
174 // utility::vector1< utility::vector1< std::pair< core::Size, core::Real > > >
175 // get_min_sep_d2_from_upstream_atoms() const;
176 
177  virtual
179  get_upstream_restype() const;
180 
181 public:
182  // Initialization
183 
184  /// @brief Specify the residue, with coordinates, that's being used as the downstream
185  /// partner. This class is meant to be used in conjuction with the ClassicMatchAglrotihm,
186  /// and therefore the initialization routines are specific for that algorithm. In this
187  /// initialization function, one must list atoms "D1, D2 and D3" in the convention of
188  /// describing the rigid-body orientation between three atoms of the upstream partner
189  /// (atoms U3, U2 & U1) and three atoms of the downstream partner (atoms D1, D2 & D3) in terms
190  /// of 2 angles, 1 distance, and 3 dihedrals. The user must also list the 3 atoms used to
191  /// define the orientation frame of the downstream ligand. It is essential to the
192  /// matching algorithm that the same three orientation atoms are used for all RigidLigandBuilders.
193  void
195  Size atom1,
196  Size atom2,
197  Size atom3,
198  Size orientation_atom1,
199  Size orientation_atom2,
200  Size orientation_atom3,
201  core::conformation::Residue const & residue
202  );
203 
204  void
206  core::chemical::ResidueTypeCOP upstream_res,
208  );
209 
210  void ignore_h_collisions( bool setting );
211 
212  /*Real6
213  global_orientation_from_frame3(
214  HTReal const & frame3
215  ) const;
216 
217  HTReal
218  frame_from_global_orientation(
219  Real6 orientation
220  ) const;*/
221 
222 private:
223 
224  void
226 
227 private:
228 
231 
233 
234  /// The indices of the three atoms defining the orientation of the
235  /// ligand in the global coordinate frame
236  /// These indices are in the restype indexing of atoms.
237  utility::fixedsizearray1< Size, 3 > orientation_atoms_;
238  utility::fixedsizearray1< Size, 3 > atoms_123_;
239  utility::fixedsizearray1< ProbeRadius, 3 > radii_123_;
240  utility::fixedsizearray1< bool, 3 > ats123_reqd_in_active_site_;
241 
244 
246 
247  //LigandConformerOP lig_conformer_;
249 
250  /// Detect collision between the upstream residue (sidechain?!) conformation and the atoms of the
251  /// downstream residue
253 
254 };
255 
256 }
257 }
258 }
259 
260 #endif