38 #include <utility/exit.hh>
39 #include <utility/excn/Exceptions.hh>
40 #include <utility/vector1.fwd.hh>
41 #include <utility/pointer/ReferenceCount.hh>
42 #include <numeric/numeric.functions.hh>
43 #include <basic/prof.hh>
44 #include <basic/Tracer.hh>
45 #include <basic/options/option.hh>
46 #include <basic/options/keys/abinitio.OptionKeys.gen.hh>
47 #include <basic/options/keys/run.OptionKeys.gen.hh>
55 #include <utility/vector1.hh>
57 static basic::Tracer
tr(
"protocols.abinitio");
61 using namespace basic;
62 using namespace basic::options;
63 using namespace basic::options::OptionKeys;
72 using namespace basic::options;
73 using namespace basic::options::OptionKeys;
74 option.add_relevant( OptionKeys::abinitio::increase_cycles );
76 option.add_relevant( OptionKeys::abinitio::skip_stages );
77 option.add_relevant( OptionKeys::abinitio::skip_convergence_check );
78 option.add_relevant( OptionKeys::abinitio::log_frags );
79 option.add_relevant( OptionKeys::abinitio::end_bias );
80 option.add_relevant( OptionKeys::abinitio::symmetry_residue );
81 option.add_relevant( OptionKeys::abinitio::vdw_weight_stage1 );
82 option.add_relevant( OptionKeys::abinitio::override_vdw_all_stages );
83 option.add_relevant( OptionKeys::abinitio::recover_low_in_stages );
84 option.add_relevant( OptionKeys::abinitio::close_chbrk );
92 return find( vec.begin(), vec.end(), query) != vec.end();
99 : topology_broker_( broker ),
100 checkpoints_(
"FragmentSampler")
123 tr.Info <<
"\n===================================================================\n";
125 tr.Info <<
"--------------------------------------------------------------------\n";
126 tr.Info <<
"FragmentSampler: " <<
id2string( stage_id ) << std::endl;
128 clock_t starttime = clock();
134 (this->*cycles)( pose );
138 tr.Info << std::endl;
148 clock_t endtime = clock();
150 if ( option[ basic::options::OptionKeys::run::profile ] ) prof_show();
153 tr.Info <<
"Timeperstep: " << (double(endtime) - starttime )/(CLOCKS_PER_SEC ) << std::endl;
159 using namespace moves;
160 using namespace scoring;
161 using namespace scoring::constraints;
169 if ( option[ OptionKeys::run::dry_run ]() ) {
199 tr.Info <<
"\n===================================================================\n";
200 tr.Info <<
" Finished Abinitio \n";
201 tr.Info << std::endl;
217 return "FragmentSampler";
222 using namespace basic::options;
249 using namespace basic::options;
262 using namespace scoring;
263 using namespace basic::options;
264 using namespace basic::options::OptionKeys;
266 tr.Debug <<
"creating standard scoring functions" << std::endl;
268 if ( option[ OptionKeys::abinitio::stage1_patch ].user() ) {
274 if ( option[ OptionKeys::abinitio::stage2_patch ].user() ) {
280 if ( option[ OptionKeys::abinitio::stage3a_patch ].user() ) {
286 if ( option[ OptionKeys::abinitio::stage3b_patch ].user() ) {
292 if ( option[ OptionKeys::abinitio::stage4_patch ].user() ) {
298 if ( option[ OptionKeys::abinitio::override_vdw_all_stages ] ) {
306 tr.Debug <<
"set score weights for ";
308 else tr.Debug <<
"stage " << (stage <=
STAGE_3a ? stage : ( stage-1 ) ) << ( stage ==
STAGE_3b ?
"b " :
" " );
331 scorefxn->set_weight( type, setting );
336 using namespace basic::options;
338 bQuickTest_ = basic::options::option[ basic::options::OptionKeys::run::test_cycles ]();
343 set_cycles( option[ OptionKeys::abinitio::increase_cycles ] );
352 if ( option[ OptionKeys::abinitio::skip_stages ].user() ) {
353 for ( IntegerVectorOption::const_iterator it = option[ OptionKeys::abinitio::skip_stages ]().begin(),
354 eit = option[ OptionKeys::abinitio::skip_stages ]().
end(); it!=eit; ++it ) {
362 if ( option[ OptionKeys::abinitio::recover_low_in_stages ].user() ) {
363 for ( IntegerVectorOption::const_iterator it = option[ OptionKeys::abinitio::recover_low_in_stages ]().begin(),
364 eit = option[ OptionKeys::abinitio::recover_low_in_stages ]().
end(); it!=eit; ++it ) {
367 else if ( *it == 3 ) {
414 using namespace ObjexxFCL;
426 Size const total_iterations ( nloop1*nloop2 );
429 for (
int lct1 = 1; lct1 <= nloop1; lct1++) {
430 for (
int lct2 = 1; lct2 <= nloop2; lct2++, iteration++ ) {
431 tr.Debug <<
"Loop: " << lct1 <<
" " << lct2 << std::endl;
434 core::Real progress( 1.0* iteration/total_iterations );
439 tr.Debug <<
" Score stage3 loop iteration " << lct1 <<
" " << lct2 << std::endl;
452 Size nloop_stage4 = 3;
453 for (
Size kk = 1; kk <= nloop_stage4; ++kk ) {
460 tr.Debug <<
"finished" << std::endl;
474 tr.Trace <<
"================ RECOVER LOW ==============" << std::endl;
475 mc_->recover_low( pose );
477 tr.Trace << std::endl;
479 tr.Trace <<
"================ RECOVER LOW SKIPPED ===============" << std::endl;
521 if ( numeric::mod( (
int)iteration, 2 ) == 0 || iteration > 7 ) {
534 basic::ProfTag
const FragmentSampler::id2proftag_[] = { basic::STAGE1, basic::STAGE1, basic::STAGE2, basic::STAGE3, basic::STAGE3, basic::STAGE3, basic::STAGE4 };