172 #include <utility/excn/Exceptions.hh>
179 #include <basic/options/keys/run.OptionKeys.gen.hh>
180 #include <basic/options/keys/relax.OptionKeys.gen.hh>
181 #include <basic/options/keys/evaluation.OptionKeys.gen.hh>
182 #include <basic/options/option.hh>
183 #include <basic/Tracer.hh>
186 #include <utility/tag/Tag.hh>
187 #include <utility/string_util.hh>
188 #include <utility/vector0.hh>
189 #include <utility/vector1.hh>
190 #include <numeric/random/random.fwd.hh>
193 #include <ObjexxFCL/string.functions.hh>
204 #if defined(WIN32) || defined(__CYGWIN__)
208 #ifdef BOINC_GRAPHICS
214 using basic::Warning;
216 static basic::Tracer
TR(
"protocols.relax.FastRelax");
218 using namespace core;
219 using namespace core::io::silent ;
223 namespace protocols {
229 using namespace ObjexxFCL;
235 FastRelaxCreator::keyname()
const
237 return FastRelaxCreator::mover_name();
241 FastRelaxCreator::create_mover()
const {
246 FastRelaxCreator::mover_name()
263 FastRelax::FastRelax(
267 checkpoints_(
"FastRelax"),
286 checkpoints_(
"FastRelax"),
305 checkpoints_(
"FastRelax"),
318 checkpoints_(
"FastRelax"),
353 mm->set_jump(
true );
364 bool batch = tag->getOption<
bool >(
"batch", false );
365 cartesian (tag->getOption<
bool >(
"cartesian",
false ) );
369 }
else if( script_file ==
"" ) {
377 utility::lua::LuaObject
const & score_fxns,
378 utility::lua::LuaObject
const & tasks,
380 if( def[
"scorefxn"] ) {
383 set_scorefxn( score_fxns[
"score12"].to<core::scoring::ScoreFunctionSP>()->
clone() );
389 mm->set_jump(
true );
397 if ( new_task_factory == 0)
return;
404 bool batch = def[
"batch"] ? def[
"batch"].to<
bool>() :
false;
405 cartesian (def[
"cartesian"] ? def[
"cartesian"].to<bool>() :
false );
409 }
else if( script_file ==
"" ) {
419 using namespace basic::options;
421 default_repeats_ = basic::options::option[ OptionKeys::relax::default_repeats ]();
422 ramady_ = basic::options::option[ OptionKeys::relax::ramady ]();
423 repack_ = basic::options::option[ OptionKeys::relax::chi_move]();
424 test_cycles_ = basic::options::option[ OptionKeys::run::test_cycles ]();
425 script_max_accept_ = basic::options::option[ OptionKeys::relax::script_max_accept ]();
426 symmetric_rmsd_ = option[ basic::options::OptionKeys::evaluation::symmetric_rmsd ]();
432 ramady_cutoff_ = basic::options::option[ OptionKeys::relax::ramady_cutoff ]();
433 ramady_force_ = basic::options::option[ OptionKeys::relax::ramady_force ]();
434 ramady_rms_limit_ = basic::options::option[ OptionKeys::relax::ramady_rms_limit ]();
455 using namespace core::scoring;
456 using namespace core::conformation;
458 if( ( score < best_score) || (accept_count == 0) ){
462 #ifdef BOINC_GRAPHICS
463 boinc::Boinc::update_graphics_low_energy( best_pose, best_score );
464 boinc::Boinc::update_graphics_last_accepted( pose, score );
475 TR <<
"MRP: " << accept_count <<
" " << score <<
" " << best_score <<
" " <<
rms <<
" " << irms <<
" " << std::endl;
485 using namespace core::scoring;
486 using namespace core::conformation;
495 min_mover->apply( pose );
501 using namespace core::scoring;
502 using namespace core::conformation;
503 using namespace core::pack;
504 using namespace core::pack::task;
505 using namespace core::kinematics;
506 using namespace protocols;
508 TR.Debug <<
"================== FastRelax: " <<
script_.size() <<
" ===============================" << std::endl;
511 #if defined GL_GRAPHICS
519 if( !
ramady_force_ && numeric::random::uniform() <= 0.1 ) do_rama_repair =
false;
561 if ( !basic::options::option[ basic::options::OptionKeys::relax::chi_move].user() ) {
563 allow_repack[ pos ] = local_movemap->get_chi( pos );
566 task_->initialize_from_command_line().restrict_to_repacking().restrict_to_residues(allow_repack);
567 task_->or_include_current(
true );
571 lp_op.
apply( pose, *task_ );
580 (*local_scorefxn)( pose );
599 int total_repeat_count = 0;
606 std::vector< core::Real > best_score_log;
607 std::vector< core::Real > curr_score_log;
611 (*local_scorefxn)( pose );
626 #ifdef BOINC_GRAPHICS
627 boinc::Boinc::update_graphics_current( pose );
632 TR.Debug <<
"Command: " << cmd.
command << std::endl;
635 if( cmd.
nparams < 1 ){ utility_exit_with_message(
"ERROR: Syntax: " + cmd.
command +
"<number_of_repeats> " ); }
640 if( cmd.
command ==
"endrepeat" ){
641 TR.Debug <<
"CMD: Repeat: " << repeat_count << std::endl;
643 total_repeat_count ++ ;
644 if( repeat_count <= 0 ){}
650 if( cmd.
nparams < 1 ){ utility_exit_with_message(
"ERROR: Syntax: " + cmd.
command +
"<number> " ); }
651 pose.
dump_pdb(
"dump_" + right_string_of( (
int) cmd.
param1, 4,
'0' ) );
654 if( cmd.
command.substr(0,7) ==
"dumpall" ){
655 if( cmd.
command.substr(8) ==
"true" )
657 if( cmd.
command.substr(8) ==
"false" )
664 std::string checkpoint_id =
"chk" + string_of( chk_counter );
666 pack_full_repack_->apply( pose );
670 pose.
dump_pdb(
"dump_" + right_string_of( dump_counter, 4,
'0' ) );
676 if( cmd.
nparams < 1 ){ utility_exit_with_message(
"ERROR: Syntax " + cmd.
command +
" <min_tolerance> " ); }
679 std::string checkpoint_id =
"chk" + string_of( chk_counter );
685 pose.
dump_pdb(
"dump_" + right_string_of( dump_counter, 4,
'0' ) );
690 if( cmd.
command.substr(0,5) ==
"scale" ){
693 local_scorefxn->set_weight( scale_param, full_weights[ scale_param ] * cmd.
param1 );
696 if( cmd.
command.substr(0,6) ==
"rscale" ){
699 local_scorefxn->set_weight( scale_param, full_weights[ scale_param ] * ((cmd.
param2 - cmd.
param1 ) * numeric::random::uniform() + cmd.
param1 ));
702 if( cmd.
command.substr(0,6) ==
"switch" ){
704 if( cmd.
command.substr(7) ==
"torsion" ) {
705 TR <<
"Using AtomTreeMinimizer with dfp" << std::endl;
707 }
else if( cmd.
command.substr(7) ==
"cartesian" ) {
708 TR <<
"Using CartesianMinizer with lbfgs" << std::endl;
713 if( cmd.
command.substr(0,6) ==
"weight" ){
716 local_scorefxn->set_weight( scale_param, cmd.
param1 );
718 full_weights[ scale_param ] = cmd.
param1;
720 if( cmd.
command ==
"batch_shave" ){
722 if( cmd.
command ==
"show_weights" ){
723 local_scorefxn->show(
TR, pose);
726 if( cmd.
command ==
"ramp_repack_min" ){
727 if( cmd.
nparams < 2 ){ utility_exit_with_message(
"More parameters expected after : " + cmd.
command ); }
738 if( total_repeat_count > 1 && repeat_count > 2 ){
740 if( do_rama_repair ){
747 std::string checkpoint_id =
"chk" + string_of( chk_counter );
749 pack_full_repack_->apply( pose );
757 core::Real imedscore = (*local_scorefxn)( pose );
762 pose.
dump_pdb(
"dump_" + right_string_of( dump_counter, 4,
'0' ) );
768 if( cmd.
command ==
"accept_to_best" ){
771 if( ( score < best_score) || (accept_count == 0) ){
775 #ifdef BOINC_GRAPHICS
776 boinc::Boinc::update_graphics_low_energy( best_pose, best_score );
777 boinc::Boinc::update_graphics_last_accepted( pose, score );
778 boinc::Boinc::update_mc_trial_info( total_count ,
"FastRelax" );
788 TR <<
"MRP: " << accept_count <<
" " << score <<
" " << best_score <<
" " << rms <<
" " << irms <<
" " << std::endl;
789 best_score_log.push_back( best_score );
790 curr_score_log.push_back( score );
799 if( cmd.
command ==
"load_best" ){
802 if( cmd.
command ==
"load_start" ){
807 utility_exit_with_message(
"EXIT INVOKED" );
811 utility_exit_with_message(
"Unknown command: " + cmd.
command );
827 << (*local_scorefxn)( pose ) <<
" "
835 (*local_scorefxn)( pose );
838 for(
Size j = 0; j < best_score_log.size(); j++ )
841 for(
Size j = 0; j < curr_score_log.size(); j ++ )
859 std::vector< std::string > filelines;
867 runtime_assert( repeats > 0 );
870 filelines.push_back(
"ramp_repack_min 0.02 0.01" );
871 filelines.push_back(
"batch_shave 0.25" );
872 filelines.push_back(
"ramp_repack_min 0.250 0.01" );
873 filelines.push_back(
"batch_shave 0.25" );
874 filelines.push_back(
"ramp_repack_min 0.550 0.01" );
875 filelines.push_back(
"batch_shave 0.25" );
876 filelines.push_back(
"ramp_repack_min 1 0.00001" );
877 filelines.push_back(
"accept_to_best" );
881 filelines.push_back(
"ramp_repack_min 0.02 0.01" );
882 filelines.push_back(
"ramp_repack_min 0.250 0.01" );
883 filelines.push_back(
"batch_shave 0.25" );
884 filelines.push_back(
"ramp_repack_min 0.550 0.01" );
885 filelines.push_back(
"ramp_repack_min 1 0.00001" );
886 filelines.push_back(
"accept_to_best" );
893 for( i =0; i< filelines.size(); i++ ){
895 TR.Debug << line << std::endl;
899 if ( tokens.size() > 0 ) {
903 if (tokens.size() > 1) {newcmd.
param1 = atof(tokens[2].c_str()); newcmd.
nparams = 1;}
904 if (tokens.size() > 2) {newcmd.
param2 = atof(tokens[3].c_str()); newcmd.
nparams = 2;}
905 if (tokens.size() > 3) {newcmd.
param3 = atof(tokens[4].c_str()); newcmd.
nparams = 3;}
906 if (tokens.size() > 4) {newcmd.
param4 = atof(tokens[5].c_str()); newcmd.
nparams = 4;}
915 using namespace ObjexxFCL;
917 std::vector< std::string > filelines;
920 runtime_assert( standard_repeats > 0 );
921 if( script_file ==
"" ){
922 TR <<
"================== Using default script ==================" << std::endl;
923 filelines.push_back(
"repeat " + string_of( standard_repeats ) );
924 filelines.push_back(
"ramp_repack_min 0.02 0.01 1.0" );
925 filelines.push_back(
"ramp_repack_min 0.250 0.01 0.5" );
926 filelines.push_back(
"ramp_repack_min 0.550 0.01 0.0" );
927 filelines.push_back(
"ramp_repack_min 1 0.00001 0.0" );
928 filelines.push_back(
"accept_to_best" );
929 filelines.push_back(
"endrepeat " );
930 }
else if (script_file ==
"NO CST RAMPING"){
931 TR <<
"================== Using default script ==================" << std::endl;
932 filelines.push_back(
"repeat " + string_of( standard_repeats ) );
933 filelines.push_back(
"ramp_repack_min 0.02 0.01 1.0" );
934 filelines.push_back(
"ramp_repack_min 0.250 0.01 1.0" );
935 filelines.push_back(
"ramp_repack_min 0.550 0.01 1.0" );
936 filelines.push_back(
"ramp_repack_min 1 0.00001 1.0" );
937 filelines.push_back(
"accept_to_best" );
938 filelines.push_back(
"endrepeat " );
941 std::ifstream infile( script_file.c_str() );
942 TR.Debug <<
"================== Reading script file: ==================" << std::endl;
943 if (!infile.good()) {
944 utility_exit_with_message(
"[ERROR] Error opening script file '" + script_file +
"'" );
946 while( getline(infile,line) ) {
947 filelines.push_back( line );
957 for( i =0; i< filelines.size(); i++ ){
959 TR.Debug << line << std::endl;
963 if ( tokens.size() > 0 ) {
967 if (tokens.size() > 1) {newcmd.
param1 = atof(tokens[2].c_str()); newcmd.
nparams = 1;}
968 if (tokens.size() > 2) {newcmd.
param2 = atof(tokens[3].c_str()); newcmd.
nparams = 2;}
969 if (tokens.size() > 3) {newcmd.
param3 = atof(tokens[4].c_str()); newcmd.
nparams = 3;}
970 if (tokens.size() > 4) {newcmd.
param4 = atof(tokens[5].c_str()); newcmd.
nparams = 4;}
1003 return sizeof (
SRelaxPose ) + current_struct->mem_footprint() + start_struct->mem_footprint() + best_struct->mem_footprint() + (best_score_log.size()+curr_score_log.size())*
sizeof(
core::Real);
1009 std::vector < SilentStructOP > & input_structs,
1013 using namespace basic::options;
1014 using namespace core::scoring;
1015 using namespace core::conformation;
1016 using namespace core::pack;
1017 using namespace core::pack::task;
1018 using namespace core::kinematics;
1019 using namespace protocols;
1031 TR.Debug <<
"================== RelaxScriptBatchRelax: " <<
script_.size() <<
" ===============================" << std::endl;
1032 TR.Info <<
"BatchRelax: Size: " << input_structs.size() <<
" Scriptlength: " <<
script_.size() << std::endl;
1036 if ( input_structs.size() < 1 )
return;
1044 bool do_rama_repair =
ramady_;
1045 if( !
ramady_force_ && numeric::random::uniform() <= 0.1 ) do_rama_repair =
false;
1050 std::vector < SRelaxPose > relax_decoys;
1052 for(
core::Size i = 0; i < input_structs.size(); ++i ){
1053 TR.Debug <<
"iClock" << clock() << std::endl;
1057 input_structs[i]->fill_pose( pose );
1058 if ( input_csts ) pose.constraint_set( input_csts );
1060 if( !pose.is_fullatom() ){
1061 TR.Debug <<
"Switching struct to fullatom" << std::endl;
1069 new_relax_decoy.
active =
true;
1070 new_relax_decoy.
initial_score = (input_structs[i])->get_energy(
"censcore");
1077 new_relax_decoy.
best_score = (*local_scorefxn)(pose);
1091 new_relax_decoy.
current_struct->copy_scores( *(input_structs[i]) );
1092 new_relax_decoy.
start_struct->copy_scores( *(input_structs[i]) );
1093 new_relax_decoy.
best_struct->copy_scores( *(input_structs[i]) );
1095 TR.Trace <<
"Fillstruct: " << new_relax_decoy.
best_score << std::endl;
1098 TR.Trace <<
"SRelaxPose mem: " << new_relax_decoy.
mem_footprint() << std::endl;
1100 relax_decoys.push_back( new_relax_decoy );
1108 pack_full_repack_->score_function(local_scorefxn);
1113 bool const repack = basic::options::option[ basic::options::OptionKeys::relax::chi_move]();
1116 if ( !basic::options::option[ basic::options::OptionKeys::relax::chi_move].user() ) {
1117 for (
Size pos = 1; pos <= pose.total_residue(); pos++ ) {
1118 allow_repack[ pos ] = local_movemap->get_chi( pos );
1122 task_->initialize_from_command_line().restrict_to_repacking().restrict_to_residues(allow_repack);
1123 task_->or_include_current(
true );
1129 (*local_scorefxn)( pose );
1142 relax_decoys.reserve( relax_decoys.size() );
1144 TR.Debug <<
"BatchRelax mem: " << total_mem << std::endl;
1149 int repeat_count=-1;
1150 int total_repeat_count = 0;
1157 TR.Debug <<
"Command: " << cmd.
command << std::endl;
1159 if( cmd.
command ==
"repeat" ){
1160 if( cmd.
nparams < 1 ){ utility_exit_with_message(
"ERROR: Syntax: " + cmd.
command +
"<number_of_repeats> " ); }
1165 if( cmd.
command ==
"endrepeat" ){
1166 TR.Debug <<
"CMD: Repeat: " << repeat_count << std::endl;
1168 total_repeat_count ++ ;
1169 if( repeat_count <= 0 ){}
1175 if( cmd.
nparams < 1 ){ utility_exit_with_message(
"More parameters expected after : " + cmd.
command ); }
1177 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1178 relax_decoys[index].current_struct->fill_pose( pose );
1179 pose.dump_pdb(
"dump_" + right_string_of( index, 4,
'0' ) +
"_" + right_string_of( (
int) cmd.
param1, 4,
'0' ) );
1183 if( cmd.
command ==
"repack" ){
1184 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1185 if ( !relax_decoys[index].active )
continue;
1186 relax_decoys[index].current_struct->fill_pose( pose );
1187 if ( input_csts ) pose.constraint_set( input_csts );
1188 pack_full_repack_->apply( pose );
1190 relax_decoys[index].current_score = score;
1191 relax_decoys[index].current_struct->fill_struct( pose );
1197 if( cmd.
nparams < 1 ){ utility_exit_with_message(
"More parameters expected after : " + cmd.
command ); }
1199 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1200 if ( !relax_decoys[index].active )
continue;
1201 relax_decoys[index].current_struct->fill_pose( pose );
1202 if ( input_csts ) pose.constraint_set( input_csts );
1205 relax_decoys[index].current_score = score;
1206 relax_decoys[index].current_struct->fill_struct( pose );
1212 if( cmd.
command.substr(0,5) ==
"scale" ){
1215 local_scorefxn->set_weight( scale_param, full_weights[ scale_param ] * cmd.
param1 );
1218 if( cmd.
command.substr(0,6) ==
"rscale" ){
1221 local_scorefxn->set_weight( scale_param, full_weights[ scale_param ] * ((cmd.
param2 - cmd.
param1 ) * numeric::random::uniform() + cmd.
param1 ));
1224 if( cmd.
command.substr(0,6) ==
"switch" ){
1226 if( cmd.
command.substr(7) ==
"torsion" ) {
1227 TR <<
"Using AtomTreeMinimizer" << std::endl;
1229 }
else if( cmd.
command.substr(7) ==
"cartesian" ) {
1230 TR <<
"Using CartesianMinimizer" << std::endl;
1235 if( cmd.
command.substr(0,6) ==
"weight" ){
1238 local_scorefxn->set_weight( scale_param, cmd.
param1 );
1240 full_weights[ scale_param ] = cmd.
param1;
1243 if( cmd.
command ==
"show_weights" ){
1244 local_scorefxn->show(
TR, pose);
1247 if( cmd.
command ==
"ramp_repack_min" ){
1248 if( cmd.
nparams < 2 ){ utility_exit_with_message(
"More parameters expected after : " + cmd.
command ); }
1252 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1254 clock_t starttime = clock();
1255 if ( !relax_decoys[index].active )
continue;
1256 relax_decoys[index].current_struct->fill_pose( pose );
1257 if ( input_csts ) pose.constraint_set( input_csts );
1258 if( total_repeat_count > 1 && repeat_count > 2 ){
1260 if( do_rama_repair ){
1266 pack_full_repack_->apply( pose );
1268 relax_decoys[index].current_score = (*local_scorefxn)(pose);
1269 relax_decoys[index].current_struct->fill_struct( pose );
1271 clock_t endtime = clock();
1272 TR.Debug <<
"time:" << endtime - starttime <<
" Score: " << relax_decoys[index].current_score << std::endl;
1273 }
catch ( utility::excn::EXCN_Base& excn ) {
1274 std::cerr <<
"Ramp_repack_min exception: " << std::endl;
1275 excn.show( std::cerr );
1277 relax_decoys[index].active =
false;
1279 TR <<
"Throwing out one structure due to scoring problems!" << std::endl;
1280 pose.scoring_end(*local_scorefxn);
1285 if( cmd.
command ==
"batch_shave" ){
1286 if( cmd.
nparams < 1 ){ utility_exit_with_message(
"More parameters expected after : " + cmd.
command ); }
1288 if( (reduce_factor <= 0) || (reduce_factor >= 1.0) ){ utility_exit_with_message(
"Parameter after : " + cmd.
command +
" should be > 0 and < 1 " ); }
1290 TR.Debug <<
"SHAVE FACTOR: " << reduce_factor << std::endl;
1292 std::vector < core::Real > energies;
1293 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1294 if ( !relax_decoys[index].active )
continue;
1295 TR.Debug <<
"SHAVE: " << relax_decoys[index].current_score << std::endl;
1296 energies.push_back( relax_decoys[index].current_score );
1297 TR.Debug << relax_decoys[index].current_score << std::endl;
1300 if ( energies.size() < 1 ){
1301 TR.Debug <<
"ERROR: Cannot shave off structures - there are not enough left" << std::endl;
1305 std::sort( energies.begin(), energies.end() );
1307 TR.Debug <<
"Energies: cutoff index " << cutoff_index << std::endl;
1308 core::Real cutoff_energy = energies[ cutoff_index ];
1309 TR.Debug <<
"Energies: cutoff " << cutoff_energy << std::endl;
1310 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1311 if ( !relax_decoys[index].active )
continue;
1312 TR.Debug <<
"Shaving candidate: " << index <<
" " << relax_decoys[index].current_score <<
" " << cutoff_energy << std::endl;
1313 if ( relax_decoys[index].current_score > cutoff_energy ) relax_decoys[index].active =
false;
1318 if( cmd.
command ==
"accept_to_best" ){
1321 std::vector < core::Real > energies;
1323 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1324 if ( !relax_decoys[index].active )
continue;
1325 relax_decoys[index].current_struct->fill_pose( pose );
1326 if ( input_csts ) pose.constraint_set( input_csts );
1329 score = (*local_scorefxn)( pose );
1330 }
catch ( utility::excn::EXCN_Base& excn ) {
1331 std::cerr <<
"Accept_to_best scoring exception: " << std::endl;
1332 excn.show( std::cerr );
1334 relax_decoys[index].active =
false;
1336 TR <<
"Throwing out one structure due to scoring problems!" << std::endl;
1337 pose.scoring_end(*local_scorefxn);
1340 TR.Debug <<
"Comparison: " << score <<
" " << relax_decoys[index].best_score << std::endl;
1342 if( ( score < relax_decoys[index].best_score) || (relax_decoys[index].accept_count == 0) ){
1343 relax_decoys[index].best_score = score;
1344 relax_decoys[index].best_struct->fill_struct( pose );
1347 relax_decoys[index].best_struct->fill_pose( pose_check );
1349 core::Real score_check = (*local_scorefxn)( pose_check );
1350 TR.Debug <<
"Sanity: "<< score <<
" == " << score_check << std::endl;
1357 TR <<
"MRP: " << index <<
" " << relax_decoys[index].accept_count <<
" " << score <<
" " << relax_decoys[index].best_score <<
" "
1363 TR <<
"MRP: " << index <<
" " << relax_decoys[index].accept_count <<
" " << score <<
" " << relax_decoys[index].best_score <<
" "
1368 TR <<
"MRP: " << index <<
" " << relax_decoys[index].accept_count <<
" " << score <<
" " << relax_decoys[index].best_score <<
" "
1372 relax_decoys[index].curr_score_log.push_back( score );
1373 relax_decoys[index].accept_count ++ ;
1374 energies.push_back( relax_decoys[index].best_score );
1379 if ( energies.size() < 1 ){
1380 TR.Debug <<
"Cannot shave off structures - there are not enough left" << std::endl;
1383 std::sort( energies.begin(), energies.end() );
1385 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1386 if ( !relax_decoys[index].active )
continue;
1387 if ( relax_decoys[index].best_score > cutoff_energy ) relax_decoys[index].active =
false;
1393 utility_exit_with_message(
"EXIT INVOKED FROM SEQUENCE RELAX SCRIPT" );
1397 utility_exit_with_message(
"Unknown command: " + cmd.
command );
1400 TR.Debug <<
"CMD: " << cmd.
command <<
" Rep_Wght:"
1407 input_structs.clear();
1409 for(
core::Size index=0; index < relax_decoys.size(); ++ index ){
1410 relax_decoys[index].best_struct->fill_pose( pose );
1411 if ( input_csts ) pose.constraint_set( input_csts );
1418 TR.Trace <<
"BRELAXRMS: " << rms <<
" " << gdtmm << std::endl;
1421 core::Real score = (*local_scorefxn)( pose );
1422 TR <<
"BRELAX: Rms: "<< rms
1423 <<
" CenScore: " << relax_decoys[index].initial_score
1424 <<
" CenRMS: " << relax_decoys[index].initial_rms
1425 <<
" FAScore: " << score
1426 <<
" Check: " << relax_decoys[index].best_score
1427 <<
" Acc: " << relax_decoys[index].accept_count
1428 <<
" Go: " << (relax_decoys[index].active ?
" 1" :
" 0") << std::endl;
1430 if ( !relax_decoys[index].active )
continue;
1435 new_struct->fill_struct( pose );
1436 new_struct->copy_scores( *(relax_decoys[index].start_struct) );
1437 new_struct->energies_from_pose( pose );
1438 new_struct->add_energy(
"rms", rms, 1.0 );
1439 new_struct->add_energy(
"gdtmm", gdtmm, 1.0 );
1440 input_structs.push_back( new_struct );
1447 using namespace core::conformation;
1451 TR <<
"turning off DNA bb and chi move" << std::endl;
1452 mm->set_bb( i,
false );
1453 mm->set_chi( i,
false );