37 #include <utility/vector1.fwd.hh>
38 #include <utility/pointer/ReferenceCount.hh>
39 #include <numeric/numeric.functions.hh>
42 #include <basic/Tracer.hh>
43 #include <basic/options/option.hh>
44 #include <basic/options/keys/fold_cst.OptionKeys.gen.hh>
45 #include <basic/options/keys/constraints.OptionKeys.gen.hh>
64 #include <utility/vector1.hh>
68 static basic::Tracer
tr(
"protocols.abinitio.foldconstraints",basic::t_info);
77 using namespace basic::options;
78 using namespace basic::options::OptionKeys;
80 option.add_relevant( constraints::cst_weight );
81 option.add_relevant( fold_cst::no_minimize );
82 option.add_relevant( fold_cst::force_minimize );
83 option.add_relevant( fold_cst::seq_sep_stages );
84 option.add_relevant( fold_cst::reramp_cst_cycles );
85 option.add_relevant( fold_cst::reramp_start_cstweight );
86 option.add_relevant( fold_cst::reramp_iterations );
87 option.add_relevant( fold_cst::skip_on_noviolation_in_stage1 );
88 option.add_relevant( fold_cst::stage1_ramp_cst_cycle_factor );
89 option.add_relevant( fold_cst::stage2_constraint_threshold );
90 option.add_relevant( fold_cst::ignore_sequence_seperation );
91 option.add_relevant( fold_cst::no_recover_low_at_constraint_switch );
105 ) :
ClassicAbinitio( brute_move_small, brute_move_large, smooth_move_small, dummy ),
118 constraint_weight_( 1.0 ), run_( 0 )
159 using namespace basic::options;
160 using namespace basic::options::OptionKeys;
165 if ( option[ OptionKeys::fold_cst::seq_sep_stages ].user() ) {
166 if ( option[ OptionKeys::fold_cst::seq_sep_stages ]().
size() != 3 ) {
167 utility_exit_with_message(
"option seq_sep_stages requires exact 3 values!!!");
169 seq_sep_stage1_ = option[ OptionKeys::fold_cst::seq_sep_stages ]()[ 1 ];
170 seq_sep_stage3_ = option[ OptionKeys::fold_cst::seq_sep_stages ]()[ 2 ];
171 seq_sep_stage4_ = option[ OptionKeys::fold_cst::seq_sep_stages ]()[ 3 ];
191 return static_cast< Size >( std::min( factor, 1.0 ) *
total_res );
197 tr.Debug <<
"active constraints \n";
203 using namespace basic::options;
205 tr.Info <<
"max_seq_sep: " << setting << std::endl;
208 if ( !option[ OptionKeys::fold_cst::no_recover_low_at_constraint_switch ]() ) {
215 }
else if ( !option[ OptionKeys::fold_cst::force_minimize ] )
return;
226 using namespace basic::options;
227 using namespace basic::options::OptionKeys;
229 core::Real const cycle_factor( option[ fold_cst::stage1_ramp_cst_cycle_factor ] );
231 int total_cycles = 0;
244 for (
Size j = 1; j <= cycles; ++j, ++total_cycles ) {
247 trial->apply( pose );
278 if ( numeric::mod( j, (
Size) 50 ) == 0 ) {
282 trial->apply( pose );
300 tr.Debug <<
"current noe_fact is " << noe_fact << std::endl;
311 tr.Info <<
" Constraint threshold violated: " << total_cst <<
" (limit: " <<
constraint_threshold_ <<
" abandon decoy!" << std::endl;
330 tr.Debug <<
"current noe_fact is " << noe_fact << std::endl;
350 using namespace scoring;
352 tr.Debug <<
"switch constraints on..." << std::endl;
363 tr.Debug <<
"introduce MaxSeqSep Filter for constraints \n";
376 if ( orig_constraints ) {
383 return "FoldConstraints";
388 tr.Info <<
"setup basic minmove" << std::endl;
408 tr.Debug <<
"start minimization... " << std::endl;
414 tr.Debug <<
"done with minimization! " << std::endl;
415 if (
tr.Info.visible() ) {
416 tr.Info <<
"minimized: ";
418 tr.Info << std::endl;