28 #include <boost/foreach.hpp>
34 #include <utility/tag/Tag.hh>
46 #define foreach BOOST_FOREACH
48 #include <basic/Tracer.hh>
53 #include <utility/vector0.hh>
54 #include <utility/vector1.hh>
62 namespace protein_interface_design {
67 using namespace protocols::moves;
69 static basic::Tracer
TR(
"protocols.protein_interface_design.movers.MapHotspot" );
95 using namespace core::scoring;
96 using namespace utility;
101 TR<<
"skipping minimization b/c no scorefxn was defined"<<std::endl;
105 TR<<
"imposing hotspot foldtree "<<hotspot_ft;
112 minrb_last[ num_jump ] =
true;
114 if( num_jump == 1 )
return;
116 minrb_all[ num_jump ] =
true;
127 char const residue_type( pose.
residue( residue_num ).
name1() );
128 residues += residue_type;
131 std::ostringstream strm;
140 using namespace core::kinematics;
141 using namespace core::conformation;
142 using namespace core::chemical;
143 Jump const saved_jump( src.
jump( jump ) );
148 foreach(
Edge const edge, saved_ft ){
150 new_ft.add_edge( edge );
158 using namespace core::chemical;
172 using namespace core::pack::task;
173 using namespace core::pack::rotamer_set;
174 using namespace core::pack::task::operation;
175 using namespace core::scoring;
182 tf.push_back( rotamer_exp_operation );
183 tf.push_back( restrict_to_rep_operation );
184 tf.push_back( init_from_commandline );
185 PackerTaskCOP ptask( tf.create_task_and_apply_taskoperations( pose ) );
188 rotset->set_resid( hotspot_resnum );
190 rotset->build_rotamers( pose, *score12, *ptask, packer_graph,
false );
191 TR<<
"Created rotamer set for residue "<<hotspot_resnum<<
"with explosion="<<explosion<<std::endl;
208 using namespace core::pack::task;
209 using namespace core::pack::rotamer_set;
210 using namespace core::chemical;
211 using namespace core::scoring;
220 for( Rotamers::const_iterator rot_it = rotset->begin(); rot_it!=rotset->end(); ++rot_it, ++rotset_size ) {};
221 TR<<
"Iterating over "<<rotset_size<<
" rotamers for residue "<<residue_type1<<
" in jump #"<<jump_number<<std::endl;
227 for( Rotamers::const_iterator rot_it = rotset->begin(); rot_it!=rotset->end(); ++rot_it ){
228 TR<<
"Current rotamer: "<<curr_rotamer_num++<<
'\n';
233 bool pass_filter(
true );
234 for( SizeFilter_map::const_iterator jump_filter_it(
jump_filters_.begin() ); jump_filter_it!=
jump_filters_.end(); ++jump_filter_it ){
235 if( jump_filter_it->first <= jump_number ){
236 pass_filter = jump_filter_it->second->apply( curr_pose );
237 if( !pass_filter )
break;
243 TR.Debug <<
"Current lowE=" <<
total_score <<
" Prev lowE=" << lowest_energy << std::endl;
244 best_pose = curr_pose;
248 curr_pose = saved_pose_2;
250 if( lowest_energy >= 10000 )
251 TR<<
"No optimal pose found in jump "<<jump_number<<
". Consider relaxing filters."<<std::endl;
253 curr_pose = best_pose;
254 if( jump_number == start_pose.
num_jump() )
257 GenerateMap( start_pose, curr_pose, jump_number + 1 );
259 curr_pose = saved_pose_1;
284 using namespace utility::tag;
290 foreach(
TagPtr const btag, branch_tags ){
292 if( btag_name ==
"Jumps" ){
294 runtime_assert( jump_tags.size() == pose.
num_jump() );
295 foreach(
TagPtr j_tag, jump_tags ){
297 bool const jump_fine( jump <= pose.
num_jump() );
298 if( !jump_fine ) TR.Error<<
"Jump "<<jump<<
" is larger than the number of jumps in pose="<<pose.
num_jump()<<std::endl;
299 runtime_assert( jump_fine );
302 protocols::filters::Filters_map::const_iterator find_filter( filters.find( filter_name ));
303 bool const filter_found( find_filter != filters.end() );
304 if( !filter_found ) TR.Error<<
"Filter "<<filter_name<<
" not found in MapHotspot parsing"<<std::endl;
305 runtime_assert( filter_found );
308 protocols::moves::Movers_map::const_iterator find_mover( movers.find( mover_name ) );
309 bool const mover_found( find_mover != movers.end() );
310 if( !mover_found ) TR.Error<<
"Mover "<<mover_name<<
" not found in MapHotspot parsing"<<std::endl;
311 runtime_assert( mover_found );
316 if( !data.
has(
"scorefxns", scorefxn_name ) ){
317 TR<<
"Scorefxn "<<scorefxn_name<<
" not found. Will not minimize sidechain.";
325 TR.Warning<<
"Unrecognized branch tag from MapHotspot: "<<btag_name<<std::endl;