27 #include <basic/database/open.hh>
30 #include <basic/datacache/BasicDataCache.hh>
31 #include <basic/prof.hh>
34 #include <utility/io/izstream.hh>
36 #include <utility/vector1.hh>
64 fcen6_.resize( nres, 0.0 );
74 cen_dist_cutoff2( 144.0 ),
76 cen_dist6sqr_( 6 * 6 ),
77 cen_dist10sqr_( 10 * 10 ),
78 cen_dist12sqr_( 12 * 12 ),
84 cen_dist7_pad( 0.65 ),
85 cen_dist10_pad( 1.0 ),
86 cen_dist12_pad( 1.2 ),
88 cen_dist5_pad_plus ( cen_dist5_pad + 25.0 ),
89 cen_dist6_pad_plus( cen_dist6_pad + 36.0 ),
90 cen_dist7_pad_plus ( cen_dist7_pad + 56.25 ),
91 cen_dist10_pad_plus( cen_dist10_pad + 100.0 ),
92 cen_dist12_pad_plus( cen_dist12_pad + 144.0 ),
94 cen_dist5_pad_minus ( cen_dist5_pad - 25.0 ),
95 cen_dist7_pad_minus ( cen_dist7_pad - 56.25 ),
96 cen_dist10_pad_minus( cen_dist10_pad - 100.0 ),
97 cen_dist12_pad_minus( cen_dist12_pad - 144.0 ),
99 cen_dist5_pad_hinv ( 0.5 / cen_dist5_pad ),
100 cen_dist6_pad_hinv ( 0.5 / cen_dist6_pad ),
101 cen_dist7_pad_hinv ( 0.5 / cen_dist7_pad ),
102 cen_dist10_pad_hinv( 0.5 / cen_dist10_pad ),
103 cen_dist12_pad_hinv( 0.5 / cen_dist12_pad ),
105 cen_dist_cutoff_12_pad( cen_dist_cutoff2 + cen_dist12_pad )
108 Size const max_aa( 20 );
109 Size const env_log_table_size( 40 );
110 Size const pair_log_table_size( 5 );
111 Size const cbeta_den_table_size( 45 );
112 Size const cenpack_log_table_size( 120 );
118 env_log_.dimension( max_aa, env_log_table_size );
120 utility::io::izstream stream;
121 basic::database::open( stream,
"scoring/score_functions/EnvPairPotential/env_log.txt" );
122 while ( getline( stream, line ) ) {
123 std::istringstream l(line);
125 for (
Size i=1; i<= env_log_table_size; ++i ){
128 if ( l.fail() || tag !=
"ENV_LOG:" ) utility_exit_with_message(
"bad format for scoring/score_functions/EnvPairPotential/env_log.txt");
136 utility::io::izstream stream;
137 basic::database::open( stream,
"scoring/score_functions/EnvPairPotential/cbeta_den.txt" );
140 getline( stream, line );
141 std::istringstream l(line);
143 for (
Size i=1; i<= cbeta_den_table_size; ++i ){
146 if ( l.fail() || tag !=
"CBETA_DEN6:" ) utility_exit_with_message(
"bad format for scoring/score_functions/EnvPairPotential/cbeta_den.txt");
150 getline( stream, line );
151 std::istringstream l(line);
153 for (
Size i=1; i<= cbeta_den_table_size; ++i ){
156 if ( l.fail() || tag !=
"CBETA_DEN12:" ) utility_exit_with_message(
"bad format for scoring/score_functions/EnvPairPotential/cbeta_den.txt");
162 pair_log_.dimension( pair_log_table_size, max_aa, max_aa );
164 utility::io::izstream stream;
165 basic::database::open( stream,
"scoring/score_functions/EnvPairPotential/pair_log.txt" );
166 for (
Size j=1; j<= pair_log_table_size; ++j ) {
167 for (
Size k=1; k<= max_aa; ++k ) {
168 getline( stream, line );
169 std::istringstream l(line);
171 l >> tag >> jj >> aa;
172 assert(
Size(aa) == k );
173 for (
Size i=1; i<= max_aa; ++i ) {
176 if ( l.fail() || jj != j || tag !=
"PAIR_LOG:" ) utility_exit_with_message(
"bad format for scoring/score_functions/EnvPairPotential/pair_log.txt");
184 utility::io::izstream stream;
185 basic::database::open( stream,
"scoring/score_functions/EnvPairPotential/cenpack_log.txt" );
186 for (
Size j=1; j<= cenpack_log_table_size; ++j ) {
187 getline( stream, line );
188 std::istringstream l(line);
192 if ( l.fail() || jj != j || tag !=
"CENPACK_LOG:" ) utility_exit_with_message(
"bad format for scoring/score_functions/EnvPairPotential/cenpack_log.txt");
257 Real const one( 1.0 );
263 cenlist.
fcen10(res1) += interp;
264 cenlist.
fcen10(res2) += interp;
270 cenlist.
fcen6(res1) += interp;
271 cenlist.
fcen6(res2) += interp;
272 cenlist.
fcen12(res1) += 1.0 - interp;
273 cenlist.
fcen12(res2) += 1.0 - interp;
279 cenlist.
fcen12(res1) += interp;
280 cenlist.
fcen12(res2) += interp;
287 for (
Size ii = 1; ii <= cenlist.
size(); ++ii ) {
288 if ( cenlist.
fcen6(ii) >= 45.0 ) cenlist.
fcen6(ii) = 44.9999;
289 if ( cenlist.
fcen10(ii) >= 31.0 ) cenlist.
fcen10(ii) = 30.9999;
290 if ( cenlist.
fcen12(ii) < 1 ) {
292 }
else if ( cenlist.
fcen12(ii) >= 45.0 ) {
293 cenlist.
fcen12(ii) = 44.9999;
312 Size const nres( energy_graph.num_nodes() );
321 for (
Size i = 1; i < nres; ++i ) {
323 if ( !rsd1.is_protein() )
continue;
325 iru = energy_graph.get_node(i)->const_upper_edge_list_begin(),
327 iru != irue; ++iru ) {
328 EnergyEdge const * edge( static_cast< EnergyEdge const *> (*iru) );
331 if ( !rsd2.is_protein() )
continue;
372 int const position ( rsd.
seqpos() );
374 Real const fcen6 ( cenlist.
fcen6( position) );
375 Real const fcen10 ( cenlist.
fcen10(position) );
376 Real const fcen12 ( cenlist.
fcen12(position) );
380 env_score =
env_log_( rsd.
aa(),
static_cast< int >( fcen10 ) );
383 int interp1 =
static_cast< int >( fcen6 );
387 Real interp2 = fcen6 - interp1;
394 interp1 =
static_cast< int >( fcen12 );
396 interp2 = fcen12 - interp1;
423 Real & pair_contribution,
424 Real & cenpack_contribution
429 pair_contribution = 0.0;
430 cenpack_contribution = 0.0;
474 if ( interp2 < 0.0 ) interp2 = 0.0;
478 if ( interp2 > 1.0 ) interp2 = 1.0;
484 ( ( 1.0f - interp2 ) *
pair_log_( icon , aa1, aa2 ) +
485 ( interp2 ) *
pair_log_( icon+1, aa1, aa2 ) );
487 pair_contribution = ( 1.0f - interp2 ) *
pair_log_( icon , aa1, aa2 );
493 int cendist_bin = static_cast <
int> ( sqrt( cendist ) * 10 + 1);
495 if (cendist_bin > 120) cendist_bin = 120;
496 if (cendist_bin < 1) cendist_bin = 1;
507 using namespace core::pose::datacache;
508 return *(
static_cast< CenListInfo const *
>( pose.
data().get_const_ptr( CacheableDataType::CEN_LIST_INFO )() ));