26 #include <basic/Tracer.hh>
37 #include <utility/tag/Tag.hh>
41 #include <utility/vector0.hh>
42 #include <utility/vector1.hh>
43 #include <numeric/random/random_permutation.hh>
44 #include <boost/foreach.hpp>
47 #include <utility/excn/Exceptions.hh>
49 #define foreach BOOST_FOREACH
52 namespace ligand_docking {
54 static basic::Tracer
grow_ligand_tracer(
"protocols.ligand_docking.GrowLigand", basic::t_debug);
89 protocols::moves::Mover( that ),
91 fragments_(that.fragments_)
103 grow_ligand_tracer<< fragment_types.size()<<
" fragment_types"<< std::endl;
107 grow_ligand_tracer<<
"frag_name: "<< fragment_type->name()<< std::endl;
133 if ( tag->getName() !=
"GrowLigand" ) {
134 grow_ligand_tracer <<
" received incompatible Tag " << tag << std::endl;
138 if ( tag->hasOption(
"chain") ) {
141 throw utility::excn::EXCN_RosettaScriptsOption(
"HeavyAtom filter needs a 'chain' option");
149 assert(
chain_.size() == 1);
159 core::Size grow_from = numeric::random::random_element(unconnected_residues);
163 bool const build_ideal_geometry=
true;
164 bool const start_new_chain =
false;
165 bool const lookup_bond_length =
true;
169 build_ideal_geometry,
172 grow_from_connection,
186 grow_ligand_tracer<<
"atom_type, res_name, connection"<<
" "<< (*begin)->name() <<
" "<< std::endl;