Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SymDockingInitialPerturbation.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  // This file is part of the Rosetta software suite and is made available under license.
5  // The Rosetta software is developed by the contributing members of the Rosetta Commons consortium.
6  // (C) 199x-2009 Rosetta Commons participating institutions and developers.
7  // For more information, see http://www.rosettacommons.org/.
8 
9  /// @brief initialization protocols for symmetrical docking
10  /// @author Ingemar Andre
11 
12 
13 #ifndef INCLUDED_protocols_simple_moves_symmetry_SymDockingInitialPerturbation_hh
14 #define INCLUDED_protocols_simple_moves_symmetry_SymDockingInitialPerturbation_hh
15 
16 // Package headers
17 // AUTO-REMOVED #include <core/pose/Pose.hh>
18 
19 // AUTO-REMOVED #include <core/scoring/symmetry/SymmetricScoreFunction.hh>
20 //#include <core/scoring/symmetry/SymmetricScoreFunction.fwd.hh>
21 // AUTO-REMOVED #include <core/scoring/ScoreFunctionFactory.hh>
22 #include <protocols/moves/Mover.hh>
23 // AUTO-REMOVED #include <protocols/rigid/RigidBodyMover.hh>
24 
25 // AUTO-REMOVED #include <core/conformation/symmetry/SymDof.hh>
30 
31 #include <utility/pointer/owning_ptr.hh>
32 #include <utility/pointer/ReferenceCount.hh>
33 
34 //utility
35 #include <utility/vector1.hh>
36 
40 
41 
42 namespace protocols {
43 namespace simple_moves{
44 namespace symmetry {
45 
46  class SymDockingInitialPerturbation; // fwd declaration
49 
51  {
52  public:
53 
56 
57  public:
58 
59  // default constructor
61 
62  // constructor with arguments
64  bool const slide_in
65  );
66 
67  // destructor
69 
70  // protocol functions
71  virtual void apply( core::pose::Pose & pose );
72  virtual std::string get_name() const;
73 
74  private:
75  /// do slide into context?
76  bool slide_;
77  };
78 
79  /// @brief Contrary to the name, slides things apart first, then together.
81  {
82  public:
83 
84  // default constructor
86 
87  // constructor with arguments
89  std::map< Size, core::conformation::symmetry::SymDof > dofs
90  );
91  // destructor
93 
94  // protocol functions
95  virtual void apply( core::pose::Pose & pose );
96  virtual std::string get_name() const;
97 
98  private:
99  // dof to allow
100  std::map< Size, core::conformation::symmetry::SymDof > dofs_;
101  // scorefxn to use
103  };
104 
105  class FaSymDockingSlideTogether; // fwd declaration
108 
109  /// @brief Slides docking partners together by monitoring fa_rep.
110  /// @details
111  /// If partners are already touching, no change is made.
112  /// Separation will be 1A or less after calling this function.
114  {
115  public:
117  std::map< Size, core::conformation::symmetry::SymDof > dofs
118  );
119 
121 
122  virtual void apply( core::pose::Pose & pose );
123  virtual std::string get_name() const;
124 
125  private:
126  // dof to allow
127  std::map< Size, core::conformation::symmetry::SymDof > dofs_;
128  // scorefxn to use
130  core::Real tolerance_; ///< how accurate do you want to be?
131 
132 };
133 
134  class SymmetrySlider; // fwd declaration
137 
139  {
140  public:
143  core::pose::Pose & pose,
145  std::string SlideCriteriaVal = "AUTOMATIC"
146  );
147  virtual ~SymmetrySlider();
148 
149  void setup( core::pose::Pose & pose);
150 
151  virtual void select_jump() = 0;
152  // virtual void select_dir( core::pose::Pose & pose ) = 0;
153  // get functions
156  std::map< core::Size, bool > get_allow_slide_jump_map() const;
157  // set functions
158  void set_current_jump( core::Size jump_nbr );
159  void set_slide_criteria(std::string SlideCriteria );
160  void set_slide_threshold( std::string threshold );
161 
163  void slide_away( core::pose::Pose & pose );
165  void disallow_current_slide();
166  bool allowed_current_slide();
167 
168  bool continue_slide( core::pose::Pose & pose );
169  bool very_far_away( core::pose::Pose & pose );
170  bool finished();
171  // this is where it happens...
172  void slide(core::pose::Pose & pose);
173  void apply(core::pose::Pose & pose);
174 
175  //fpd a helper functions to get the right direction for slide moves
176  core::Real rg( core::pose::Pose const & pose );
177 
178  //fpd will the mover compress or expand the system?
180 
181  private:
182  std::map< Size, core::conformation::symmetry::SymDof > dofs_;
183  std::map< core::Size, bool > AllowSlideJumpMap_;
184  std::map< core::Size, core::kinematics::Jump > InitialJumps_;
185  std::map< core::Size, bool > InvertJump_;
192  };
193 
194  // Derive your own slide class by specifying what jumps are selected in the
195  // function select_jump()
196 
197  class SequentialSymmetrySlider; // fwd declaration
200 
202  {
203  public:
205  SequentialSymmetrySlider( SymmetrySlider const & Slider );
207  core::pose::Pose & pose,
209  std::string SlideCriteriaVal = "AUTOMATIC"
210  );
211  void init();
212  void select_jump();
213  std::vector<core::Size> slide_order_;
214 // void select_dir( core::pose::Pose & pose );
215 
216  };
217 
218  // Derive your own slide class by specifying what jumps are selected in the
219  // function select_jump()
220 
221  class OrderedSequentialSymmetrySlider; // fwd declaration
224 
226  {
227  public:
228  OrderedSequentialSymmetrySlider( core::pose::Pose & pose, std::vector<core::Size> slide_order );
229  OrderedSequentialSymmetrySlider( SymmetrySlider const & Slider, std::vector<core::Size> slide_order );
231  core::pose::Pose & pose,
233  std::string SlideCriteriaVal = "AUTOMATIC",
234  std::vector<core::Size> slide_order = std::vector<core::Size>()
235  );
236 
237  void select_jump();
238 // void select_dir( core::pose::Pose & pose );
239  private:
240  std::vector<core::Size> slide_order_;
241 
242  };
243 
244 
245  // Derive your own slide class by specifying what jumps are selected in the
246  // function select_jump()
247  class RandomSymmetrySlider; // fwd declaration
250 
252  {
253  public:
255  RandomSymmetrySlider( SymmetrySlider const & Slider );
257  core::pose::Pose & pose,
259  std::string SlideCriteriaVal = "AUTOMATIC"
260  );
261 
262  void select_jump();
263 // void select_dir( core::pose::Pose & pose );
264 
265  };
266 
267 
268 }
269 } // docking
270 } // protocols
271 
272 #endif