Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SidechainMoverBase.hh
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-white0space: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/simple_moves/sidechain_moves/SidechainMoverBase.hh
11 /// @brief definition of SidechainMoverBase class and functions
12 /// @author Oliver Lange (oliver.lange@tum.de) adapted from Colin A. Smith's code
13 
14 
15 #ifndef INCLUDED_protocols_simple_moves_sidechain_moves_SidechainMoverBase_hh
16 #define INCLUDED_protocols_simple_moves_sidechain_moves_SidechainMoverBase_hh
17 
18 // Unit Headers
20 
21 // Protocols Headers
24 
25 // Core Headers
29 #include <core/pose/Pose.fwd.hh>
30 
33 
36 
37 // Numeric Headers
38 #include <numeric/random/random.hh>
39 
40 // Utility headers
41 #include <utility/vector1.hh>
42 
43 namespace protocols {
44 namespace simple_moves {
45 namespace sidechain_moves {
46 
47 /// @brief class for non-discrete side chain sampling using Dunbrack rotamer probabilities/distributions
49 
50 public:
51 //
53 
54  /// @brief default constructor
56 
57  /// @brief constructor with user provided rotamer library
60  );
61 
63  SidechainMoverBase const & mover
64  );
65 
67 
68  virtual
69  void
71  utility::tag::TagPtr const tag,
73  protocols::filters::Filters_map const & filters,
74  protocols::moves::Movers_map const & movers,
75  core::pose::Pose const & pose
76  );
77 
78  /// @brief initialize the packer task if necessary
79  void
80  init_task(
81  core::pose::Pose const & pose
82  );
83 
84  virtual
85  void
87  core::pose::Pose &pose,
89  core::Size cycle //non-zero if trajectory is restarted
90  );
91 
94 
95  virtual void
97  core::conformation::Residue const& residue,
98  ChiVector const& old_chi,
99  ChiVector& new_chi
100  ) = 0;
101 
102  virtual core::Size suggest_residue_number( core::pose::Pose const& ) const;
103 
104  /// @brief apply a sidechain move to a Pose object
105  virtual void apply( core::pose::Pose& pose );
106 
107  virtual std::string get_name() const;
108 
109  virtual core::Real
111  core::conformation::Residue const & new_residue,
112  core::Size const resnum,
113  core::chemical::ResidueType const & old_res_type,
114  ChiVector const & old_chi
115  ) const = 0;
116 
117  /// @brief idealize sidechains that might be altered
119 
120  /// @brief get the rotamer library
122 
123  /// @brief get the task factory
125 
126  /// @brief set the task factory
127  void
129 
130  /// @brief get the packer task
132 
133  /// @brief set the task
135 
136  /// @brief get whether detailed balance is preserved (i.e. proposal density ratio calculated)
137  bool
139 
140  /// @brief set whether detailed balance is preserved (i.e. proposal density ratio calculated)
141  void
142  set_preserve_detailed_balance( bool setting );
143 
144  ///@brief perform direct chi manipulations rather than using replace_residue to effect rotamer changes; useful if things are kinematically dependent on a sidechain.
146 
147  ///@brief perform direct chi manipulations rather than using replace_residue to effect rotamer changes; useful if things are kinematically dependent on a sidechain.
148  void
150 
151  ///@brief return true if your last move has mutated residue --- make sure the residue is replaced entirely
152  virtual bool have_mutated_residue() const { return false; }
153 
154  /// @brief get the TorsionIDs perturbed by the mover during moves, along with their ranges
155  virtual
158  core::pose::Pose & pose
159  );
160 
161  /// @brief get the DOF_IDs perturbed by the mover during moves, along with their ranges
162  virtual
165  core::pose::Pose & pose
166  );
167 
168  /// @brief get the residues that can be changed by this mover
170  packed_residues() const;
171 
172  /// @brief get a vector indicating whether each residue can be packed
173  utility::vector1<bool> const &
174  residue_packed() const;
175 
176  /// @brief get the ratio of proposal densities for the last move
177  virtual
178  core::Real
180 
181 protected:
182 
183 
184  // void set_last_proposal_density_ratio( core::Real setting ) {
185  // last_proposal_density_ratio_ = setting;
186  // }
187 
188 private:
189 
190  void set_defaults();
191  void init_from_options();
192 
198 
201 
204 
206 
207 }; //SidechainMoverBase
208 
209 
210 } // sidechain_moves
211 } // simple_moves
212 } // protocols
213 
214 #endif