42 #include <basic/Tracer.hh>
45 #include <utility/vector1.hh>
51 #include <utility/vector0.hh>
63 using namespace core::conformation;
68 static basic::Tracer
TR(
"protocols.toolbox.disulfide_util" );
78 disulfides.push_back(std::make_pair(lower_res,upper_res));
119 for(
vector1<pair<Size, Size> >::const_iterator
120 disulf(disulfides.begin()), end_disulf(disulfides.end());
121 disulf != end_disulf; ++disulf)
123 is_disulf[disulf->first] =
true;
124 is_disulf[disulf->second] =
true;
128 TR.Error <<
"Disulfide bond required between " << disulf->first
129 <<
" and " << disulf->second <<
"." << std::endl;
137 packer_task->initialize_from_command_line().or_include_current(
true );
138 packer_task->restrict_to_repacking();
143 if( !is_disulf[i] ) {
144 packer_task->nonconst_residue_task(i).prevent_repacking();
148 if( !packer_score ) {
156 if( !minimizer_score ) {
157 minimizer_score = packer_score;
161 for(
vector1<pair<Size, Size> >::const_iterator
162 disulf(disulfides.begin()), end_disulf(disulfides.end());
163 disulf != end_disulf; ++disulf)
165 packer_task->nonconst_residue_task(disulf->first).and_extrachi_cutoff( 0 );
166 packer_task->nonconst_residue_task(disulf->second).and_extrachi_cutoff( 0 );
167 packer_task->nonconst_residue_task(disulf->first).or_ex1_sample_level(
169 packer_task->nonconst_residue_task(disulf->second).or_ex1_sample_level(
174 (*packer_score)(pose);
177 using namespace core::optimization;
183 (*minimizer_score)( pose );