14 #include <basic/options/keys/holes.OptionKeys.gen.hh>
15 #include <basic/options/option.hh>
24 #include <basic/database/open.hh>
27 #include <numeric/numeric.functions.hh>
29 #include <numeric/xyzMatrix.hh>
30 #include <numeric/xyzVector.hh>
31 #include <utility/exit.hh>
32 #include <utility/vector1.hh>
33 #include <basic/Tracer.hh>
39 #ifndef __native_client__
44 #include <boost/math/special_functions/fpclassify.hpp>
50 static basic::Tracer
TR(
"core.scoring.packing.compute_holes_score");
63 #ifndef __native_client__
66 using namespace basic::options;
68 for(
Size tries = 1; tries <= 10; ++tries) {
69 TR <<
"compute_holes_surfs try: " << tries << std::endl;
72 std::string cmd = basic::options::option[ OptionKeys::holes::dalphaball ]();
74 redi::pstream proc( cmd +
" alpha20_surf" );
75 proc <<
"NPOINTS" << endl << pb.
nballs() << endl <<
"COORDS" << endl;
79 proc <<
b.x() <<
" " <<
b.y() <<
" " <<
b.z() <<
" " <<
b.r() <<
" " << endl;
82 proc <<
"END" << endl << redi::peof;
86 for(
Size a = 1; a <= 20; a++ ) {
90 proc >> ialpha >> index >> val;
91 Real rval = atof(val.c_str());
92 if(boost::math::isnan(rval)) rval = 0.0;
94 if( i != index || a != ialpha ) {
95 TR <<
"DAlphaBall output index mismatch " << ialpha <<
" " << a <<
" " << index <<
" " << i << std::endl;
105 TR <<
"compute_holes_surfs completed successfully" << std::endl;
110 std::cerr <<
"Too many compute_holes_surfs failures" << std::endl;
126 bool use_cached_surfs,
131 cmd = basic::options::option[ basic::options::OptionKeys::holes::dalphaball ]();
139 Real resl_score = 0.0, dec_score = 0.0, dec15_score = 0.0;
142 for(
Size a = 1; a <= 20; ++a ) {
143 resl_score += resl_params .
sa_weight(at,ss,a) * pb.
surf(i,a);
145 dec15_score += dec15_params .
sa_weight(at,ss,a) * pb.
surf(i,a);
156 Real tmp = 1.0 - (1.0 / (1.0 + exp( 3.768941 * dec_score - 0.5842765 ) ));
164 result.
score = 1.0 - (1.0 / (1.0 + exp( 3.768941 * result.
decoy_score - 0.5842765 ) ));
167 TR <<
"compute_rosettaholes_score done: " << result.
score << std::endl;
177 std::string cmd = basic::options::option[ basic::options::OptionKeys::holes::dalphaball ]();
180 dec15_params.
read_data_file(basic::database::full_name(
"scoring/rosettaholes/decoy15.params"));
183 Real dec15_score = 0.0;
189 for(
Size a = 1; a <= 20; ++a ) {
190 dec15_score += dec15_params .sa_weight(at,ss,a) * pb.
surf(i,a);
192 dec15_score += dec15_params .nb_weight(at,ss) * pb.
smooth_nb(i);
193 dec15_score -= dec15_params .intercept(at,ss) + dec15_params .intercept();
195 dec15_score /= pb.
nballs();
197 TR <<
"compute_dec15_score done: " << dec15_score << std::endl;
208 bool use_cached_surfs,
213 cmd = basic::options::option[ basic::options::OptionKeys::holes::dalphaball ]();
224 for(
Size a = 1; a <= 20; ++a ) {
233 TR <<
"compute_holes_score done: " << result.
score << std::endl;
243 if( sqdist >= 121.0 ) {
245 }
else if( sqdist <= 81.0 ) {
248 Real dist = sqrt( sqdist );
249 return sqr(1.0 -
sqr( (dist - 9.0) / (11.0 - 9.0) ) );
255 if( sqdist >= 121.0 ) {
257 }
else if( sqdist <= 81.0 ) {
260 Real dist = sqrt( sqdist );
261 Real x = (dist - 9.0)/ (11.0 - 9.0);
262 return -2*x * 2*(1-x*x) / (11.0 - 9.0);
271 using namespace numeric;
283 Real d2( ixyz.distance_squared(jxyz) );
319 #ifndef __native_client__
321 using namespace basic::options;
323 for(
Size tries = 1; tries <= 10; ++tries) {
324 TR <<
"compute_holes_deriv try:" << tries << std::endl;
347 std::string cmd = basic::options::option[ OptionKeys::holes::dalphaball ]();
348 redi::pstream proc( cmd +
" alpha20_deriv_surf" );
349 proc <<
"NPOINTS" << endl << pb.
nballs() << endl <<
"COORDS" << endl;
352 proc <<
b.x() <<
" " <<
b.y() <<
" " <<
b.z() <<
" " <<
b.r() <<
" " << endl;
354 proc <<
"WEIGHTS" << endl;
359 for(
Size j = 1; j <=20; ++j ) {
360 proc << params.
sa_weight(at,ss,j) <<
" ";
364 proc <<
"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" << endl;
367 proc <<
"END" << endl << redi::peof;
374 proc >> index >> val >> dx >> dy >> dz;
376 TR <<
"compute_holes_deriv DAlphaBall output index mismatch " << i <<
" " << index << std::endl;
385 }
else if ( abs(val) > 9e-6 ) {
386 TR <<
"no holes params but dalphaball score for atom is not 0!!!! " << val << std::endl;
393 TR <<
"compute_holes_deriv done: " << result.
score << std::endl;
428 std::cerr <<
"too many dalphaball deriv fails!" << std::endl;
445 hp_resl .
read_data_file(basic::database::full_name(
"scoring/rosettaholes/resl.params"));
446 hp_dec .
read_data_file(basic::database::full_name(
"scoring/rosettaholes/decoy25.params"));
447 hp_dec15.
read_data_file(basic::database::full_name(
"scoring/rosettaholes/decoy15.params"));
495 hp_resl .
read_data_file(basic::database::full_name(
"scoring/rosettaholes/resl.params"));
496 hp_dec .
read_data_file(basic::database::full_name(
"scoring/rosettaholes/decoy25.params"));
497 hp_dec15.
read_data_file(basic::database::full_name(
"scoring/rosettaholes/decoy15.params"));
498 bool use_cached_surfs(
false );