24 #include <numeric/random/random.hh>
25 #include <utility/exit.hh>
26 #include <utility/string_util.hh>
27 #include <basic/Tracer.hh>
29 #include <utility/tag/Tag.hh>
33 #include <utility/excn/Exceptions.hh>
34 #include <boost/foreach.hpp>
35 #define foreach BOOST_FOREACH
42 namespace ligand_docking {
44 static basic::Tracer
rotates_tracer(
"protocols.ligand_docking.ligand_options.rotates", basic::t_debug);
69 protocols::moves::Mover( that )
96 if ( tag->getName() !=
"Rotates" ){
97 throw utility::excn::EXCN_RosettaScriptsOption(
"This should be impossible");
99 if ( ! tag->hasOption(
"distribution") )
throw utility::excn::EXCN_RosettaScriptsOption(
"'Rotates' mover requires 'distribution' tag");
100 if ( ! tag->hasOption(
"degrees") )
throw utility::excn::EXCN_RosettaScriptsOption(
"'Rotates' mover requires 'degrees' tag");
101 if ( ! tag->hasOption(
"cycles") )
throw utility::excn::EXCN_RosettaScriptsOption(
"'Rotates' mover requires 'cycles' tag");
102 if( tag->hasOption(
"chain") && tag->hasOption(
"chains") )
throw utility::excn::EXCN_RosettaScriptsOption(
"'Rotates' mover cannot have both a 'chain' and a 'chains' tag");
103 if( ! (tag->hasOption(
"chain") || tag->hasOption(
"chains") ) )
throw utility::excn::EXCN_RosettaScriptsOption(
"'Rotates' mover requires either a 'chain' or a 'chains' tag");
106 if( tag->hasOption(
"chain")){
107 chain_strs.push_back( tag->getOption<
std::string>(
"chain") );
109 else if( tag->hasOption(
"chains") ){
111 chain_strs= utility::string_split(chains_str,
',');
127 rotate_info.
cycles = cycles;