Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PlaceStubMover.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/protein_interface_design/movers/PlaceStubMover.hh
11 /// @brief definition of classes for grafting hotspots into a pose
12 /// @author Sarel Fleishman (sarelf@u.washington.edu), Jacob Corn (jecorn@u.washington.edu), Eva-Maria Strauch (evas01@u.washington.edu)
13 
14 #ifndef INCLUDED_protocols_protein_interface_design_movers_PlaceStubMover_hh
15 #define INCLUDED_protocols_protein_interface_design_movers_PlaceStubMover_hh
17 
18 // Project Headers
20 #include <core/pose/Pose.fwd.hh>
21 #include <core/types.hh>
23 #include <utility/tag/Tag.fwd.hh>
28 // C++ headers
29 
30 // Unit headers
32 
34 #include <utility/vector1.hh>
35 
36 //Auto Headers
38 
39 
40 
41 namespace protocols {
42 namespace protein_interface_design {
43 namespace movers {
44 
45 /// @brief choose a stub based on mc sampling, and place it on the pose.
46 /// Iterates over stubs until one matches criteria.
48 {
49 public:
50  // used to define pairs of design/repack movers with an associated bool that
51  // determines whether to use the stub-based foldtree with cuts etc., or to
52  // use the default foldtree
53  typedef std::pair< simple_moves::DesignRepackMoverOP, bool > DesignMoverFoldTreePair;
54  typedef std::pair< simple_moves::DesignRepackMoverOP, core::Real > DesignMoverRealPair;
55 public:
57 
60  core::Real score_threshold,
61  core::Size const host_chain,
62  protocols::filters::FilterOP final_filter,
63  bool const hurry=false,
64  bool const triage_positions=true,
65  core::Real stub_energy_threshold = 1.0
66  );
67  virtual ~PlaceStubMover();
68 
72  }
73 
75  stub_minimize_movers_ = dmrp;
76  }
77 
80  { return stub_minimize_movers_; }
81 
82  virtual void apply( core::pose::Pose & pose );
83  virtual std::string get_name() const;
84  virtual void parse_my_tag( utility::tag::TagPtr const tag,
88  core::pose::Pose const & );
89 
90 private: // member functions
91  void
92  place_stub( core::pose::Pose & pose, core::conformation::Residue const res_stub, core::Size const res_num );
93 
94  void stub_based_atom_tree( core::pose::Pose & pose, core::conformation::Residue const res_stub, core::Real const cst_sdev );
95 
96  bool SelectStubIteratively( protocols::hotspot_hashing::HotspotStubSet::Hs_vec::const_iterator stub_it );
97 
98  bool StubMinimize( core::pose::Pose & pose,
100  core::Size const host_res = 0,
101  bool const hurry = false );
103 
104  /// @brief resets pose's constraints upon stub failure
105  /// remove constraints if they exist. To be used on failure
106  void cst_cleanup( core::pose::Pose & pose );
107  /// clean everything before exiting
108  void final_cleanup( core::pose::Pose & pose );
109 
110 private: // data members
111  /// maximum bonus_value for accepting a stub
113  ///where is the stub to be placed
115  /// stub set we're choosing from
117  /// or use fold tree rb jump.
118  bool add_constraints_; /// dflt false
119  /// what std to use for coordinate cst in each design mover
121  /// Locations where stubs are not allowed to be placed
122  /// @note This is similar to DesignRepackMover::prevent_repacking() but
123  /// we want to allow repacking at steps after stub placement.
125  /// movers for stub minimization, vector of pairs of movers and whether or not
126  /// to apply bb constraints during the mover
128  ///utility::vector1< core::Real > coord_cst_std_stub_minimize_;
130  ///immediately after placement + minimization
132  /// a filter at the last stage of placement. Defaults to TrueFilter
135  /// where stubs were placed and whether they use constraints. vector is
136  /// necessary to maintain the order of the placed stubs
138 
139  /// this is the foldtree with which we come into the first PlaceStubMover.
140  /// It will be passed between movers for the user to decide that it should be used.
142  /// saves the coordinate constraints that this mover has associated with the
143  /// pose. At the end of the run, they should be removed
145  bool leave_coord_csts_after_placement_;//defaults to false
146  core::Real post_placement_sdev_;//If coord_csts are left on, what should the sdev be? defaults to 1.0
147 
152 
153  /// use inverse rotamers to place the scaffold
154  bool place_scaffold_; //dflt false
155  /// the maximum distance for a stub to be considered a a neighbour to a host residue
157  /// Should we speed up StubMinimize at the expense of accuracy?
158  bool hurry_; //dflt true
159  /// Should we triage host positions based on smart criteria, such as current position?
160  /// Leave false if partners have not already been docked.
161  bool triage_positions_; //dflt true
162  /// Maximum per-residue energy the placed stub can have to be saved
164  /// This task factory is used by placed stubs to add prevent repacking instructions to design movers that
165  /// would be invoked *after* PlaceStub finishes successfully. It's a way to communicate the placements that
166  /// should not be changed to design movers down stream. Note that this is a different implementation than
167  /// the one used in PlaceSimultaneously.
169  utility::pointer::owning_ptr< protocols::moves::DataMapObj< utility::vector1< core::Size > > > residue_numbers_; /// dflt NULL; a vector of residue numbers placed on the DataMap which specifies all the placed residues. Useful to communicate between movers and filters, without the pesky NotifyMovers strategy
170  std::string user_defined_name_; // reserved for keeping the name of the current stub placement mover
171 };
172 
173 } //movers
174 } //protein_interface_design
175 } //protocols
176 
177 #endif /*INCLUDED_protocols_protein_interface_design_movers_PlaceStubMover_HH*/
178