20 #include <basic/Tracer.hh>
49 #include <basic/options/option.hh>
52 #include <numeric/random/random.hh>
60 #include <basic/options/keys/edensity.OptionKeys.gen.hh>
61 #include <basic/options/keys/RBSegmentRelax.OptionKeys.gen.hh>
64 #include <utility/vector0.hh>
65 #include <utility/vector1.hh>
73 namespace rbsegment_relax {
75 basic::Tracer
tr(
"protocols.rbsegment_relax.RBSegment.AutoRBRelaxMover");
92 return (
"CCDMoveWrapper");
107 using namespace basic::options;
110 option[ OptionKeys::RBSegmentRelax::rb_scorefxn ]() );
114 nouter_cycles_ = option[ OptionKeys::RBSegmentRelax::nrboutercycles ]();
115 ninner_cycles_ = option[ OptionKeys::RBSegmentRelax::nrbmoves ]();
136 if ( option[ OptionKeys::edensity::mapfile ].user() ) {
146 to_centroid.
apply( pose );
161 bool loops_closed =
false;
166 while( !loops_closed ) {
173 it != it_end; it++ ) {
175 cfm->set_check_ss(
false );
176 cfm->enable_end_bias_check(
false );
177 fragmover.push_back( cfm );
188 float final_chain_break_weight = 1.0;
195 for ( std::vector< protocols::simple_moves::FragmentMoverOP >::const_iterator
196 it = fragmover.begin(),it_end = fragmover.end(); it != it_end; it++ )
209 for (
int j=1; j<=(
int)
rb_chunks_[i].nContinuousSegments(); ++j) {
217 if ( adjLoopN || adjLoopC ) {
221 random_move.
add_mover(seq_shift_move, 0.5);
227 mc_->recover_low( pose );
231 if ( tr.visible() ) {
scorefxn_->show_line( tr.Info , pose ); }
232 tr.Info << std::endl;
235 for(
int n2 = 1; n2 <= (
int)ninner_cycles_; ++n2 ) {
237 temperature *= gamma;
238 mc_->set_temperature( temperature );
242 random_move.
apply(pose);
248 mc_->boltzmann( pose );
251 mc_->recover_low( pose );
252 mc_->show_counters();
259 tr <<
"Loops not closed! ("
261 <<
" > " <<
loops_.
size()*0.5 <<
")" << std::endl;
264 tr <<
"Loops closed! ("
266 <<
" <= " <<
loops_.
size()*0.5 <<
")" << std::endl;
273 fast_relax.
apply( pose );
281 if (maxlen == 0)
return;
283 tr <<
"EXTENDING LOOPS:" << std::endl;
287 if ( ( extend_start == 0 ) && ( extend_stop == 0 ) ) {
288 if ( numeric::random::uniform() > 0.5) extend_start = 1;
289 else extend_stop = 1;
307 tr <<
loops_ << std::endl;