28 #include <utility/tag/Tag.hh>
47 #include <utility/vector1.hh>
56 #include <utility/vector0.hh>
57 #include <basic/Tracer.hh>
61 namespace protein_interface_design {
65 using namespace protocols::moves;
66 using namespace core::chemical;
70 using utility::vector1_int;
75 static basic::Tracer
TR(
"protocols.protein_interface_design.movers.DisulfideMover" );
93 return "DisulfideMover";
106 rb_jump_(dm.rb_jump_)
135 Residue const cyd( restype_set->name_map(
"CYD"),
true );
148 TR.Info <<
"Found " << potential_disulfides.size()
149 <<
" potential disulfide bonds." << endl;
157 for(
vector1< pair<Size,Size> >::const_iterator
158 disulf = potential_disulfides.begin(),
159 end_disulf = potential_disulfides.end();
160 disulf != end_disulf;
163 TR.Debug <<
"Trying disulfide from " << disulf->first
164 <<
" to " << disulf->second << endl;
171 trial_pose->update_residue_neighbors();
177 task_->initialize_from_command_line().or_include_current(
true );
178 task_->restrict_to_repacking();
181 for(
Size i(1); i <= trial_pose->total_residue(); ++i )
183 Residue const& res(trial_pose->residue(i));
184 if( !res.is_protein() )
189 i == disulf->first ||
195 task_->nonconst_residue_task(i).prevent_repacking();
202 for(
core::Size i=1; i<=trial_pose->total_residue(); ++i ) {
203 Residue const& res(trial_pose->residue(i));
205 if ( !trial_pose->residue(i).is_protein() )
continue;
208 i == disulf->first ||
209 i == disulf->second ))
211 mm->set_chi( i,
true );
222 assert(name ==
"CYD");
226 best_pose->energies().total_energy() > trial_pose->energies().total_energy() )
229 best_pose = trial_pose;
248 vector1< pair<Size,Size> > & disulfides )
254 Pose pose(const_pose);
266 end_target = targets.end();
267 target != end_target; ++target)
269 if( find(pairs[1].begin(), pairs[1].
end(), static_cast<int>(*target)) != pairs[1].end() ) {
271 lower_targets.push_back(*target);
273 else if( find(pairs[2].begin(), pairs[2].
end(), static_cast<int>(*target)) != pairs[2].
end() ) {
275 upper_targets.push_back(*target);
278 TR.Debug <<
"Target "<< *target
279 <<
" does not lie on the protein interface." << std::endl;
285 if( lower_targets.empty() )
286 lower_targets = pairs[1];
287 if( upper_targets.empty() )
288 upper_targets = pairs[2];
292 end_lower_target = lower_targets.end();
293 lower_target != end_lower_target; ++lower_target)
296 end_host = upper_targets.end();
297 upper_target != end_host; ++upper_target )
302 disulfides.push_back(std::make_pair(*lower_target,*upper_target));
322 if( tag->hasOption(
"targets") ){
326 using namespace core::scoring;
333 TR<<
"DisulfideMover targeting residues ";