Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DesignRepackMover.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/simple_moves/DesignRepackMover.hh
11 /// @author Sarel Fleishman (sarelf@u.washington.edu), Eva-Maria Strauch (evas01@u.washington.edu)
12 
13 #ifndef INCLUDED_protocols_simple_moves_DesignRepackMover_hh
14 #define INCLUDED_protocols_simple_moves_DesignRepackMover_hh
15 
16 // Project Headers
18 #include <core/pose/Pose.fwd.hh>
19 #include <protocols/moves/Mover.hh>
20 
23 #include <core/types.hh>
24 #include <utility/tag/Tag.fwd.hh>
27 #include <utility/exit.hh>
28 
29 // C++ headers
30 #include <string>
31 
32 // Unit headers
34 
35 #include <utility/vector1.hh>
36 
37 
38 
39 
40 namespace protocols {
41 namespace simple_moves {
42 
43 /// @brief a pure virtual base class for movers which redesign and repack the interface
45 {
46 public:
49  void setup_packer_and_movemap( core::pose::Pose const & pose );
50  protocols::moves::MoverOP clone() const = 0; // this is a pure virtual class that cannot be instantiated
53 // managing minimization options
55 /// @brief in most cases, there would only be one rb dof making it useful to have a non-vector accessor to min_rb_. However, if the pose has multiple jumps, setting min_rb_ in this way might cause trouble in other parts of the code.
56  void min_rb( bool const min_rb ) { min_rb_.clear(); min_rb_.push_back( min_rb ); min_rb_set_ = true; }
57  utility::vector1< bool > const & min_rb() const { runtime_assert( min_rb_set() ); return min_rb_; }
58  bool min_rb_set() const { return min_rb_set_; }
60  utility::vector1< bool > const & min_sc() const { runtime_assert( min_sc_set() ); return min_sc_; }
61  bool min_sc_set() const { return min_sc_set_; }
63  utility::vector1< bool > const & min_bb() const { runtime_assert( min_bb_set() ); return min_bb_; }
64  bool min_bb_set() const { return min_bb_set_; }
65  bool optimize_foldtree() const { return optimize_foldtree_; }
66  void optimize_foldtree( bool const opt ) { optimize_foldtree_ = opt; }
67 /// @brief a dummy apply so that instantiation of this baseclass would be possible.
68  virtual void apply( core::pose::Pose & ) {}
69  virtual std::string get_name() const;
74  void design( bool const des ) { design_partner1_ = des; design_partner2_ = des; }
75  bool design() const { return( design_partner1_ || design_partner2_ ); }
82 ///@brief after fiddling with a task from outside this mover, clear it, or else, on the next iteration through
83 /// the mover the changes will be remembered
84  void clear_task();
85  void clear_task_factory();
86  void use_preset_task( bool const bt ) { use_preset_task_ = bt; }
87  bool use_preset_task() const { return use_preset_task_; }
91  virtual ~DesignRepackMover();
92 
93 protected:
97  bool design_partner1_, design_partner2_; // design or only repack?
98 // curr_ variables are reset with every apply, whereas the min_ variables do not
104  bool repack_non_ala_; // do we redesign nonalanine positions?
105  bool optimize_foldtree_; // do we want to optimize or keep the input fold tree or optimize it?
108  bool use_preset_task_;// use as a basis for computing the packer task a task that was precomputed.
109  utility::vector1< bool > allowed_aas_; //the default allowed aas in designable positions
110 // The following parameters override the automatically decided parameters.
111  utility::vector1< core::Size > prevent_repacking_; //residues that should not be repacked
112  utility::vector1< core::Size > restrict_to_repacking_; //residues that should not be designed
113  core::pack::task::TaskFactoryOP task_factory_; // sequence positions and residue-level tasks to apply when setup_packer_task is done
114  bool symmetry_;
115 };
116 
117 } // simple_moves
118 } // protocols
119 
120 #endif /*INCLUDED_protocols_protein_interface_design_movers_DesignRepackMover_HH*/