36 #include <numeric/xyzVector.hh>
46 #include <utility/vector0.hh>
47 #include <utility/vector1.hh>
48 #include <utility/tag/Tag.hh>
49 #include <basic/Tracer.hh>
58 namespace protein_interface_design {
61 using namespace protocols::moves;
63 static basic::Tracer
TR(
"protocols.protein_interface_design.movers.LoopFinder" );
99 interface_(interface),
102 min_length_(min_length),
103 max_length_(max_length),
106 ca_ca_distance_( ca_ca_distance ),
107 iface_cutoff_(iface_cutoff)
121 using namespace protocols::loops;
127 iface.calculate( pose );
143 if( all_loops->size() > 0 ) {
146 if( pose.
residue( loop->start() ).is_upper_terminus() || pose.
residue( loop->stop() ).is_lower_terminus() )
continue;
154 for(
core::Size i = loop->start(); i <= loop->stop(); ++i ) {
157 if( !iface.is_interface(i) )
continue;
161 TR.Debug <<
"residue : " <<
resnum_ <<
" was specified" << std::endl;
163 TR.Debug<<
"residue is within " <<
ca_ca_distance_ <<
" of the specified target chain(s)" << std::endl;
166 TR.Debug<<
"residue is not within " <<
ca_ca_distance_ <<
" of this loop residue " << std::endl;
171 ch1ch2_loops->add_loop( *loop,
mingap_ );
182 else TR <<
"Neither chain1 nor chain2 specified for loop finding. No loops added!" << std::endl;
185 TR.Debug <<
"ch1ch2 loops " << *ch1ch2_loops << std::endl;
186 TR.Debug <<
"ch1 loops " << *ch1_loops << std::endl;
187 TR.Debug <<
"ch2 loops " << *ch2_loops << std::endl;
194 TR <<
"No loops found." << std::endl;
207 ch1_ = tag->getOption<
bool>(
"ch1", 0 );
208 ch2_ = tag->getOption<
bool>(
"ch2", 1 );
212 runtime_assert( ch1_ || ch2_ );
215 if( tag->hasOption(
"resnum" ) || ( tag->hasOption(
"pdb_num" ) )) {
217 TR<<
"user specified residue " <<
resnum_ <<
" for distance cutoff" << std::endl;
222 TR<<
"no target residue has been specified"<< std::endl;
229 data.
add(
"loops",
"found_loops",
loops_ );
231 TR <<
"LoopFinder mover: interface="<<
interface_<<
" iface_cutoff="<<iface_cutoff_<<
" ch1="<<ch1_<<
" ch2="<<ch2_<<
" min_length="<<min_length_<<
232 " max_length="<<max_length_<< std::endl;