19 #include <basic/Tracer.hh>
28 #include <utility/tag/Tag.hh>
29 #include <utility/string_util.hh>
32 #include <boost/foreach.hpp>
35 #include <utility/vector0.hh>
36 #include <utility/excn/Exceptions.hh>
37 #include <utility/vector1.hh>
39 #define foreach BOOST_FOREACH
42 namespace ligand_docking {
44 static basic::Tracer
interface_builder_tracer(
"protocols.ligand_docking.ligand_options.InterfaceBuilder", basic::t_debug);
54 ligand_areas_(that.ligand_areas_),
55 extension_window_(that.extension_window_)
66 if ( tag->hasOption(
"extension_window") ){
69 if (! tag->hasOption(
"ligand_areas"))
throw utility::excn::EXCN_RosettaScriptsOption(
"InterfaceBuilders need at least one ligand area to build around");
74 foreach(
std::string ligand_area_string, ligand_area_strings){
84 interface_builder_tracer.Debug<<
"built interface: "<< interface<< std::endl;
92 LigandAreas::const_iterator ligand_area=
ligand_areas_.begin();
94 char const & chain= ligand_area->first;
99 for(; ligand_residue_id <=
end; ++ligand_residue_id){
101 interface[ligand_residue_id].chain_id= chain_id;
102 interface[ligand_residue_id].chain= chain;
107 interface_builder_tracer.Debug <<
"interface: " <<
interface << std::endl;
126 core::Size const potential_interface_residue_id,
133 core::Size const & chain_id= interface[ligand_interface_residue_id].chain_id;
134 core::Size const & chain= interface[ligand_interface_residue_id].chain;
138 interface[potential_interface_residue_id].chain_id= chain_id;
139 interface[potential_interface_residue_id].chain= chain;
148 core::Size const potential_interface_neighbor_atom_id= potential_interface_residue.
nbr_atom();
149 core::Vector const potential_interface_vector= potential_interface_residue.
xyz(potential_interface_neighbor_atom_id);
151 LigandAreas::const_iterator found=
ligand_areas_.find(chain);
155 double cutoff = ligand_area->add_nbr_radius_ ?
156 potential_interface_residue.
nbr_radius() + ligand_area->cutoff_ :
157 ligand_area->cutoff_;
159 if (ligand_area->all_atom_mode_){