Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ModifyStoredLigandRBConfsMovers.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 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10 /// @file .hh file for movers that mess around with additional ligand rigid body conformations
11 /// stored in the enzdes cacheable observer
12 /// @brief
13 /// @author Florian Richter, floric@u.washington.edu, oct 09
14 
15 #ifndef INCLUDED_protocols_enzdes_ModifyStoredLigandRBConfsMovers_hh
16 #define INCLUDED_protocols_enzdes_ModifyStoredLigandRBConfsMovers_hh
17 
18 //unit headers
20 #include <protocols/moves/Mover.hh>
21 //#include <protocols/toolbox/match_enzdes_util/EnzdesCacheableObserver.fwd.hh>
22 //#include <core/pose/datacache/CacheableObserver.hh>
23 
24 //package headers
26 #include <core/pose/Pose.fwd.hh>
28 #include <core/types.hh>
29 
30 #include <utility/vector1.hh>
31 
32 
33 
34 namespace protocols {
35 namespace enzdes {
36 
37 
38 /// @pure virtual base class that has some common functionality
40 
41 public:
42  typedef core::Size Size;
43  typedef core::Real Real;
46 
47 public:
48 
51 
52  virtual
53  void
54  apply( core::pose::Pose & pose ) = 0;
55 
56  virtual std::string get_name() const;
57 
58  /// @brief helper function to exchange coordinates in a pose
59  /// this function doesn't actually exchange the residues,
60  /// but sets all the coords of pose.residue( rescoords.seqpos() )
61  /// to what is in rescoords and vice versa
62  void
64  core::pose::Pose & pose,
65  core::conformation::Residue & rescoords
66  ) const;
67 
68  /// @brief calculates the closest orient atom (i.e. atoms used in rotamer placement
69  /// msd between every conf and the confs coming before it in the pose or in the vector
72  core::pose::Pose const & pose,
74  ) const;
75 
76 protected:
77 
78  /// @brief this function is the function that all derived classes
79  /// should call to get access to pose stored additional rb confs.
80  /// right now it only returns the confs in the proper format,
81  /// but in the future some logic might be added as to for which seqpos
82  /// to return the stored confs
84  get_rigid_body_confs( core::pose::Pose const & pose ) const;
85 
86  /// @brief same as for above function. all derived classes
87  /// should use this function to communicate new/changed rigid
88  /// body confs back to the pose/enzdes cacheable observer
89  void
91 
92  /// @brief see comments for set_rigid_body_confs
93  void
95  core::Size seqpos,
97  core::pose::Pose & pose
98  ) const;
99 
100 };
101 
102 /// @brief generates random rbconfs until a total of num_total_rbconfs_
103 /// are present in the cacheable observer. The diversifier is used to
104 /// ensure that all newly generated confs are different.
105 /// note: no scorefunction used
107 
108 public:
110 
111 public:
112 
114  Size num_total_rbconfs,
115  bool include_metals );
116 
118 
119  void
120  apply( core::pose::Pose & pose );
121  virtual std::string get_name() const;
122 
123 private:
124 
127 
128 };
129 
130 /// @brief for every ligand that has additional stored rb conformations
131 /// in the enzdes cacheable observer, the one currently in the pose gets
132 /// exchanged with a random stored one
134 
135 public:
137 
138 public:
139 
142 
143  void
144  apply( core::pose::Pose & pose );
145  virtual std::string get_name() const;
146 
147 };
148 
149 /// @brief rotamer trials/minimizes each of the ligand conformations stored in the enzdes
150 /// cacheable observer and overwrites them with the minimized position.
151 /// if the new, minimized position is too close to one that already exists,
152 /// a random small perturbation is applied to ensure diversity
153 /// note: only jump minimization
155 
156 public:
158 
159 public:
160 
163 
164  void
165  apply( core::pose::Pose & pose );
166  virtual std::string get_name() const;
167 
168  void
170  core::pose::Pose const & pose,
172  ) const;
173 
174 private:
175 
178 
179 };
180 
181 
182 /// @brief uses a docking mover to diversiy the stored confs
183 /// until they're all min_rms_ away from each other
184 /// note: no scorefunction used here
186 
187 public:
189 
190 public:
191 
193  Real min_rms );
194 
196 
197  void
198  apply( core::pose::Pose & pose );
199  virtual std::string get_name() const;
200 
201  void
203  core::pose::Pose const & pose,
205  ) const;
206 
207 private:
210 
211 };
212 
213 
214 
215 } // enzdes
216 } //protocols
217 
218 
219 #endif