20 #include <basic/options/option.hh>
21 #include <basic/options/keys/OptionKeys.hh>
22 #include <basic/options/keys/in.OptionKeys.gen.hh>
29 #include <ObjexxFCL/FArray1D.hh>
30 #include <basic/prof.hh>
34 #include <utility/vector1.hh>
38 namespace frag_picker {
41 using namespace basic::options;
42 using namespace basic::options::OptionKeys;
47 disulfide_data_(disulfide_data),
48 largest_fragment_(largest_fragment)
54 n_res_ = current_chunk->size();
65 Real distance = sqrt( pow( xr->x() - yr->x(), 2) + pow( xr->y() - yr->y(), 2) + pow( xr->z() - yr->z(), 2) );
78 std::string tmp = fragment->get_chunk()->chunk_key();
84 Size offset_q = fragment->get_first_index_in_query() - 1;
85 Size offset_v = fragment->get_first_index_in_vall() - 1;
90 for (
Size i = 1; i < fragment->get_length(); ++i) {
95 Size res1 = i+offset_q;
104 seq_sep = res2 - res1;
107 seq_sep = res1 - res2;
108 if ( v1 > (res1 - res2) ) {
115 if ( (res2 != 0) && (res2 <= (3 + offset_q + fragment->get_length())) && (res2 >= offset_q - 3)
116 && (v2 > 0) && (v2 <=
n_res_) ) {
123 if ( seq_sep >= 2 ) {
140 scores->set_score_component(score,
id_);
141 PROF_STOP( basic::FRAGMENTPICKING_PHIPSI_SCORE );
170 if (option[in::fix_disulf].user()) {
178 Size largest_number(0);
180 for (
Size i = 1; i <= disulfides_in_file.size(); ++i ) {
182 Size l = disulfides_in_file[i].first;
183 Size u = disulfides_in_file[i].second;
186 utility_exit_with_message(
"[ERROR] Disulfide File Format: res2 must be > res1");
189 if ( u > largest_number ) {
196 for (
Size i = 1; i <= disulfides_in_file.size(); ++i ) {
198 Size l =
static_cast< Size > ( disulfides_in_file[i].first );
199 Size u =
static_cast< Size > ( disulfides_in_file[i].second );
201 disulfide_data[u] = l;
202 disulfide_data[l] = u;
205 for (
Size i = 1; i <= largest_number; ++i ) {
207 std::cout <<
"DISULFIDE_DATA " << i <<
" " << disulfide_data[i] << std::endl;
211 Size largest_fragment(0);
212 for (
Size i = 1; i <= picker->frag_sizes_.size(); ++i ) {
213 if ( picker->frag_sizes_[i] > largest_fragment ) largest_fragment = picker->frag_sizes_[i];
216 runtime_assert( largest_fragment > 0 );
220 disulfide_data, largest_fragment);
223 utility_exit_with_message(
224 "Can't read disulfide connectivity file. Provide a connectivity file with -in::fix_disulf <file>\n");