Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MonteCarloRecover.cc
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 src/protocols/simple_moves/MonteCarloRecover.cc
11 /// @author Sarel Fleishman (sarelf@uw.edu)
12 
13 
14 // Unit Headers
18 
19 // Package Headers
20 
21 // Project Headers
22 #include <core/pose/Pose.hh>
23 #include <basic/Tracer.hh>
24 // AUTO-REMOVED #include <protocols/filters/Filter.hh>
25 #include <protocols/moves/Mover.hh>
26 // Parser headers
28 #include <utility/tag/Tag.hh>
29 
30 #include <utility/vector0.hh>
31 #include <utility/excn/Exceptions.hh>
32 #include <utility/vector1.hh>
33 
34 
35 // Utility headers
36 
37 //// C++ headers
38 
39 static basic::Tracer TR("protocols.simple_moves.MonteCarloRecover");
40 
41 using namespace core;
42 
43 namespace protocols {
44 namespace simple_moves {
45 
47 MonteCarloRecoverCreator::keyname() const
48 {
49  return MonteCarloRecoverCreator::mover_name();
50 }
51 
53 MonteCarloRecoverCreator::create_mover() const {
54  return new MonteCarloRecover;
55 }
56 
58 MonteCarloRecoverCreator::mover_name()
59 {
60  return "MonteCarloRecover";
61 }
62 
64 MonteCarloRecover::get_name() const {
65  return MonteCarloRecoverCreator::mover_name();
66 }
67 
68 
69 /// @brief default constructor
70 MonteCarloRecover::MonteCarloRecover():
71  Mover("MonteCarloRecover"),
72  recover_low_( true ),
73  MC_mover_( NULL )
74 {
75 }
76 
77 /// @brief destructor
79 
80 /// @brief clone this object
81 MoverOP
83 {
84  return new MonteCarloRecover( *this );
85 }
86 
87 /// @brief create this type of object
88 MoverOP
90 {
91  return new MonteCarloRecover();
92 }
93 
96  return( MC_mover_ );
97 }
98 
99 void
101  MC_mover_ = mc;
102 }
103 
104 void
105 MonteCarloRecover::parse_my_tag( TagPtr const tag, DataMap &, Filters_map const &, Movers_map const &movers, Pose const & pose ){
106  std::string const mc_name( tag->getOption< std::string >( "MC_name" ) );
107  Movers_map::const_iterator find_mover( movers.find( mc_name ) );
108  if( find_mover == movers.end() )
109  throw utility::excn::EXCN_RosettaScriptsOption( "MC mover not found by MonteCarloRecover" );
110 
111  set_MC( dynamic_cast< GenericMonteCarloMover * >( find_mover->second() ) );
112  recover_low( tag->getOption< bool >( "recover_low", true ) );
113  Pose temp_pose( pose );
114  get_MC()->initialize();
115  get_MC()->reset( temp_pose );
116  TR<<"Setting MonteCarloRecover with mover "<<mc_name<<" and recover_low set to "<<recover_low()<<std::endl;
117 }
118 
119 void
121  if( recover_low() )
122  MC_mover_->recover_low( pose );
123  else
124  pose = *(MC_mover_->last_accepted_pose());
125 }
126 
127 bool
129  return( recover_low_ );
130 }
131 
132 void
133 MonteCarloRecover::recover_low( bool const recover ){
134  recover_low_ = recover;
135 }
136 
137 } // ns simple_moves
138 } // ns protocols