Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
KinematicWrapper.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 /protocols/loops/loop_closure/kinematic_closure/KinematicWrapper.hh
11 /// @brief wrapper for KinematicMover - useful when only apply() is available
12 /// @author Steven Lewis
13 
14 #ifndef INCLUDED_protocols_loops_loop_closure_kinematic_closure_KinematicWrapper_hh
15 #define INCLUDED_protocols_loops_loop_closure_kinematic_closure_KinematicWrapper_hh
16 
17 // Unit Headers
20 
21 // Project Headers
22 #include <core/pose/Pose.fwd.hh>
23 
25 
26 #include <protocols/moves/Mover.hh>
27 
29 
30 // Utility Headers
31 #include <core/types.hh>
32 // AUTO-REMOVED #include <utility/vector1.hh>
33 
34 #include <utility/vector1.hh>
35 
36 
37 namespace protocols {
38 namespace loops {
39 namespace loop_closure {
40 namespace kinematic_closure {
41 
42 ///@details This class extends KinematicMover by composition (has-a KinematicMover). The idea is to make KinematicMover useful when ONLY the apply() function is available (as in MoverContainers, etc.). It will reapply KinematicMover until the KinematicMover reports a success. This class uses searches through loop begin/middle/end points while searching for solutions. You can pass a MoveMap; it will refuse to put pivots where the MoveMap is not mobile.
44 
45 public:
46  ///@brief ctor with Loop
48  KinematicMoverOP kinmover_in,
50  core::Size cycles = 0 //0 is sentinel value to check options system
51  );
52 
53  ///@brief ctor with explicit loop begin/end
55  KinematicMoverOP kinmover_in,
56  core::Size loop_begin,
57  core::Size loop_end,
58  core::Size cycles = 0 //0 is sentinel value to check options system
59  );
60 
61  virtual ~KinematicWrapper();
62 
63  ///@brief re-applies KinematicMover with different pivots until success
64  virtual void apply( core::pose::Pose & pose );
65  virtual std::string get_name() const;
66 
67  ///@brief this function derives the allowed_positions_ vector from mm and the loop begin/end
69 
70 private:
71 
72  ///@brief two ctors have same functions, just different initialization lists; de-duplicated here
73  void ctor();
74 
75  ///@brief initializes allowed positions - for constructors and resetting
76  void init_allowed_pos();
77 
78  ///@brief OP for KinematicMover
80 
81  ///@brief the loop this object-instance remodels
83  ///@brief the loop this object-instance remodels
85 
86  ///@brief a limit on the number of cycles the mover will run
88 
89  ///@brief vector of positions allowed as pivots
91 };//end KinematicWrapper
92 
93 } // namespace kinematic_closure
94 } // namespace loop_closure
95 } // namespace loops
96 } // namespace protocols
97 
98 #endif // INCLUDED_protocols_loops_loop_closure_KinematicWrapper_HH