Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
WobbleMover.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 
12 /// @brief set of fragments for a certain alignment frame
13 /// @author Oliver Lange (olange@u.washington.edu)
14 /// @date Wed Oct 20 12:08:31 2007
15 ///
16 
17 
18 #ifndef INCLUDED_protocols_simple_moves_WobbleMover_HH
19 #define INCLUDED_protocols_simple_moves_WobbleMover_HH
20 
21 // Unit Headers There needs to be a forward header for this class.
22 /// #include <protocols/abinitio/WobbleMover.fwd.hh>
23 
24 // Package Headers
26 
27 // Project Headers
28 #include <core/types.hh>
30 #include <core/pose/Pose.fwd.hh>
33 
34 // Utility headers
35 #include <utility/vector1.fwd.hh>
36 
37 #include <utility/vector1.hh>
38 
39 
40 namespace protocols {
41 namespace simple_moves {
42 
46 
47 
48 ///@brief A protocols::moves::Mover class for a classic-wobble analog: a smooth move followed by ccd closure
49 ///@detail a smooth fragment is chosen according to the FragmentCost Functor;
50 /// a cutpoint is inserted just in front of or just after the fragment
51 /// a loop is defined around the fragment and cutpoint to be closed with ccd:
52 /// a cut_Cterm insertion: ----lfff bbb---- f: fragment_res b: buffer_res -: immovable residues
53 /// a !cut_Cterm insertion: ---bbb fffl---
54 /// the number of b resiudes is controlled by buffer_length_ (default 3);
55 /// the move is used by apply() (inherited from FragmentMover).
56 /// the insertion and loop closure is implemented in the virtual method apply_fragment().
58 public:
60 
61 public:
66  );
67 
71 
72  ~WobbleMover();
73  virtual std::string get_name() const;
74 
75  void set_defaults() {
77  forward_threshold_ = 0.3;
78  backward_threshold_ = 0.3;
79  };
80 
81  void set_buffer_length( core::Size setting ) {
82  buffer_length_ = setting;
83  };
84 
85 protected:
86  bool
88  core::fragment::Frame const& frame,
89  core::Size frag_num,
91  core::pose::Pose &pose
92  ) const;
93 
94  ///@brief close loop and return if successful ( deviations smaller than thresholds )
95  bool ccd_closure(
96  core::pose::Pose & pose,
97  protocols::loops::Loops const & loops,
99  ) const;
100 
101 
102 private:
103  ///@brief how many variable residues on opposite side of fragment
105 
106  ///@brief cutoffs that ccd has to undercut to be accepted
109 };
110 
111 } //abinitio
112 } //protocols
113 
114 #endif