36 #include <basic/database/open.hh>
39 #include <basic/datacache/BasicDataCache.hh>
42 #include <utility/io/izstream.hh>
48 #include <basic/Tracer.hh>
51 #include <utility/vector1.hh>
57 static basic::Tracer
TC(
"protocols.scoring.InterchainPotential");
84 Size const max_aa( 20 );
85 Size const env_log_table_size( 4 );
93 utility::io::izstream stream;
94 basic::database::open( stream,
"scoring/score_functions/InterchainPotential/interchain_env_log.txt" );
95 while ( getline( stream, line ) ) {
96 std::istringstream l(line);
98 for (
Size i=1; i<= env_log_table_size; ++i ){
101 if ( l.fail() || tag !=
"INT_CHAIN_ENV_LOG:" ) utility_exit_with_message(
"bad format for scoring/score_functions/InterchainPotential/interchain_env_log.txt");
107 utility::io::izstream stream;
108 basic::database::open( stream,
"scoring/score_functions/InterchainPotential/interchain_pair_log.txt" );
109 while ( getline( stream, line ) ) {
110 std::istringstream l(line);
112 for (
Size i=1; i<= max_aa; ++i ) {
115 if ( l.fail() || tag !=
"INT_CHAIN_PAIR_LOG:" ) utility_exit_with_message(
"bad format for scoring/score_functions/InterchainPotential/interchain_pair_log.txt");
173 if ( is_interface ) {
208 Real contact_score_jump = ( 20 - interface_residues ) * 0.5;
209 if ( interface_residues == 0 ) contact_score_jump += 2.0;
210 if ( interface_residues == 1 ) contact_score_jump += 1.0;
211 if ( interface_residues == 2 ) contact_score_jump += 0.5;
213 contact_score += contact_score_jump;
230 pair_contribution = 0.0;
231 vdw_contribution = 0.0;
235 if (interface.
is_pair( rsd1, rsd2) ==
false)
return;
239 core::Real const cendist = cen1.xyz().distance_squared( cen2.
xyz() );
240 if (cendist > 12.05*12.05)
return;
244 using namespace core;
248 for (
Size i=1, i_end = rsd1.
natoms(); i<= i_end; ++i ) {
252 for (
Size j=1, j_end = rsd2.
natoms(); j<= j_end; ++j ) {
254 Real const clash( bump_dis - i_xyz.distance_squared( rsd2.
xyz(j) ) );
256 vdw_contribution += ( clash * clash ) / bump_dis;