Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FinalMinimizer.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 core/pack/task/ResfileReader.cc
11 /// @brief implementation of resfile reader and its command classes
12 /// @author Gordon Lemmon (glemmon@gmail.com), adapted from the ResfileReader code
13 /// by Steven Lewis (smlewi@unc.edu) and Andrew Leaver-Fay
14 
15 // Unit Headers
21 
22 //Project Headers
23 #include <core/pose/Pose.hh>
29 
30 // Scripter Headers
31 #include <utility/tag/Tag.hh>
33 
34 // Utility Headers
35 #include <utility/exit.hh>
36 #include <basic/Tracer.hh>
37 #include <core/types.hh>
38 
39 #include <utility/vector0.hh>
40 #include <utility/excn/Exceptions.hh>
41 #include <utility/vector1.hh>
42 
43 
44 using basic::T;
45 using basic::Error;
46 using basic::Warning;
47 
48 //STL headers
49 
50 namespace protocols {
51 namespace ligand_docking {
52 
53 static basic::Tracer FinalMinimizer_tracer("protocols.ligand_docking.ligand_options.FinalMinimizer", basic::t_debug);
54 
57 {
59 }
60 
63  return new FinalMinimizer;
64 }
65 
68 {
69  return "FinalMinimizer";
70 }
71 
73  Mover("FinalMinimizer"),
74  score_fxn_(NULL),
75  movemap_builder_(NULL)
76  {}
77 
79  //utility::pointer::ReferenceCount(),
80  protocols::moves::Mover( that ),
81  score_fxn_(that.score_fxn_),
82  movemap_builder_(that.movemap_builder_)
83 {}
84 
86 
88  return new FinalMinimizer( *this );
89 }
90 
92  return new FinalMinimizer;
93 }
94 
96  return "FinalMinimizer";
97 }
98 
99 //@brief parse XML (specifically in the context of the parser/scripting scheme)
100 void
102  utility::tag::TagPtr const tag,
103  protocols::moves::DataMap & datamap,
104  protocols::filters::Filters_map const & /*filters*/,
105  protocols::moves::Movers_map const & /*movers*/,
106  core::pose::Pose const & /*pose*/
107 )
108 {
109  if ( tag->getName() != "FinalMinimizer" ) throw utility::excn::EXCN_RosettaScriptsOption("This should be impossible");
110 
111  /// Score Function ///
112  if ( ! tag->hasOption("scorefxn") ) throw utility::excn::EXCN_RosettaScriptsOption("'FinalMinimizer' requires 'scorefxn' tag");
113  std::string scorefxn_name= tag->getOption<std::string>("scorefxn");
114  score_fxn_= datamap.get< core::scoring::ScoreFunction * >( "scorefxns", scorefxn_name);
115 
116  /// MoveMapBuilder///
117  if ( ! tag->hasOption("movemap_builder") ) throw utility::excn::EXCN_RosettaScriptsOption("'FinalMinimizer' requires 'movemap_builder' tag");
118  std::string movemap_builder_name= tag->getOption<std::string>("movemap_builder");
119  movemap_builder_= datamap.get< protocols::ligand_docking::MoveMapBuilder * >( "movemap_builders", movemap_builder_name);
120 
121 }
122 
123 void
125  (*score_fxn_)(pose); // Debug Line, Remove Later...
126  assert(movemap_builder_);
127 
128  if(movemap_builder_->minimize_backbone()){
129  core::kinematics::FoldTree fold_tree_copy;
130  FinalMinimizer_tracer<< "setting up fold_tree for min_bb"<< std::endl;
131  fold_tree_copy= pose.fold_tree();
132  InterfaceBuilderOP bb_interface_builder= movemap_builder_->get_bb_interface_builder();
133  MinimizeBackbone backbone_foldtree_setup(bb_interface_builder);
134  backbone_foldtree_setup.apply(pose);
135 
136  protocols::simple_moves::MinMoverOP const dfpMinTightTol = get_final_min_mover(pose);
137  dfpMinTightTol->min_options()->nblist_auto_update(true);
138  dfpMinTightTol->apply(pose);
139  pose.fold_tree(fold_tree_copy);
140  }
141  else{
142  protocols::simple_moves::MinMoverOP const dfpMinTightTol = get_final_min_mover(pose);
143  dfpMinTightTol->min_options()->nblist_auto_update(true);
144  dfpMinTightTol->apply(pose);
145  }
146 
147 }
148 
151  std::string min_type= "dfpmin_armijo_nonmonotone_atol";
152  core::Real tolerance= 0.02;
153  bool use_nb_list=true;
154  core::kinematics::MoveMapOP movemap= movemap_builder_->build(pose);
155  movemap->show(FinalMinimizer_tracer, pose.n_residue());
156  FinalMinimizer_tracer<< std::endl;
157  return new protocols::simple_moves::MinMover(movemap, score_fxn_, min_type, tolerance, use_nb_list);
158 }
159 
160 } //namespace ligand_docking
161 } //namespace protocols