35 #include <utility/exit.hh>
36 #include <utility/vector1.fwd.hh>
37 #include <utility/pointer/ReferenceCount.hh>
38 #include <numeric/numeric.functions.hh>
39 #include <basic/prof.hh>
40 #include <basic/Tracer.hh>
41 #include <basic/options/option.hh>
42 #include <basic/options/keys/fold_cst.OptionKeys.gen.hh>
43 #include <basic/options/keys/jumps.OptionKeys.gen.hh>
44 #include <basic/options/keys/constraints.OptionKeys.gen.hh>
55 #include <utility/vector1.hh>
58 static basic::Tracer
tr(
"protocols.abinitio");
65 using namespace basic;
66 using namespace basic::options;
67 using namespace basic::options::OptionKeys;
76 return static_cast< Size >( std::min( factor, 1.0 ) * total_res );
81 using namespace basic::options;
82 using namespace basic::options::OptionKeys;
83 option.add_relevant( constraints::cst_weight );
84 option.add_relevant( fold_cst::no_minimize );
85 option.add_relevant( fold_cst::force_minimize );
86 option.add_relevant( fold_cst::seq_sep_stages );
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::ignore_sequence_seperation );
90 option.add_relevant( fold_cst::no_recover_low_at_constraint_switch );
91 option.add_relevant( fold_cst::ramp_coord_cst );
114 using namespace basic::options;
115 using namespace basic::options::OptionKeys;
120 if ( option[ OptionKeys::fold_cst::seq_sep_stages ].user() ) {
121 if ( option[ OptionKeys::fold_cst::seq_sep_stages ]().
size() != 3 ) {
122 utility_exit_with_message(
"option seq_sep_stages requires exact 3 values!!!");
124 seq_sep_stage1_ = option[ OptionKeys::fold_cst::seq_sep_stages ]()[ 1 ];
125 seq_sep_stage3_ = option[ OptionKeys::fold_cst::seq_sep_stages ]()[ 2 ];
126 seq_sep_stage4_ = option[ OptionKeys::fold_cst::seq_sep_stages ]()[ 3 ];
140 Real chainbreak_score_1 = option[ jumps::chainbreak_weight_stage1 ]();
141 Real chainbreak_score_2 = option[ jumps::chainbreak_weight_stage2 ]();
142 Real chainbreak_score_3 = option[ jumps::chainbreak_weight_stage3 ]();
143 Real chainbreak_score_4 = option[ jumps::chainbreak_weight_stage4 ]();
155 Real intra_stage_progress ) {
164 setting = 2.5 * intra_stage_progress * 1.0/3;
166 setting = 0.5 * intra_stage_progress * 1.0/3;
167 }
else if ( stage ==
STAGE_4 ) {
168 setting = (1.5*intra_stage_progress+2.5 ) * ( 1.0/3);
183 }
else if ( stage ==
STAGE_2 ) {
187 }
else if ( stage ==
STAGE_4 ) {
190 tr.Debug <<
"replace_scorefxn... sep_fact: " << sep_fact <<
" STAGE " << stage << std::endl;
191 tr.Debug <<
"total number of residues: " << pose.
total_residue() <<
" max. separation in fold-tree " <<
total_res(pose) << std::endl;
197 return static_cast< Size >(
203 using namespace basic::options;
207 bool const bHaveConstraints( pose.
constraint_set()->has_residue_pair_constraints() );
208 bool const bHaveChainbreaks(
topology_broker().has_chainbreaks_to_close() );
210 if (bHaveConstraints)
213 if ( bHaveConstraints || bHaveChainbreaks ) {
214 if ( bHaveConstraints) {
218 tr.Info <<
"max_seq_sep: " << setting << std::endl;
223 if (
tr.Trace.visible())
226 tr.Trace <<
"================ RECOVER LOW (max_seq_sep) ==============" << std::endl;
229 if (bHaveConstraints)
232 if (bHaveChainbreaks) {
249 if (
tr.Trace.visible())
251 tr.Trace << std::endl;
256 if (bHaveConstraints)
259 if (bHaveChainbreaks) {
277 if (bHaveConstraints)
280 if (bHaveChainbreaks) {
321 trial->apply( pose );
359 tr.Debug <<
"introduce MaxSeqSep Filter for constraints" << std::endl;
376 if (orig_constraints)
381 return "ConstraintFragmentSampler";