Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ShearMinCCDTrial.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
6 // (c) under license. The Rosetta software is developed by the contributing
7 // (c) members of the Rosetta Commons. For more information, see
8 // (c) http://www.rosettacommons.org. Questions about this can be addressed to
9 // (c) University of Washington UW TechTransfer,email:license@u.washington.edu.
10 
11 /// @file protocols/loops/loop_mover/refine/ShearMinCCDTrial.cc
12 /// @brief Concrete class derived from LoopRefineInnerCycle to implement the CCD min trial flavor of inner cycle refinement.
13 /// @detailed
14 ///
15 /// @author Michael Pacella (mpacella88@gmail.com
16 
17 // Unit headers
20 
21 // Package headers
22 
26 #include <protocols/loops/Loop.hh>
27 #include <protocols/loops/Loops.hh>
28 
29 // Project headers
32 #include <core/pose/Pose.hh>
41 
42 // Basic headers
43 #include <basic/Tracer.hh>
44 
45 // Utility headers
46 #include <utility/excn/Exceptions.hh>
47 #include <utility/vector1.hh>
48 
49 static basic::Tracer TR("protocols.loops.loop_mover.refine.ShearMinCCDTrial");
50 using namespace core;
51 
52 namespace protocols {
53 namespace loops {
54 namespace loop_mover {
55 namespace refine {
56 
57 ///////////////////////////////////////////////////////////////////////////////////////////////////////
58 ////////////////////////////////////////////// BOILER PLATE CODE //////////////////////////////////////
59 ///////////////////////////////////////////////////////////////////////////////////////////////////////
60 
61 ///@brief default constructor
62 ShearMinCCDTrial::ShearMinCCDTrial() : LoopRefineInnerCycle()
63 {
64  init();
65 }
66 
67 
68 ///@brief copy constructor
70 {
72 }
73 
74 
75 ///@brief assignment operator
77  //abort self-assignment
78  if ( this == &rhs ) return *this;
81  return *this;
82 }
83 
84 //destructor
86 
87 /// @brief Each derived class must specify its name.
89 {
90  return type();
91 }
92 
94 {
95  return new ShearMinCCDTrial( *this );
96 }
97 
99 {
100  return new ShearMinCCDTrial();
101 }
102 
103 ///@brief This mover retains state such that a fresh version is needed if the input Pose is about to change
105 {
106  return true;
107 }
108 
109 //void ShearMinCCDTrial::register_options()
110 //{
111  /// PUT THE LIST OF OPTIONS THAT ARE USED HERE ///
112 
113  /// RECURSIVELY CALL REGISTER OPTIONS ON ALL MOVERS THAT THIS CLASS HAS AN OWNING_PTR TO ///
114 //}
115 ///////////////////////////////////////////////////////////////////////////////////////////////////////
116 /////////////////////////////////////// END OF BOILER PLATE CODE //////////////////////////////////////
117 ///////////////////////////////////////////////////////////////////////////////////////////////////////
119  LoopMover_Refine_CCDAP loop_mover,
123  ) : LoopRefineInnerCycle( loop_mover, mc, scorefxn, tf )
124  {
125  init();
126  }
127 
129 {
130  setup_objects( pose );
131 
132  pack::task::PackerTaskOP task_before_bb_perturbation = task_factory()->create_task_and_apply_taskoperations( pose );
133  task_before_bb_perturbation->set_bump_check( true );
134 
135  Loops::const_iterator it( loop_mover()->loops()->one_random_loop() );
136  Loops one_loop;
137  one_loop.add_loop( it );
138 
139  // set up movemap properly
140  kinematics::MoveMapOP mm_one_loop( new kinematics::MoveMap() );
141  loop_mover()->setup_movemap( pose, one_loop, task_before_bb_perturbation->repacking_residues(), mm_one_loop );
142 
143  protocols::simple_moves::ShearMover shear_moves( mm_one_loop, mc()->temperature(), nmoves_ );
144  shear_moves.apply( pose );
145 
146  if (! it->is_terminal( pose ) ) ccd_close_loops( pose, one_loop, *mm_one_loop);
147 
148  pack::task::PackerTaskOP task_after_bb_perturbation = task_factory()->create_task_and_apply_taskoperations( pose );
149  task_after_bb_perturbation->set_bump_check( true );
150  core::pack::rotamer_trials( pose, *scorefxn(), task_after_bb_perturbation );
151  (*scorefxn())(pose); // update 10A nbr graph, silly way to do this
152 
153  kinematics::MoveMapOP all_loops_movemap = movemap();
154  loop_mover()->setup_movemap( pose, *loop_mover()->loops(), task_after_bb_perturbation->repacking_residues(), all_loops_movemap );
155  if(loop_mover()->flank_residue_min())
156  {
157  add_loop_flank_residues_bb_to_movemap(*loop_mover()->loops(), *all_loops_movemap);
158  } // added by JQX
159 
160 
161  minimizer( pose )->run( pose, *all_loops_movemap, *scorefxn(), *min_options_ );
162  std::string move_type = "shear_ccd_min";
163  mc()->boltzmann( pose, move_type );
164  mc()->show_scores();
165 }
166 
167 
169 {
170  type( "ShearMinCCDTrial" );
171  nmoves_ = 1;
172  min_options_ = new core::optimization::MinimizerOptions("dfpmin", 0.001, true /*use_nblist*/, false /*deriv_check*/ );
173  init_options();
174 }
175 
177 {
178  // copy all data members from rhs to lhs
179  lhs.nmoves_ = rhs.nmoves_;
180  lhs.min_options_ = rhs.min_options_;
181 }
182 
184 {
185  //using namespace basic::options;
186  // Set options here.
187 }
188 
190 {
191  // minimizer
192  if (! minimizer_){
194  {
196  } else {
198  }
199  }
200  return minimizer_;
201 }
202 void ShearMinCCDTrial::show( std::ostream & out )
203 {
204  out << *this;
205 }
206 
207 std::ostream & operator<<(std::ostream& out, ShearMinCCDTrial const & loop_refine_shear_CCD_min_trial_inner_cycle )
208 {
209  out << loop_refine_shear_CCD_min_trial_inner_cycle.get_name() << "Concrete class derived from LoopRefineInnerCycle to implement the CCD min trial flavor of inner cycle refinement." << std::endl;
210  return out;
211 }
212 
214 {
215  // TR << "Setting up data for " + get_name() + "." << std::endl;
216 
218 }
219 
221 
223  return new ShearMinCCDTrial();
224 }
225 
227  return "ShearMinCCDTrial";
228 }
229 
230 } // namespace refine
231 } // namespace loop_mover
232 } // namespace loops
233 } // namespace protocols