20 #include <basic/Tracer.hh>
24 #include <numeric/random/random.hh>
26 #include <utility/tag/Tag.hh>
34 #include <utility/vector0.hh>
35 #include <utility/vector1.hh>
36 #include <utility/string_util.hh>
38 static basic::Tracer
tr(
"protocols.moves.MoverContainer");
44 static numeric::random::RandomGenerator
RG(114);
57 for (
Size ii = 0; ii < source.
movers_.size(); ++ii ) {
70 return movers_[index]->get_name();
80 movers_[i]->set_input_pose( pose );
90 movers_[i]->set_native_pose( pose );
96 use_mover_status_( source.use_mover_status_ )
127 tr <<
"Mover failed. Same mover is performed again. " << std::endl;
130 tr <<
"Mover failed. Exit from SequenceMover." << std::endl;
150 return "SequenceMover";
156 return "RandomMover";
170 Real weight_sum(0.0);
172 for(m=0;m<
movers_.size(); m++){
179 Real movechoice =
RG.uniform()*weight_sum;
181 for(m=0;m<
movers_.size(); m++){
182 if(movechoice < sum)
break;
197 nmoves_( source.nmoves_ ),
198 last_proposal_density_ratio_( source.last_proposal_density_ratio_ )
208 return "RandomMover";
217 using namespace protocols::filters;
221 if (tag->hasOption (
"weights"))
222 mover_weights = utility::string_split( tag->getOption<
std::string >(
"weights" ),
',');
225 runtime_assert( mover_weights.size() == 0 || mover_weights.size() == mover_names.size() );
229 for (
core::Size i=1; i<=mover_names.size(); ++i) {
231 core::Real weight = (mover_weights.size() == 0)? 1.0 : std::atof( mover_weights[i].c_str() );
245 next_move_( source.next_move_ )
276 os << mover.
size() <<
" movers are contained in the following order:" << std::endl;
277 for (
Size i=0; i<mover.
size(); ++i ) {
278 os <<
" Mover[" << i+1 <<
"]: " << mover.
get_mover(i) << std::endl;