33 #include <basic/options/option.hh>
34 #include <basic/options/keys/OptionKeys.hh>
35 #include <basic/options/keys/loops.OptionKeys.gen.hh>
36 #include <basic/options/keys/in.OptionKeys.gen.hh>
37 #include <basic/options/keys/flexPepDocking.OptionKeys.gen.hh>
40 #include <basic/Tracer.hh>
53 #include <utility/exit.hh>
58 #include <utility/vector0.hh>
59 #include <utility/vector1.hh>
62 using namespace protocols::flexpep_docking;
64 static basic::Tracer
TR(
"protocols.flexPepDockingAbInitio");
80 Size const rb_jump_in )
88 using namespace basic::options;
98 loop_relax_mover_->refine(
"no");
99 loop_relax_mover_->relax(
"no");
100 if( option[ OptionKeys::loops::frag_files ].user() )
106 loop_relax_mover_->frag_libs( frag_libs );
110 if( option[ basic::options::OptionKeys::in::file::frag3].user() )
113 fragset3mer_->read_fragment_file
114 ( option[ basic::options::OptionKeys::in::file::frag3].value() );
117 if( option[ basic::options::OptionKeys::in::file::frag9].user() )
120 fragset9mer_->read_fragment_file
121 ( option[ basic::options::OptionKeys::in::file::frag9].value() );
124 if( option[ basic::options::OptionKeys::flexPepDocking::frag5].user() )
127 fragset5mer_->read_fragment_file
128 ( option[ basic::options::OptionKeys::flexPepDocking::frag5].value() );
144 double temperature = 0.8;
148 double min_func_tol = 0.1;
162 TR.Debug <<
"Switching to centroid" << std::endl;
165 to_centroid_mover.
apply(pose);
180 recover_sidechains( referencePose );
181 recover_sidechains.apply( pose );
190 double& acceptance_rate )
192 using namespace protocols::moves;
193 using namespace protocols::simple_moves;
199 small_mover->angle_max(
'H',180 );
200 small_mover->angle_max(
'E',180 );
204 shear_mover->angle_max(
'H',180 );
205 shear_mover->angle_max(
'E',180 );
212 frag3_mover->enable_end_bias_check(
false);
216 frag9_mover->enable_end_bias_check(
false);
220 frag5_mover->enable_end_bias_check(
false);
225 random_mover->add_mover(small_mover,1.0 );
227 random_mover->add_mover(frag3_mover,flags_.frag3_weight );
230 random_mover->add_mover(frag9_mover,flags_.frag9_weight );
233 random_mover->add_mover(frag5_mover, flags_.frag5_weight );
235 random_mover->add_mover(shear_mover, 1.0);
249 for(
int i=1; i<=cycles; ++i ) {
250 mc_trial->apply( pose );
254 pose = mc_->lowest_score_pose();
256 acceptance_rate = mc_trial->acceptance_rate();
265 using namespace protocols::moves;
267 if(flags_.peptide_nres() < 5)
270 Size first_res = flags_.peptide_first_res() + 1;
271 Size last_res = flags_.peptide_last_res() - 1;
273 loops->add_loop(first_res, last_res);
274 for(
Size i = first_res; i <= last_res ; i++)
275 runtime_assert( movemap_->get_bb(i) );
276 loop_relax_mover_->loops( loops );
277 loop_relax_mover_->apply( pose );
289 const float trans_magnitude,
290 const float rot_magnitude,
291 double& acceptance_rate
294 using namespace protocols::moves;
299 rb_jump_, rot_magnitude, trans_magnitude );
304 for(
int i = 1; i <= cycles ; i++)
306 mc_trial->apply(pose);
310 pose = mc_->lowest_score_pose();
312 acceptance_rate = mc_trial->acceptance_rate();
320 using namespace core;
324 int inner_cycles_rb = 50;
325 int inner_cycles_torsions = 50;
326 double trans_mag = 1;
328 double rb_acceptance, torsions_acceptance;
330 double init_MC_temp = 2;
331 double final_MC_temp = 0.6;
332 double gamma = pow( (final_MC_temp / init_MC_temp) , 1.0 / (outer_cycles - 1.0) );
333 std::cout <<
"gamma = " << gamma << std::endl;
334 double MC_temp = init_MC_temp;
336 std::set<int> pSer_positions;
337 if(flags_.pSer2Asp_centroid)
338 convertPSERtoASP(pose, pSer_positions);
339 else if(flags_.pSer2Glu_centroid)
340 convertPSERtoGLU(pose, pSer_positions);
342 setup_for_apply(pose);
345 for (
int i=1; i<=outer_cycles; ++i) {
346 mc_->set_temperature( MC_temp);
347 std::cout <<
"temperature = " << mc_->temperature() << std::endl;
348 if(flags_.rbMCM && ! flags_.pep_fold_only) {
349 rigidbody_monte_carlo
350 ( pose , inner_cycles_rb, trans_mag, rot_mag, rb_acceptance);
351 minimizer_->apply(pose);
353 if(flags_.torsionsMCM) {
355 ( pose , inner_cycles_torsions, torsions_acceptance);
356 minimizer_->apply(pose);
358 if(flags_.peptide_loop_model){
359 loopclosure_monte_carlo( pose );
360 minimizer_->apply(pose);
365 if(flags_.pSer2Asp_centroid || flags_.pSer2Glu_centroid)
366 restorePSER(pose, pSer_positions);
367 to_allatom(pose, startPose );
372 return "FlexPepDockingAbInitio";
379 using namespace core::chemical;
380 using namespace core::conformation;
387 pSer_positions.insert(resid);
390 TR <<
"Replaced pSer residue " << resid <<
" to ASP for ab-initio centroid mode" << std::endl;
400 using namespace core::chemical;
401 using namespace core::conformation;
408 pSer_positions.insert(resid);
411 TR <<
"Replaced pSer residue " << resid <<
" to GLU for ab-initio centroid mode" << std::endl;
420 using namespace core::chemical;
421 using namespace core::conformation;
423 std::set<int>::const_iterator iter;
424 for(iter = pSer_positions.begin();
425 iter != pSer_positions.end(); iter++)