30 #include <basic/options/option.hh>
66 #include <basic/options/keys/packing.OptionKeys.gen.hh>
76 #include <ObjexxFCL/string.functions.hh>
85 #include <numeric/trig.functions.hh>
86 #include <numeric/xyzMatrix.fwd.hh>
88 #include <basic/Tracer.hh>
94 #include <basic/options/keys/docking.OptionKeys.gen.hh>
97 #include <utility/vector0.hh>
98 #include <utility/vector1.hh>
103 using basic::Warning;
105 static basic::Tracer
TR(
"protocols.docking.DockingHighRes");
109 using namespace core;
111 namespace protocols {
194 using namespace basic::options;
195 using namespace core::pack::task;
196 using namespace core::pack::task::operation;
202 trans_magnitude_ = option[ OptionKeys::docking::dock_mcm_trans_magnitude ]();
203 rot_magnitude_ = option[ OptionKeys::docking::dock_mcm_rot_magnitude ]();
238 using namespace basic::options;
240 if ( option[ OptionKeys::docking::dock_min ]() ) {
242 }
else if ( option[ OptionKeys::docking::dock_ppk ]() ){
244 utility::exit(
"Danger Will Robinson! Prepacking is no longer performed within the DockingProtocol. Use the docking_prepack_protocol executable first, then use the output as the starting structure in docking.", 1 );
254 TR <<
"This method clears the loop set the is passed in. Before using this, please investigate it thoroughly." << std::endl;
258 using namespace core::pack::task;
259 using namespace core::pack::task::operation;
260 using namespace protocols::toolbox::task_operations;
271 for (
Size i=2; i < nres; ++i ) {
274 if ( task->pack_residue(i-1) ) ++num_flexible;
275 if ( task->pack_residue(i) ) ++num_flexible;
276 if ( task->pack_residue(i+1) ) ++num_flexible;
278 if ( num_flexible > 1 ) {
279 flexible_region.at(i-1) =
true;
280 flexible_region.at(i) =
true;
281 flexible_region.at(i+1) =
true;
286 for (
Size i=2; i < nres; ++i ) {
287 if ( flexible_region.at(i-1) && flexible_region.at(i+1) ) flexible_region.at(i) =
true;
291 flexible_region.at(1) =
false;
292 flexible_region.at(2) =
false;
293 for (
Size i=3; i < (nres-1); ++i ) {
295 flexible_region.at(i-2) =
false;
296 flexible_region.at(i-1) =
false;
297 flexible_region.at(i) =
false;
298 flexible_region.at(i+1) =
false;
301 flexible_region.at(nres-1) =
false;
302 flexible_region.at(nres) =
false;
305 for (
Size i=2; i < nres; ++i ) {
306 if ( ( ! flexible_region.at(i-1)) && ( ! flexible_region.at(i+1)) ) flexible_region.at(i) =
false;
309 for (
Size i=3; i < nres; ++i ) {
310 if ( ( ! flexible_region.at(i-2)) && ( ! flexible_region.at(i+1)) ) {
311 flexible_region.at(i-1) =
false;
312 flexible_region.at(i) =
false;
319 for (
Size i=1; i < nres; ++i ) {
320 if ( flexible_region.at(i) ) {
323 for (
Size j=i+1; j <= nres; ++j ) {
329 if ( ( ! flexible_region.at(j) ) ) {
334 loop_set->add_loop( loop_start, loop_stop, 0 );
339 loop_set->choose_cutpoints( pose );
352 using namespace scoring;
353 using namespace basic::options;
355 TR <<
"in DockingHighRes.apply" << std::endl;
370 if ( !option[ OptionKeys::docking::dock_ppk ]() )
mc_->recover_low( pose );
392 using namespace moves;
394 TR <<
"::::::::::::::::::DOCK_MIN:::::::::::::::::::" << std::endl;
422 using namespace moves;
423 using namespace basic::options;
424 using namespace core::pack::task;
425 using namespace core::pack::task::operation;
426 using namespace protocols::toolbox::task_operations;
448 std::string const flex_bb_docking_type = option[ OptionKeys::docking::flexible_bb_docking ]();
449 if ( flex_bb_docking_type ==
"fixedbb" ) {
453 pack_interface_repack->task_factory( ctf );
454 interface_repack_and_move_loops->add_mover( pack_interface_repack );
460 pack_interface_repack->task_factory( ctf );
461 interface_repack_and_move_loops->add_mover( pack_interface_repack );
463 if ( ( flex_bb_docking_type ==
"ccd" ) || ( flex_bb_docking_type ==
"kic" ) || ( flex_bb_docking_type ==
"backrub" ) ) {
474 pose_for_loop_defn.
fold_tree( docking_fold_tree );
477 Real interface_dist = option[ OptionKeys::docking::flexible_bb_docking_interface_dist ];
478 define_loops( pose_for_loop_defn, loop_set, interface_dist );
481 if ( flex_bb_docking_type ==
"ccd" ) {
483 TR <<
"Setting up for ccd loop modeling" << std::endl;
487 }
else if ( flex_bb_docking_type ==
"kic" ) {
489 TR <<
"Setting up for kinematic (kic) loop modeling" << std::endl;
493 }
else if ( flex_bb_docking_type ==
"backrub" ) {
495 TR <<
"Setting up for backrub loop modeling" << std::endl;
506 interface_repack_and_move_loops->add_mover( get_loop_ft );
507 interface_repack_and_move_loops->add_mover( loop_refine );
508 interface_repack_and_move_loops->add_mover( get_docking_ft );
511 TR <<
"[ ERROR ] Unknown flexible_bb_docking type: " << flex_bb_docking_type << std::endl;
515 interface_repack_and_move_loops->add_mover( pack_interface_repack );
542 repack_step->
add_mover(rb_mover_min_trial);
545 repack_step->add_mover( pack_interface_and_move_loops_trial );
546 if (
rt_min() ) repack_step->add_mover(rtmin_trial);
547 if (
sc_min() ) repack_step->add_mover(scmin_trial);
552 rb_mover_min_trial_repack->add_mover( repack_step );
556 initial_repack->
add_mover(pack_interface_and_move_loops_trial);
557 if (
rt_min() ) initial_repack->add_mover(rtmin_trial);
558 if (
sc_min() ) initial_repack->add_mover(scmin_trial);
567 TR <<
"::::::::::::::::::DOCK_MCM:::::::::::::::::::" << std::endl;
592 using namespace moves;
593 using namespace basic::options;
594 using namespace core::pack::task;
595 using namespace core::pack::task::operation;
597 TR <<
"::::::::::::::::::DOCK_PPK:::::::::::::::::::" << std::endl;
600 Real trans_magnitude = 1000;
605 translate_away->step_size( trans_magnitude );
606 trans_away_vec.push_back( translate_away );
613 translate_back->step_size( trans_magnitude );
614 translate_back->trans_axis().negate();
615 trans_back_vec.push_back( translate_back );
640 using namespace basic::options;
641 using namespace core::pack::task;
642 using namespace core::pack::task::operation;
647 TR <<
"Using user-defined TaskFactory." << std::endl;
652 TR <<
"Designing during docking" << std::endl;
658 repack_chains.push_back( chain );
661 if( repack_chains.size() > 0 ) {
662 for( DockJumps::const_iterator it = repack_chains.begin(); it != repack_chains.end(); ++it ) {
663 TR <<
"Not designing chain " << *it << std::endl;
675 if( option[OptionKeys::packing::resfile].user() ) local_tf->push_back(
new ReadResfile );
680 using namespace protocols::toolbox::task_operations;
687 unboundrot->initialize_from_command_line();
689 local_tf->push_back( unboundrot_operation );
699 return "DockingHighResLegacy";