85 #include <utility/file/FileName.hh>
86 #include <utility/tools/make_vector1.hh>
87 #include <utility/tag/Tag.hh>
90 #include <basic/prof.hh>
91 #include <basic/Tracer.hh>
92 #include <basic/datacache/BasicDataCache.hh>
95 #include <basic/options/option.hh>
96 #include <basic/options/keys/in.OptionKeys.gen.hh>
98 #include <basic/options/keys/score.OptionKeys.gen.hh>
99 #include <basic/options/keys/run.OptionKeys.gen.hh>
100 #include <basic/options/keys/cluster.OptionKeys.gen.hh>
101 #include <basic/options/keys/docking.OptionKeys.gen.hh>
103 #include <basic/options/keys/constraints.OptionKeys.gen.hh>
108 #include <ObjexxFCL/FArray1D.hh>
109 #include <ObjexxFCL/format.hh>
117 #include <utility/vector0.hh>
118 #include <utility/vector1.hh>
122 using basic::Warning;
124 static basic::Tracer
TR(
"protocols.docking.DockingProtocol");
125 using namespace core;
127 namespace protocols {
131 DockingProtocol::DockingProtocol()
133 user_defined_ =
false;
134 init(utility::tools::make_vector1<core::SSize>(1),
false,
false,
true, NULL, NULL);
137 DockingProtocol::DockingProtocol(
139 bool const low_res_protocol_only,
140 bool const docking_local_refine,
141 bool const autofoldtree,
147 init(utility::tools::make_vector1<core::SSize>(rb_jump), low_res_protocol_only, docking_local_refine, autofoldtree, docking_score_low, docking_score_high);
152 bool const low_res_protocol_only,
153 bool const docking_local_refine,
154 bool const autofoldtree,
160 init(movable_jumps, low_res_protocol_only, docking_local_refine, autofoldtree, docking_score_low, docking_score_high);
167 bool const low_res_protocol_only,
168 bool const docking_local_refine,
169 bool const autofoldtree,
175 using basic::options::option;
176 using namespace basic::options::OptionKeys;
192 if ( docking_score_low() == NULL ) {
195 basic::options::option[ basic::options::OptionKeys::score::patch ]()
202 if ( docking_score_high() == NULL ) {
212 if ( option[ score::weights ].user() ){
217 if ( option[ score::pack_weights ].user() ){
229 using namespace core::scoring;
376 using namespace basic::options;
379 if( option[ OptionKeys::docking::multibody ].user() ) {
384 if( option[ OptionKeys::docking::low_res_protocol_only ].user() ) {
388 if( option[ OptionKeys::docking::docking_local_refine ].user() ) {
392 if( option[ OptionKeys::docking::dock_min ].user() ) {
393 set_dock_min(option[ OptionKeys::docking::dock_min ]());
398 if( option[ OptionKeys::docking::dock_rtmin ].user() ) {
399 rt_min_ = option[ OptionKeys::docking::dock_rtmin ]();
404 if( option[ OptionKeys::docking::sc_min ].user() ) {
405 sc_min_ = option[ OptionKeys::docking::sc_min ]();
409 if( option[ OptionKeys::docking::partners ].user() ) {
410 set_partners(option[ OptionKeys::docking::partners ]());
414 if( option[ OptionKeys::constraints::cst_weight ].user() ) {
423 if ( option[ OptionKeys::in::file::native ].user() ) {
431 if ( option[ OptionKeys::cluster::output_score_filter ].user() ) {
432 score_cutoff_ = option[ OptionKeys::cluster::output_score_filter ]();
435 if ( option[ OptionKeys::docking::no_filters ].user() ) {
439 if ( option[ OptionKeys::docking::use_legacy_protocol ].user() ) {
443 if ( option[ OptionKeys::docking::ignore_default_docking_task].user() ){
447 if ( option[ OptionKeys::docking::docking_centroid_inner_cycles ].user() ) {
448 set_inner_cycles(option[ OptionKeys::docking::docking_centroid_inner_cycles ]() );
451 if ( option[ OptionKeys::docking::docking_centroid_outer_cycles ].user() ) {
452 set_outer_cycles(option[ OptionKeys::docking::docking_centroid_outer_cycles ]());
456 if ( option[ OptionKeys::docking::ensemble1 ].user() ) {
460 if ( option[ OptionKeys::docking::ensemble2 ].user() ) {
464 if ( option[ OptionKeys::docking::recover_sidechains ].user() ) {
472 using namespace basic::options;
474 option.add_relevant( OptionKeys::docking::multibody );
475 option.add_relevant( OptionKeys::docking::low_res_protocol_only );
476 option.add_relevant( OptionKeys::docking::docking_local_refine );
477 option.add_relevant( OptionKeys::docking::dock_min );
478 option.add_relevant( OptionKeys::docking::dock_rtmin );
479 option.add_relevant( OptionKeys::docking::sc_min );
480 option.add_relevant( OptionKeys::docking::partners );
481 option.add_relevant( OptionKeys::docking::no_filters );
482 option.add_relevant( OptionKeys::constraints::cst_weight );
483 option.add_relevant( OptionKeys::constraints::cst_file );
484 option.add_relevant( OptionKeys::run::score_only );
485 option.add_relevant( OptionKeys::in::file::native );
486 option.add_relevant( OptionKeys::docking::use_legacy_protocol );
487 option.add_relevant( OptionKeys::docking::ignore_default_docking_task );
488 option.add_relevant( OptionKeys::docking::recover_sidechains );
490 option.add_relevant( OptionKeys::docking::docking_centroid_inner_cycles );
491 option.add_relevant( OptionKeys::docking::docking_centroid_outer_cycles );
492 option.add_relevant( OptionKeys::docking::ensemble1 );
493 option.add_relevant( OptionKeys::docking::ensemble2 );
500 TR <<
"Setting docking foldtree" << std::endl;
501 TR <<
"old fold tree: " << pose.
fold_tree() << std::endl;
503 TR <<
"new fold tree: " << pose.
fold_tree() << std::endl;
531 start_res = cutpoint + 1;
584 legacy_mover->design(
design_ );
597 TR <<
"setting up the constraint set mover" << std::endl;
637 if (
this == &rhs)
return *
this;
841 TR <<
"No ConstraintSet has been created, skipping cst_weight. Use cst_file instead and set up desired ConstraintSet" << std::endl;
893 bool passed_lowres_filter =
true;
894 bool passed_highres_filter =
true;
895 std::map < std::string, core::Real > lowres_scores;
898 TR <<
"Danger Will Robinson! Native is an impostor!" << std::endl;
928 TR <<
"setting up the constraint set mover" << std::endl;
939 TR <<
"finished initial perturbation" << std::endl;
977 TR <<
"setting up the constraint set mover" << std::endl;
992 ensemble1_->recover_conformer_sidechains( pose );
995 ensemble2_->recover_conformer_sidechains( pose );
1000 ( *docking_scorefxn_output_ )( pose );
1009 if ( lowres_scores.size() > 0 ) {
1010 for ( std::map< std::string, core::Real >::const_iterator
pair=lowres_scores.begin();
pair!=lowres_scores.end(); ++
pair ) {
1011 if (
pair->first ==
"dock_ens_conf" ) job->add_string_real_pair(
"cen_dock_ens_conf",
pair->second );
1012 else if (
pair->first !=
"total_score" ) job->add_string_real_pair(
pair->first,
pair->second );
1027 job->add_string_real_pair(
"conf_score",
1034 if ( !passed_lowres_filter || !passed_highres_filter ){
1098 using namespace ObjexxFCL::fmt;
1102 out <<
"////////////////////////////////////////////////////////////////////////////////" << std::endl;
1103 out << line_marker <<
A( 47,
"Rosetta 3 Docking Protocol" ) << space( 27 ) << line_marker << std::endl;
1104 out << line_marker << space( 74 ) << line_marker << std::endl;
1106 out << line_marker <<
" Dockable Jumps: ";
1120 core::Size remaining_spaces = 80 - spaces_so_far;
1121 if ( remaining_spaces > 0 ) out << space( 80 - spaces_so_far );
1122 out << line_marker << std::endl;
1125 out << line_marker <<
" Low Resolution Docking Protocol: " << ( ( dp.
docking_lowres_mover_ ) ? (
" on " ) : (
"off " ) );
1126 out << space( 35 ) << line_marker << std::endl;
1129 out << line_marker <<
" High Resolution Docking Protocol: " << ( ( dp.
docking_highres_mover_ ) ? (
" on " ) : (
"off " ) );
1130 out << space( 35 ) << line_marker << std::endl;
1133 out << line_marker <<
" Low Resolution Filter: " << ( ( dp.
lowres_filter_ ) ? (
" on " ) : (
"off " ) );
1134 out << space( 45 ) << line_marker << std::endl;
1135 out << line_marker <<
" High Resolution Filter: " << ( ( dp.
highres_filter_ ) ? (
" on " ) : (
"off " ) );
1136 out << space( 45 ) << line_marker << std::endl;
1139 out <<
"////////////////////////////////////////////////////////////////////////////////" << std::endl;
1146 using namespace core::scoring;
1148 if( tag->hasOption(
"docking_score_low" ) ){
1153 if( tag->hasOption(
"docking_score_high" ) ){
1159 if( tag->hasOption(
"partners" ) ){
1172 if( tag->hasOption(
"task_operations" ) ){
1193 return "DockingProtocol";