24 #include <basic/database/open.hh>
25 #include <basic/Tracer.hh>
28 #include <utility/exit.hh>
29 #include <utility/io/izstream.hh>
37 namespace frag_picker {
44 static basic::Tracer
TR(
"protocols.frag_picker.SidechainContactDistCutoff");
51 scale_factor_ = scale_factor;
82 for (
Size i=1;i<=aa_map_.size();++i)
83 aa_to_index_map_[aa_map_[i]] = i;
90 utility::io::izstream data(basic::database::full_name(
"sampling/sidechain_contact.txt"));
91 TR.Info <<
"read sidechain contact data from sidechain_contact.txt" << std::endl;
93 utility_exit_with_message(
"[ERROR] Unable to open file: sidechain_contact.txt");
97 while (getline(data, line)) {
98 if (line.size() > 3 && line.substr(0,3) ==
"GLY") {
102 std::istringstream line_stream( line );
106 utility_exit_with_message(
"Error in sidechain name mapping in sidechain_contact.txt!" );
107 for (
Size i=1;i<=col.size();++i) line_stream >> col[i];
108 if ( line_stream.fail() )
109 utility_exit_with_message(
"Error reading in SidechainContactDistCutoff()!" );
111 mean_dist.push_back(col);
112 else if (tablecnt == 2)
113 stddev_dist.push_back(col);
114 for (
Size j=1;j<=19;++j) {
117 std::istringstream line_stream_next(line);
118 line_stream_next >> col1;
120 utility_exit_with_message(
"Error in sidechain name mapping in sidechain_contact.txt!" );
121 for (
Size i=1;i<=col.size();++i) line_stream_next >> col[i];
122 if ( line_stream_next.fail() )
123 utility_exit_with_message(
"Error reading in SidechainContactDistCutoff()!" );
125 mean_dist.push_back(col);
126 else if (tablecnt == 2)
127 stddev_dist.push_back(col);
136 cutoff_squared_.resize(20);
137 for (
Size i=1;i<=mean_dist.size();++i) {
138 for (
Size j=1;j<=mean_dist[i].size();++j) {
139 cutoff_[i].push_back( scale_factor_*(mean_dist[i][j] + 2.5*stddev_dist[i][j]) );
140 cutoff_squared_[i].push_back( cutoff_[i][j]*cutoff_[i][j] );
141 TR.Debug <<
"cutoff_squared: " << i <<
" " << j <<
" " << cutoff_squared_[i][j] << std::endl;
147 return cutoff_[aa_to_index_map_[aa_i]][aa_to_index_map_[aa_j]];
151 return cutoff_squared_[aa_to_index_map_[aa_i]][aa_to_index_map_[aa_j]];
155 return scale_factor_;