25 #include <basic/Tracer.hh>
26 #include <basic/options/option.hh>
27 #include <basic/options/keys/OptionKeys.hh>
28 #include <basic/options/keys/abinitio.OptionKeys.gen.hh>
29 #include <basic/options/keys/rigid.OptionKeys.gen.hh>
30 #include <numeric/random/random.hh>
31 #include <numeric/xyzVector.hh>
32 #include <utility/exit.hh>
33 #include <utility/vector1.hh>
59 static basic::Tracer
TR(
"protocols.nonlocal.util");
62 using namespace basic::options;
63 using namespace basic::options::OptionKeys;
75 assert(threshold > 0);
78 violated_residues.push_back(1);
83 double distance = prev_xyz.distance(curr_xyz);
84 if (distance > threshold) {
86 violated_residues.push_back(i);
92 for (
Size i = 2; i <= violated_residues.size(); ++i) {
93 const Size prev_start = violated_residues[i - 1];
94 const Size curr_start = violated_residues[i];
95 const Size prev_stop = curr_start - 1;
98 Loop chunk(prev_start, prev_stop);
99 chunks->add_loop(chunk);
100 TR.Debug <<
"Added chunk " << chunk.
start() <<
" " << chunk.
stop() << std::endl;
117 combined[combined.
size()].set_stop(num_residues - min_chunk_sz + 1);
127 using namespace basic::options;
128 using namespace basic::options::OptionKeys;
131 assert(min_chunk_sz <= max_chunk_sz);
136 decompose(min_chunk_sz, max_chunk_sz, *i, &pieces);
139 output->push_back(*j);
154 if (loop.
length() <= max_chunk_sz) {
155 pieces->push_back(loop);
160 Loop candidate_left(loop.
start(), midpoint - 1);
161 Loop candidate_right(midpoint, loop.
stop());
164 if (candidate_left.length() < min_chunk_sz ||
165 candidate_right.length() < min_chunk_sz) {
166 pieces->push_back(loop);
172 Size pivot = numeric::random::random_range(
173 loop.
start() + min_chunk_sz - 1,
174 loop.
stop() - min_chunk_sz + 1);
183 decompose(min_chunk_sz, max_chunk_sz, right, &pieces_right);
186 std::copy(pieces_left.begin(), pieces_left.end(), std::back_inserter(*pieces));
187 std::copy(pieces_right.begin(), pieces_right.end(), std::back_inserter(*pieces));
194 using namespace basic::options;
195 using namespace basic::options::OptionKeys;
198 assert(aligned_regions);
199 assert(unaligned_regions);
201 Size pose_space_num_residues = 0;
202 for (
Size ii = 1; ii <= alignment.
length(); ++ii)
203 pose_space_num_residues = std::max(pose_space_num_residues, alignment.
sequence(1)->resnum(ii));
206 pose_space_num_residues, unaligned_region_min_sz, alignment, unaligned_regions);
207 *aligned_regions = unaligned_regions->invert(pose_space_num_residues);
212 using namespace basic::options;
213 using namespace basic::options::OptionKeys;
223 JobDistributor* jd2 = JobDistributor::get_instance();
224 InnerJobCOP inner = jd2->current_job()->inner_job();
233 using namespace core::scoring;
236 return rsd_energies[ scoretype ];