29 #include <basic/options/option.hh>
52 #include <basic/datacache/BasicDataCache.hh>
53 #include <basic/datacache/DiagnosticData.hh>
54 #include <basic/Tracer.hh>
56 #include <numeric/random/random.hh>
58 #include <ObjexxFCL/format.hh>
59 #include <ObjexxFCL/string.functions.hh>
60 using namespace ObjexxFCL::fmt;
86 #include <utility/vector0.hh>
87 #include <utility/vector1.hh>
96 static basic::Tracer
TR(
"protocols.ub_e2c.ubi_e2c_modeler");
104 static numeric::random::RandomGenerator
RG(22849284);
106 using namespace core;
107 using namespace core::scoring;
110 ubi_e2c_modeler::ubi_e2c_modeler() : Mover(),
113 max_k48_cter_dist_( 15.00 ),
117 max_repeats_( 100000 ),
118 centroid_allowed_CSP_fraction_( 0.7 ),
119 fullatom_allowed_CSP_fraction_( 0.7 ),
120 centroid_CSP_weight_( 5.0 ),
121 centroid_non_CSP_weight_( 5.0 ),
122 fullatom_CSP_weight_( 1000.0 ),
123 fullatom_non_CSP_weight_( 1000.0 ),
125 cen_constraint_( 10.00 ),
127 refinement_mode_( false ),
128 cov_bond_only_flag_( true ),
129 monoub_mode_( false ),
130 higher_d77_pert_mode_( false )
132 Mover::type(
"ubi_e2c_modeler" );
145 using namespace basic::options;
146 using namespace basic::options::OptionKeys;
147 TR <<
"UBI Setting up default settings" << std::endl;
258 TR <<
"UBI Done:Setting up default settings" << std::endl;
265 TR <<
"UBI Assigning Trimmed CSPs" << std::endl;
267 for(
Size i = 1; i <=
CSP_.size(); i++ ) {
281 TR <<
"UBI Done: Assigning Trimmed CSPs" << std::endl;
288 TR <<
"UBI Assigning Swap Trimmed CSPs" << std::endl;
292 for(
Size i = 1; i <=
CSP_.size(); i++ ) {
310 TR <<
"UBI Done: Assigning Swap Trimmed CSPs" << std::endl;
318 TR <<
"UBI Assigning CSPs" << std::endl;
320 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 23 ) );
321 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 24 ) );
322 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 25 ) );
323 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 26 ) );
324 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 29 ) );
325 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 32 ) );
326 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 33 ) );
327 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 34 ) );
328 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 36 ) );
329 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 40 ) );
330 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 41 ) );
331 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 42 ) );
332 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 52 ) );
333 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 53 ) );
334 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 54 ) );
335 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 57 ) );
336 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 58 ) );
337 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 74 ) );
338 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 160 ) );
339 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 164 ) );
340 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 14 ) );
341 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 17 ) );
342 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 18 ) );
343 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 27 ) );
344 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 35 ) );
345 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 38 ) );
346 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 39 ) );
347 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 43 ) );
348 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 46 ) );
349 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 50 ) );
350 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 51 ) );
351 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 56 ) );
352 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 59 ) );
353 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 60 ) );
354 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 90 ) );
355 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 163 ) );
357 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 7 ) );
358 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 13 ) );
359 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 45 ) );
360 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 47 ) );
361 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 48 ) );
362 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 49 ) );
363 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 65 ) );
364 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 68 ) );
365 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 69 ) );
366 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 70 ) );
367 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 71 ) );
368 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 73 ) );
369 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 74 ) );
370 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 6 ) );
371 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 8 ) );
372 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 11 ) );
373 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 14 ) );
374 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 23 ) );
375 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 32 ) );
376 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 42 ) );
377 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 43 ) );
378 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 51 ) );
379 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 54 ) );
380 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 66 ) );
381 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 67 ) );
382 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 72 ) );
383 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 76 ) );
385 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 7 ) );
386 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 43 ) );
387 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 48 ) );
388 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 70 ) );
389 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 71 ) );
390 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 23 ) );
391 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 29 ) );
392 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 45 ) );
393 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 51 ) );
394 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 69 ) );
395 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'C', 73 ) );
402 TR <<
"UBI Done: Assigning CSPs" << std::endl;
410 TR <<
"UBI Assigning non CSPs" << std::endl;
622 TR <<
"UBI Done: Assigning non CSPs" << std::endl;
629 using namespace basic::options;
630 using namespace basic::options::OptionKeys;
631 using namespace core::scoring;
632 using namespace core::scoring::constraints;
633 using namespace chemical;
654 mtsl_constraint->apply( pose_in );
674 Real ubi_cov_bond_dist( 100.00 );
681 pose_in = start_pose;
685 to_centroid.
apply( pose_in );
689 score_map_[
"AD_k48_CA_CA" ] = ubi_cov_bond_dist;
693 ( *dock_lowres_cst_scorefxn_ )( pose_in );
704 to_all_atom.
apply( pose_in );
705 recover_sidechains.
apply( pose_in );
710 score_map_[
"AD_k48_CA_CA" ] = ubi_cov_bond_dist;
714 ( *dockfa_cst_scorefxn_ )( pose_in );
720 else TR <<
"UBI Repeating structure " << r <<
" times" << std::endl;
727 ( *dockfa_cst_scorefxn_ )( pose_in );
733 ( *output_full_scorefxn_ )( pose_in );
737 ( *output_cen_scorefxn_ )( pose_in );
756 TR <<
"UBI Outputing structure after " << tries <<
" times" << std::endl;
766 return "ubi_e2c_modeler";
773 TR <<
"UBI Setting Up Key Residues" << std::endl;
779 char old_chain =
'_';
780 Size next_chain( 0 );
782 chain = pdb_info->chain( i );
786 old_chain = pdb_info->chain( i );
788 if( chain != old_chain ) {
789 if ( next_chain == 0 ) {
819 TR <<
"UBI Done: Setting Up Key Residues" << std::endl;
826 using namespace core;
827 using namespace kinematics;
836 TR <<
"UBI Reinitializing Move Maps" << std::endl;
840 TR <<
"UBI Setting Up Move Maps" << std::endl;
900 TR <<
"UBI Done: Setting Up Move Maps" << std::endl;
910 using namespace kinematics;
912 TR <<
"UBI Setting up complex fold tree" << std::endl;
932 f.add_edge( 1, jumppoint1, Edge::PEPTIDE );
933 f.add_edge( jumppoint1, cutpoint1, Edge::PEPTIDE );
934 f.add_edge( cutpoint1 + 1, jumppoint2, Edge::PEPTIDE );
935 f.add_edge( jumppoint2, cutpoint2, Edge::PEPTIDE );
936 f.add_edge( cutpoint2 + 1, jumppoint3, Edge::PEPTIDE );
937 f.add_edge( jumppoint3, nres, Edge::PEPTIDE );
944 TR <<
"UBI Done: Setting up complex fold tree" << std::endl;
951 using namespace protocols::moves;
953 TR <<
"UBI Initial C-Terminal Perturbation" << std::endl;
968 Real const init_phi ( -150.0 );
969 Real const init_psi ( 150.0 );
970 Real const init_omega( 180.0 );
991 ub_cter_map->clear();
992 ub_cter_map->set_chi(
true );
993 ub_cter_map->set_bb(
false );
995 ub_cter_map->set_bb(
k48r_end_ - i,
true );
996 ub_cter_map->set_bb(
d77_end_ - i,
true );
1003 small_mover->angle_max( 90.0 );
1007 shear_mover->angle_max( 90.0 );
1012 perturb_min_cter->add_mover( small_mover );
1013 perturb_min_cter->add_mover( shear_mover );
1014 perturb_min_cter->add_mover( min_mover );
1020 cter_cycle =
new RepeatMover( cter_pert_trial, 40 );
1021 cter_cycle->apply( pose_in );
1022 mc->recover_low( pose_in );
1025 TR <<
"UBI Done: Initial C-Terminal Perturbation" << std::endl;
1037 using namespace kinematics;
1039 TR <<
"UBI Setting up simple fold tree" << std::endl;
1044 f.add_edge( 1, jumppoint1, Edge::PEPTIDE );
1045 f.add_edge( jumppoint1, cutpoint, Edge::PEPTIDE );
1046 f.add_edge( cutpoint + 1, jumppoint2, Edge::PEPTIDE );
1047 f.add_edge( jumppoint2, nres, Edge::PEPTIDE );
1053 TR <<
"UBI Done: Setting up simple fold tree" << std::endl;
1061 TR <<
"UBI Trimming C-terminal" << std::endl;
1073 TR <<
"UBI Done: Trimming C-terminal" << std::endl;
1083 TR <<
"UBI Restoring C-terminal" << std::endl;
1102 to_centroid.
apply( pose_in );
1103 pose_in.
copy_segment( ub_size, d77, k48r_end_ + 1, 1 );
1104 to_centroid.
apply( pose_in );
1109 TR <<
"UBI Done: Restoring C-terminal" << std::endl;
1118 using namespace core::scoring;
1120 using namespace protocols::moves;
1122 TR <<
"UBI Initial K48R Perturbation" << std::endl;
1135 to_centroid.
apply( e2_k48r );
1145 mover.
apply( e2_k48r );
1147 spin.
apply( e2_k48r );
1149 slide.
apply( e2_k48r );
1152 init_e2_mono_ub_dock->apply( e2_k48r );
1163 Size const cycles( 50 );
1165 rbp_cycle->apply( e2_k48r );
1166 mc->recover_low( e2_k48r );
1169 to_centroid.
apply( pose_in );
1175 jumppoint1 = e2_k48r_ctr_of_mass;
1184 mover.
apply( pose_in );
1186 spin.
apply( pose_in );
1188 slide.
apply( pose_in );
1191 init_e2_mono_ub_dock->apply( pose_in );
1202 Real score = ( *dock_lowres_scorefxn_ )( pose_in );
1211 Real last_accepted_CSP_score = score
1214 Real lowest_CSP_score = last_accepted_CSP_score;
1222 for(
Size i = 1; i <= 50 ; i++ ) {
1223 dock_e2_mono_ub->apply( pose_in );
1224 ( *dock_lowres_scorefxn_ )( pose_in );
1227 score = ( *dock_lowres_scorefxn_ )( pose_in );
1230 Real current_CSP_score = score
1233 Real boltz_factor = ( last_accepted_CSP_score - current_CSP_score ) /
1235 Real probability = std::exp( std::min (40.0, std::max(-40.0,
1238 if( (current_CSP_score < last_accepted_CSP_score) ||
1239 ( random < probability ) ) {
1240 last_accepted_CSP_score = current_CSP_score;
1241 best_CSP_pose = pose_in;
1242 if( current_CSP_score < lowest_CSP_score ) {
1243 lowest_CSP_score = current_CSP_score;
1244 lowest_CSP_score_pose = pose_in;
1247 pose_in = best_CSP_pose;
1252 pose_in = lowest_CSP_score_pose;
1261 TR <<
"UBI Done: Initial K48R Perturbation" << std::endl;
1270 TR <<
"UBI Initial D77 Perturbation" << std::endl;
1276 k48r_trim_end_ + 1 );
1279 to_centroid.
apply( e2_d77 );
1282 to_centroid.
apply( pose_in );
1284 to_centroid.
apply( pose_in );
1288 pose::Pose pseudo_e2_k48r( pose_in, 1, k48r_trim_end_ );
1291 k48r_trim_end_ + 1 );
1292 to_centroid.
apply( pseudo_e2_d77 );
1294 pose_in.
copy_segment( ub_trim_size, pseudo_e2_k48r, k48r_trim_end_ + 1,
1296 to_centroid.
apply( pose_in );
1298 to_centroid.
apply( pose_in );
1300 TR <<
"UBI Done: Initial D77 Perturbation" << std::endl;
1309 using namespace core::scoring;
1311 using namespace protocols::moves;
1313 TR <<
"UBI Initial Perturbation" << std::endl;
1324 Real k48r_vs_d77 = RG.uniform();
1325 if( k48r_vs_d77 < 0.5 ) {
1362 Real current_ubi_cov_bond_dist( 100.00 );
1363 numeric::xyzVector_float d77_lys_CA(
1366 current_ubi_cov_bond_dist = d77_lys_CA.distance( k48r_gly_CA );
1373 TR <<
"UBI Done: Initial Perturbation" << std::endl;
1375 return( current_ubi_cov_bond_dist );
1383 using namespace core::scoring;
1385 using namespace protocols::moves;
1387 TR <<
"UBI Centroid Mode Perturbation" << std::endl;
1396 start_pose = pose_in;
1398 Real current_ubi_cov_bond_dist( 100.00 );
1400 Size init_trials(0);
1401 while( current_ubi_cov_bond_dist > max_di_ubi_dist ) {
1403 pose_in = start_pose;
1405 TR <<
"UBI Init Trial: " << init_trials
1406 <<
"\t" <<
"Cov Bond Distance: "
1407 << current_ubi_cov_bond_dist << std::endl;
1433 small_mover->angle_max( 90.0 );
1437 shear_mover->angle_max( 90.0 );
1443 perturb_min_cter->add_mover( small_mover );
1444 perturb_min_cter->add_mover( shear_mover );
1445 perturb_min_cter->add_mover( min_mover );
1452 cter_cycle =
new RepeatMover( cter_pert_trial, 10 );
1459 docker->add_mover( dock_e2_k48r, 0.375 );
1460 docker->add_mover( dock_k48r_d77, 0.375 );
1461 docker->add_mover( cter_cycle, 0.25 );
1475 Real score = ( *dock_lowres_cst_scorefxn_ )( pose_in );
1476 Real last_accepted_CSP_score = score
1479 Real lowest_CSP_score = last_accepted_CSP_score;
1483 for(
Size i = 1; i <= 50 ; i++ ) {
1484 docker->apply( pose_in );
1485 score = ( *dock_lowres_cst_scorefxn_ )( pose_in );
1488 Real current_CSP_score = score
1491 Real boltz_factor = ( last_accepted_CSP_score - current_CSP_score ) /
1493 Real probability = std::exp( std::min (40.0, std::max(-40.0,
1496 if( (current_CSP_score < last_accepted_CSP_score) ||
1497 ( random < probability ) ){
1498 last_accepted_CSP_score = current_CSP_score;
1499 best_CSP_pose = pose_in;
1500 if( current_CSP_score < lowest_CSP_score ) {
1501 lowest_CSP_score = current_CSP_score;
1502 lowest_CSP_score_pose = pose_in;
1505 pose_in = best_CSP_pose;
1507 pose_in = lowest_CSP_score_pose;
1510 numeric::xyzVector_float d77_lys_CA(
1513 current_ubi_cov_bond_dist = d77_lys_CA.distance( k48r_gly_CA );
1514 TR <<
"UBI Done: Centroid Mode Perturbation" << std::endl;
1516 return( current_ubi_cov_bond_dist );
1522 using namespace moves;
1523 using namespace pack::task;
1524 using namespace pack::task::operation;
1526 TR <<
"UBI Fullatom Mode Perturbation" << std::endl;
1534 pack_interface_repack->task_factory(
tf_);
1555 Real trans_magnitude = 0.1;
1556 Real rot_magnitude = 5.0;
1578 small_mover->angle_max( 5.0 );
1581 shear_mover->angle_max( 5.0 );
1583 perturb_min_cter->add_mover( small_mover );
1584 perturb_min_cter->add_mover( shear_mover );
1585 perturb_min_cter->add_mover( pack_rottrial );
1586 perturb_min_cter->add_mover( flex_cter_min_mover );
1589 cter_mover_rot =
new RepeatMover( cter_pert_trial, 10 );
1592 cter_mover_repack->add_mover( cter_mover_rot );
1593 cter_mover_repack->add_mover( pack_interface_repack );
1597 cter_mover_repack->apply( pose_in );
1604 k48r_perturb_rot->add_mover( k48r_perturb );
1605 k48r_perturb_rot->add_mover( pack_rottrial );
1607 d77_perturb_rot->add_mover( d77_perturb );
1608 d77_perturb_rot->add_mover( pack_rottrial );
1611 random_moves->add_mover( k48r_perturb_rot, 0.375 );
1612 random_moves->add_mover( d77_perturb_rot, 0.375 );
1613 random_moves->add_mover( perturb_min_cter, 0.25 );
1618 min_n_repack->add_mover( pack_interface_repack );
1627 Real score = ( *dockfa_cst_scorefxn_ )( pose_in );
1628 Real last_accepted_CSP_score = score
1631 Real lowest_CSP_score = last_accepted_CSP_score;
1635 for(
Size i = 1; i <= 100 ; i++ ) {
1637 perturb_min_cter->apply( pose_in );
1639 min_n_repack->apply( pose_in );
1641 random_moves->apply( pose_in );
1642 score = ( *dockfa_cst_scorefxn_ )( pose_in );
1645 Real current_CSP_score = score
1648 Real boltz_factor = ( last_accepted_CSP_score - current_CSP_score ) /
1650 Real probability = std::exp( std::min (40.0, std::max(-40.0,
1653 if( ( current_CSP_score < last_accepted_CSP_score ) ||
1654 ( random < probability ) ) {
1655 last_accepted_CSP_score = current_CSP_score;
1656 best_CSP_pose = pose_in;
1657 if( current_CSP_score < lowest_CSP_score ) {
1658 lowest_CSP_score = current_CSP_score;
1659 lowest_CSP_score_pose = pose_in;
1662 pose_in = best_CSP_pose;
1664 pose_in = lowest_CSP_score_pose;
1669 fullatom_optimizer->add_mover( pack_interface_repack );
1671 fullatom_optimizer->apply( pose_in );
1672 rtmin->apply( pose_in );
1676 Real current_ubi_cov_bond_dist( 100.00 );
1678 numeric::xyzVector_float d77_lys_CA(
1681 current_ubi_cov_bond_dist = d77_lys_CA.distance( k48r_gly_CA );
1685 TR <<
"UBI Done: Fullatom Mode Perturbation" << std::endl;
1687 return( current_ubi_cov_bond_dist );
1694 using namespace moves;
1695 using namespace pack::task;
1696 using namespace pack::task::operation;
1698 TR <<
"UBI Initial Repack" << std::endl;
1708 pack_interface_repack->task_factory(
tf_);
1710 pack_interface_repack, mc );
1713 pack_interface_and_loops_trial->apply( pose_in );
1715 TR <<
"UBI Done: Initial Repack" << std::endl;
1724 using namespace pack::task;
1725 using namespace pack::task::operation;
1730 TR <<
"UBI Reinitializing Packer Task" << std::endl;
1734 tf_ =
new TaskFactory;
1736 TR <<
"UBI Setting Up Packer Task" << std::endl;
1749 unboundrot->initialize_from_command_line();
1751 new operation::AppendRotamerSet( unboundrot );
1752 tf_->push_back( unboundrot_operation );
1758 TR <<
"UBI Done: Setting Up Packer Task" << std::endl;
1765 using namespace pack::task;
1766 using namespace pack::task::operation;
1768 TR <<
"UBI Restricting To Interface" << std::endl;
1770 ( *pack_scorefxn_ )( pose_in );
1773 ObjexxFCL::FArray1D_bool loop_residues( pose_in.
total_residue(), false );
1776 loop_residues(
d77_end_ - i) =
true;
1780 utility::vector1_size rb_jumps;
1785 TR <<
"UBI Done: Restricting To Interface" << std::endl;
1793 using namespace kinematics;
1795 TR <<
"UBI Setting up E2G2-DiUbiqutin Fold Tree" << std::endl;
1803 Size jumppoint2 = diubi_center_of_mass;
1806 f.add_edge( 1, jumppoint1, Edge::PEPTIDE );
1807 f.add_edge( jumppoint1, cutpoint, Edge::PEPTIDE );
1808 f.add_edge( cutpoint + 1, jumppoint2, Edge::PEPTIDE );
1809 f.add_edge( jumppoint2, nres, Edge::PEPTIDE );
1810 f.add_edge( jumppoint1, jumppoint2, 1 );
1815 TR <<
"UBI Done: Setting up E2G2-DiUbiqutin Fold Tree" << std::endl;
1824 using namespace core::scoring;
1826 TR <<
"UBI Calculating Interaction Energy" << std::endl;
1832 Real trans_magnitude = 1000;
1837 translate_away_diubi->step_size( trans_magnitude );
1838 separate->add_mover( translate_away_diubi );
1844 translate_away_k48r->step_size( trans_magnitude );
1847 translate_away_d77->step_size( 0.00 - trans_magnitude );
1848 separate->add_mover( translate_away_k48r );
1849 separate->add_mover( translate_away_d77 );
1860 Real bound_energy = ( *docking_scorefxn )( complex_pose );
1861 separate->apply( complex_pose );
1862 Real unbound_energy = ( *docking_scorefxn )( complex_pose );
1865 TR <<
"UBI Done: Calculating Dimer Interaction Energy" << std::endl;
1867 TR <<
"UBI Done: Calculating Trimer Interaction Energy" << std::endl;
1869 return (bound_energy - unbound_energy);
1914 Size total_CSPs = current_CSP.size();
1920 for(
Size jj = 1; jj <= num_jump; jj++ ) {
1927 for (
Size ii=1; ii <= nres; ++ii )
1929 is_interface[ii] =
true;
1932 Size satisfied_CSPs = 0;
1933 for (
Size ii = 1; ii <= total_CSPs; ++ii )
1934 if( is_interface[ current_CSP[ii] ] )
1948 return( CSP_fraction );
1954 using namespace core::scoring;
1956 TR <<
"UBI Checking Centroid Filter" << std::endl;
1958 bool passed_filter =
true;
1961 passed_filter =
false;
1962 TR <<
"UBI Failed Centroid Filter K48_CA_CA: "
1963 <<
score_map_[
"AD_k48_CA_CA" ] << std::endl;
1966 TR <<
"UBI Success Centroid Filter K48_CA_CA: "
1967 <<
score_map_[
"AD_k48_CA_CA" ] << std::endl;
1971 ( *dock_lowres_cst_scorefxn_ )( pose_in );
1974 score_map_[
"AC_constraint" ] = constraint_score;
1976 passed_filter =
false;
1977 TR <<
"UBI Failed Centroid Filter Constraint Score: "
1983 TR <<
"UBI Success Centroid Filter Constraint Score: "
1989 ( *dock_lowres_cst_scorefxn_ )( pose_in );
1992 score_map_[
"AA_CSP_fraction" ] = CSP_fraction_ratio;
1994 score_map_[
"AB_non_CSP_fraction" ] = non_CSP_fraction_ratio;
1996 if( passed_filter && ( CSP_fraction_ratio <
1998 passed_filter =
false;
1999 TR <<
"UBI Failed Centroid Filter CSP Fraction: "
2000 << CSP_fraction_ratio << std::endl;
2004 TR <<
"UBI Success Centroid Filter CSP Fraction: "
2005 << CSP_fraction_ratio << std::endl;
2008 Real cen_score( 10000.00 );
2009 if( passed_filter ) {
2010 cen_score = ( *output_cen_scorefxn_ )( pose_in );
2012 if( passed_filter && ( cen_score > 0.00 ) ) {
2013 passed_filter =
false;
2014 TR <<
"UBI Failed Centroid Score: " << cen_score << std::endl;
2017 if( cen_score <= 0.00 )
2018 TR <<
"UBI Success Centroid Score: " << cen_score << std::endl;
2021 if ( !passed_filter )
2022 TR <<
"UBI STRUCTURE FAILED LOW-RES FILTER" << std::endl;
2024 TR <<
"UBI Done: Successfully Passed Centroid Filter" << std::endl;
2026 return( passed_filter );
2032 using namespace core::scoring;
2034 TR <<
"UBI Checking Fullatom Filter" << std::endl;
2036 bool passed_filter =
true;
2039 passed_filter =
false;
2040 TR <<
"UBI Failed Fullatom Filter K48_CA_CA: "
2041 <<
score_map_[
"AD_k48_CA_CA" ] << std::endl;
2044 TR <<
"UBI Success Fullatom Filter K48_CA_CA: "
2045 <<
score_map_[
"AD_k48_CA_CA" ] << std::endl;
2049 ( *dockfa_cst_scorefxn_ )( pose_in );
2053 constraint_score = constraint_score / 1000000;
2054 score_map_[
"AC_constraint" ] = constraint_score;
2057 passed_filter =
false;
2058 TR <<
"UBI Failed Fullatom Filter Constraint Score: "
2064 TR <<
"UBI Success Fullatom Filter Constraint Score: "
2070 ( *dockfa_cst_scorefxn_ )( pose_in );
2073 score_map_[
"AA_CSP_fraction" ] = CSP_fraction_ratio;
2075 score_map_[
"AB_non_CSP_fraction" ] = non_CSP_fraction_ratio;
2076 if( passed_filter && ( CSP_fraction_ratio <
2078 passed_filter =
false;
2079 TR <<
"UBI Failed Fullatom Filter CSP Fraction: "
2080 << CSP_fraction_ratio << std::endl;
2084 TR <<
"UBI Success Fullatom Filter CSP Fraction: "
2085 << CSP_fraction_ratio << std::endl;
2108 if ( !passed_filter )
2109 TR <<
"UBI STRUCTURE FAILED HIGH-RES FILTER" << std::endl;
2111 TR <<
"UBI Done: Successfully Passed Fullatom Filter" << std::endl;
2113 return passed_filter;
2122 using namespace core::scoring;
2124 FArray1D_bool superpos_partner ( pose_in.
total_residue(), false );
2126 Size compute_rmsd_start(0), compute_rmsd_end(0);
2129 compute_rmsd_start =
e2_end_ + 1;
2141 for (
Size i = compute_rmsd_start; i <= compute_rmsd_end; ++i )
2142 superpos_partner(i) =
true;
2152 using namespace basic::options;
2153 using namespace basic::options::OptionKeys;
2154 using namespace core::scoring;
2155 using namespace core::scoring::constraints;
2156 using namespace chemical;
2161 using namespace moves;
2162 using namespace pack::task;
2163 using namespace pack::task::operation;
2164 using namespace kinematics;
2189 start_pose = pose_in;
2196 to_centroid.
apply( pose_in );
2198 score = ( *lowres_score )( pose_in );
2199 TR <<
"Native Cen Score : " << score << std::endl;
2201 score = ( *dock_lowres_score )( pose_in );
2202 TR <<
"Native DockLow Score : " << score << std::endl;
2204 to_all_atom.
apply( pose_in );
2205 recover_sidechains.
apply( pose_in );
2207 score = ( *dockfa_score )( pose_in );
2208 TR <<
"Native DockFA Score : " << score << std::endl;
2210 score = ( *pack_score )( pose_in );
2211 TR <<
"Native Pack Score : " << score << std::endl;
2215 repack->task_factory(
tf_ );
2216 repack->apply( pose_in );
2218 score = ( *dockfa_score )( pose_in );
2219 TR <<
"Packed DockFA Score : " << score << std::endl;
2221 score = ( *pack_score )( pose_in );
2222 TR <<
"Packed Pack Score : " << score << std::endl;
2226 Real trans_magnitude = 1000;
2229 translate_away_diubi->step_size( trans_magnitude );
2231 Real bound_energy = ( *dockfa_score )( start_pose );
2232 translate_away_diubi->apply( start_pose );
2233 Real unbound_energy = ( *dockfa_score )( start_pose );
2235 TR <<
"Interaction Score : " << bound_energy - unbound_energy
2244 using namespace kinematics;
2246 using namespace core::scoring;
2248 using namespace protocols::moves;
2250 TR <<
"UBI Optimizing Covalent Bond" << std::endl;
2252 Real const local_full_constraint( 100000.00 );
2254 local_full_constraint );
2256 local_full_constraint );
2258 local_full_constraint );
2270 packer->task_factory(
tf_);
2279 flex_cter_min_mover->apply( pose_in );
2286 small_mover->angle_max( 5.0 );
2289 shear_mover->angle_max( 5.0 );
2291 perturb_min_cter->add_mover( small_mover );
2292 perturb_min_cter->add_mover( shear_mover );
2293 perturb_min_cter->add_mover( pack_rottrial );
2294 perturb_min_cter->add_mover( flex_cter_min_mover );
2296 Real score = ( *dockfa_cst_scorefxn_ )( pose_in );
2297 Real last_accepted_CSP_score = score
2300 Real lowest_CSP_score = last_accepted_CSP_score;
2304 for(
Size i = 1; i <= 100 ; i++ ) {
2306 packer->apply( pose_in );
2308 perturb_min_cter->apply( pose_in );
2309 score = ( *dockfa_cst_scorefxn_ )( pose_in );
2312 Real current_CSP_score = score +
2315 Real boltz_factor = ( last_accepted_CSP_score - current_CSP_score ) /
2317 Real probability = std::exp( std::min (40.0, std::max(-40.0,
2320 if( ( current_CSP_score < last_accepted_CSP_score ) ||
2321 ( random < probability ) ) {
2322 last_accepted_CSP_score = current_CSP_score;
2323 best_CSP_pose = pose_in;
2324 if( current_CSP_score < lowest_CSP_score ) {
2325 lowest_CSP_score = current_CSP_score;
2326 lowest_CSP_score_pose = pose_in;
2329 pose_in = best_CSP_pose;
2331 pose_in = lowest_CSP_score_pose;
2333 packer->apply( pose_in );
2335 Real ubi_cov_bond_dist( 100.00 );
2337 numeric::xyzVector_float d77_lys_CA(
2341 ubi_cov_bond_dist = d77_lys_CA.distance( k48r_gly_CA );
2343 score_map_[
"AD_k48_CA_CA" ] = ubi_cov_bond_dist;
2345 Size const NZ_atom (9);
2346 Size const O_atom (4);
2348 numeric::xyzVector_float d77_lys_NZ(
2351 ubi_cov_bond_dist = d77_lys_NZ.distance( k48r_gly_O );
2353 score_map_[
"AE_k48_O_NZ" ] = ubi_cov_bond_dist;
2365 TR <<
"UBI Done: Optimizing Covalent Bond" << std::endl;
2374 TR <<
"UBI Mono Ubi Assigning CSPs" << std::endl;
2376 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 23 ) );
2377 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 24 ) );
2378 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 25 ) );
2379 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 26 ) );
2380 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 29 ) );
2381 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 32 ) );
2382 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 33 ) );
2383 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 34 ) );
2384 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 36 ) );
2385 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 40 ) );
2386 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 41 ) );
2387 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 43 ) );
2388 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 52 ) );
2389 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 53 ) );
2390 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 54 ) );
2391 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 57 ) );
2392 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 74 ) );
2393 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 17 ) );
2394 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 18 ) );
2395 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 27 ) );
2396 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 38 ) );
2397 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 39 ) );
2398 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 42 ) );
2399 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 46 ) );
2400 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 50 ) );
2401 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 58 ) );
2402 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 90 ) );
2403 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 160 ) );
2404 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 162 ) );
2405 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 163 ) );
2406 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'A', 164 ) );
2408 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 7 ) );
2409 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 13 ) );
2410 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 14 ) );
2411 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 32 ) );
2412 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 42 ) );
2413 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 45 ) );
2414 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 47 ) );
2415 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 48 ) );
2416 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 49 ) );
2417 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 68 ) );
2418 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 69 ) );
2419 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 70 ) );
2420 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 71 ) );
2421 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 75 ) );
2422 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 6 ) );
2423 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 8 ) );
2424 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 11 ) );
2425 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 15 ) );
2426 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 29 ) );
2427 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 34 ) );
2428 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 43 ) );
2429 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 51 ) );
2430 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 65 ) );
2431 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 66 ) );
2432 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 67 ) );
2433 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 72 ) );
2434 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 73 ) );
2435 CSP_.push_back( pose_in.
pdb_info()->pdb2pose(
'B', 74 ) );
2438 TR <<
"UBI Done: Mono Ubi Assigning CSPs" << std::endl;
2444 using namespace basic::options;
2445 using namespace basic::options::OptionKeys;
2446 using namespace core::scoring;
2447 using namespace core::scoring::constraints;
2448 using namespace chemical;
2454 TR <<
"UBI Mono Ubi Apply Start" << std::endl;
2458 mtsl_constraint->apply( pose_in );
2482 pose_in = start_pose;
2485 to_centroid.
apply( pose_in );
2490 ( *dock_lowres_cst_scorefxn_ )( pose_in );
2498 to_all_atom.
apply( pose_in );
2499 recover_sidechains.
apply( pose_in );
2507 ( *dockfa_cst_scorefxn_ )( pose_in );
2512 else TR <<
"UBI Mono Ubi Repeating structure " << r <<
" times"
2518 ( *output_full_scorefxn_ )( pose_in );
2522 ( *output_cen_scorefxn_ )( pose_in );
2531 TR <<
"UBI Mono Ubi Outputing structure after " << tries <<
" times"
2540 TR <<
"UBI Mono Ubi Setting Up Key Residues" << std::endl;
2546 char old_chain =
'_';
2548 chain = pdb_info->chain( i );
2552 old_chain = pdb_info->chain( i );
2554 if( chain != old_chain ) {
2567 TR <<
"UBI Done: Mono Ubi Setting Up Key Residues" << std::endl;
2573 using namespace core;
2574 using namespace kinematics;
2581 TR <<
"UBI Mono Ubi Reinitializing Move Maps" << std::endl;
2585 TR <<
"UBI Mono Ubi Setting Up Move Maps" << std::endl;
2618 TR <<
"UBI Done: Mono Ubi Setting Up Move Maps" << std::endl;
2627 using namespace kinematics;
2629 TR <<
"UBI Setting up mono ubi fold tree" << std::endl;
2638 f.add_edge( 1, jumppoint1, Edge::PEPTIDE );
2639 f.add_edge( jumppoint1, cutpoint1, Edge::PEPTIDE );
2640 f.add_edge( cutpoint1 + 1, jumppoint2, Edge::PEPTIDE );
2641 f.add_edge( jumppoint2, nres, Edge::PEPTIDE );
2642 f.add_edge( jumppoint1, jumppoint2, 1 );
2647 TR <<
"UBI Done: Setting up mono ubi fold tree" << std::endl;
2654 using namespace protocols::moves;
2656 TR <<
"UBI Mono Ubi Initial C-Terminal Perturbation" << std::endl;
2667 Real const init_phi ( -150.0 );
2668 Real const init_psi ( 150.0 );
2669 Real const init_omega( 180.0 );
2687 ub_cter_map->clear();
2688 ub_cter_map->set_chi(
true );
2689 ub_cter_map->set_bb(
false );
2698 small_mover->angle_max( 90.0 );
2702 shear_mover->angle_max( 90.0 );
2707 perturb_min_cter->add_mover( small_mover );
2708 perturb_min_cter->add_mover( shear_mover );
2709 perturb_min_cter->add_mover( min_mover );
2715 cter_cycle =
new RepeatMover( cter_pert_trial, 40 );
2716 cter_cycle->apply( pose_in );
2717 mc->recover_low( pose_in );
2719 TR <<
"UBI Done: Mono Ubi Initial C-Terminal Perturbation" << std::endl;
2727 using namespace core::scoring;
2729 using namespace protocols::moves;
2731 TR <<
"UBI Mono Ubi First Perturbation" << std::endl;
2734 to_centroid.
apply( pose_in );
2740 init_e2_mono_ub_dock->apply( pose_in );
2749 Real score = ( *dock_lowres_scorefxn_ )( pose_in );
2751 Real last_accepted_CSP_score = score
2753 Real lowest_CSP_score = last_accepted_CSP_score;
2757 for(
Size i = 1; i <= 50 ; i++ ) {
2758 dock_e2_mono_ub->apply( pose_in );
2759 ( *dock_lowres_scorefxn_ )( pose_in );
2760 score = ( *dock_lowres_scorefxn_ )( pose_in );
2762 Real current_CSP_score = score
2764 Real boltz_factor = ( last_accepted_CSP_score - current_CSP_score ) /
2766 Real probability = std::exp( std::min (40.0, std::max(-40.0,
2769 if( (current_CSP_score < last_accepted_CSP_score) ||
2770 ( random < probability ) ) {
2771 last_accepted_CSP_score = current_CSP_score;
2772 best_CSP_pose = pose_in;
2773 if( current_CSP_score < lowest_CSP_score ) {
2774 lowest_CSP_score = current_CSP_score;
2775 lowest_CSP_score_pose = pose_in;
2778 pose_in = best_CSP_pose;
2780 pose_in = lowest_CSP_score_pose;
2782 TR <<
"UBI Done: Mono Ubi First Perturbation" << std::endl;
2790 using namespace core::scoring;
2792 using namespace protocols::moves;
2794 TR <<
"UBI Mono Ubi Initial Perturbation" << std::endl;
2802 TR <<
"UBI Done: Mono Ubi Initial Perturbation" << std::endl;
2812 using namespace core::scoring;
2814 using namespace protocols::moves;
2816 TR <<
"UBI Centroid Mode Perturbation" << std::endl;
2821 pose_in.data().set( core::pose::datacache::CacheableDataType::INTERFACE_INFO, interface );
2830 rigid::RigidBodyPerturbNoCenterMover( 1, 5.0,
2843 small_mover->angle_max( 90.0 );
2847 shear_mover->angle_max( 90.0 );
2853 perturb_min_cter->add_mover( small_mover );
2854 perturb_min_cter->add_mover( shear_mover );
2855 perturb_min_cter->add_mover( min_mover );
2862 cter_cycle =
new RepeatMover( cter_pert_trial, 10 );
2865 docker->add_mover( dock_e2_monoub, 0.75 );
2866 docker->add_mover( cter_cycle, 0.25 );
2868 Real score = ( *dock_lowres_cst_scorefxn_ )( pose_in );
2869 Real last_accepted_CSP_score = score
2871 Real lowest_CSP_score = last_accepted_CSP_score;
2875 for(
Size i = 1; i <= 50 ; i++ ) {
2876 docker->apply( pose_in );
2877 score = ( *dock_lowres_cst_scorefxn_ )( pose_in );
2879 Real current_CSP_score = score
2881 Real boltz_factor = ( last_accepted_CSP_score - current_CSP_score ) /
2883 Real probability = std::exp( std::min (40.0, std::max(-40.0,
2886 if( (current_CSP_score < last_accepted_CSP_score) ||
2887 ( random < probability ) ){
2888 last_accepted_CSP_score = current_CSP_score;
2889 best_CSP_pose = pose_in;
2890 if( current_CSP_score < lowest_CSP_score ) {
2891 lowest_CSP_score = current_CSP_score;
2892 lowest_CSP_score_pose = pose_in;
2895 pose_in = best_CSP_pose;
2897 pose_in = lowest_CSP_score_pose;
2899 TR <<
"UBI Done: Mono UbiCentroid Mode Perturbation" << std::endl;
2907 using namespace moves;
2908 using namespace pack::task;
2909 using namespace pack::task::operation;
2911 TR <<
"UBI Mono Ubi Fullatom Mode Perturbation" << std::endl;
2919 pack_interface_repack->task_factory(
tf_);
2933 Real trans_magnitude = 0.1;
2934 Real rot_magnitude = 5.0;
2952 small_mover->angle_max( 5.0 );
2955 shear_mover->angle_max( 5.0 );
2957 perturb_min_cter->add_mover( small_mover );
2958 perturb_min_cter->add_mover( shear_mover );
2959 perturb_min_cter->add_mover( pack_rottrial );
2960 perturb_min_cter->add_mover( flex_cter_min_mover );
2963 cter_mover_rot =
new RepeatMover( cter_pert_trial, 10 );
2966 cter_mover_repack->add_mover( cter_mover_rot );
2967 cter_mover_repack->add_mover( pack_interface_repack );
2971 cter_mover_repack->apply( pose_in );
2974 monoub_perturb_rot->add_mover( monoub_perturb );
2975 monoub_perturb_rot->add_mover( pack_rottrial );
2978 random_moves->add_mover( monoub_perturb_rot, 0.75 );
2979 random_moves->add_mover( perturb_min_cter, 0.25 );
2982 min_n_repack->add_mover( pack_interface_repack );
2984 Real score = ( *dockfa_cst_scorefxn_ )( pose_in );
2985 Real last_accepted_CSP_score = score
2987 Real lowest_CSP_score = last_accepted_CSP_score;
2991 for(
Size i = 1; i <= 100 ; i++ ) {
2993 perturb_min_cter->apply( pose_in );
2995 min_n_repack->apply( pose_in );
2997 random_moves->apply( pose_in );
2998 score = ( *dockfa_cst_scorefxn_ )( pose_in );
3000 Real current_CSP_score = score
3002 Real boltz_factor = ( last_accepted_CSP_score - current_CSP_score ) /
3004 Real probability = std::exp( std::min (40.0, std::max(-40.0,
3007 if( ( current_CSP_score < last_accepted_CSP_score ) ||
3008 ( random < probability ) ) {
3009 last_accepted_CSP_score = current_CSP_score;
3010 best_CSP_pose = pose_in;
3011 if( current_CSP_score < lowest_CSP_score ) {
3012 lowest_CSP_score = current_CSP_score;
3013 lowest_CSP_score_pose = pose_in;
3016 pose_in = best_CSP_pose;
3018 pose_in = lowest_CSP_score_pose;
3020 fullatom_optimizer->add_mover( pack_interface_repack );
3021 fullatom_optimizer->apply( pose_in );
3022 rtmin->apply( pose_in );
3026 TR <<
"UBI Done: Mono Ubi Fullatom Mode Perturbation" << std::endl;
3034 using namespace core::scoring;
3036 TR <<
"UBI Mono Ubi Calculating Interaction Energy" << std::endl;
3042 Real trans_magnitude = 1000;
3047 translate_away_ubi->step_size( trans_magnitude );
3048 separate->add_mover( translate_away_ubi );
3058 Real bound_energy = ( *docking_scorefxn )( complex_pose );
3059 separate->apply( complex_pose );
3060 Real unbound_energy = ( *docking_scorefxn )( complex_pose );
3062 TR <<
"UBI Done: Calculating Mono Ubi Interaction Energy" << std::endl;
3064 return (bound_energy - unbound_energy);
3079 Size total_CSPs = current_CSP.size();
3089 for (
Size ii=1; ii <= nres; ++ii )
3091 is_interface[ii] =
true;
3093 Size satisfied_CSPs = 0;
3094 for (
Size ii = 1; ii <= total_CSPs; ++ii )
3095 if( is_interface[ current_CSP[ii] ] )
3100 return( CSP_fraction );
3106 using namespace core::scoring;
3108 TR <<
"UBI Mono Ubi Checking Centroid Filter" << std::endl;
3110 bool passed_filter =
true;
3113 ( *dock_lowres_cst_scorefxn_ )( pose_in );
3116 score_map_[
"AC_constraint" ] = constraint_score;
3118 passed_filter =
false;
3119 TR <<
"UBI Failed Centroid Filter Constraint Score: "
3125 TR <<
"UBI Success Centroid Filter Constraint Score: "
3131 ( *dock_lowres_cst_scorefxn_ )( pose_in );
3134 score_map_[
"AA_CSP_fraction" ] = CSP_fraction_ratio;
3136 if( passed_filter && ( CSP_fraction_ratio <
3138 passed_filter =
false;
3139 TR <<
"UBI Failed Centroid Filter CSP Fraction: "
3140 << CSP_fraction_ratio << std::endl;
3144 TR <<
"UBI Success Centroid Filter CSP Fraction: "
3145 << CSP_fraction_ratio << std::endl;
3148 Real cen_score( 10000.00 );
3149 if( passed_filter ) {
3150 cen_score = ( *output_cen_scorefxn_ )( pose_in );
3152 if( passed_filter && ( cen_score > 0.00 ) ) {
3153 passed_filter =
false;
3154 TR <<
"UBI Failed Centroid Score: " << cen_score << std::endl;
3157 if( cen_score <= 0.00 )
3158 TR <<
"UBI Success Centroid Score: " << cen_score << std::endl;
3161 if ( !passed_filter )
3162 TR <<
"UBI MONO UBI STRUCTURE FAILED LOW-RES FILTER" << std::endl;
3164 TR <<
"UBI Done: Mono Ubi Successfully Passed Centroid Filter" << std::endl;
3166 return( passed_filter );
3172 using namespace core::scoring;
3174 TR <<
"UBI Mono Ubi Checking Fullatom Filter" << std::endl;
3176 bool passed_filter =
true;
3179 ( *dockfa_cst_scorefxn_ )( pose_in );
3182 score_map_[
"AC_constraint" ] = constraint_score;
3185 passed_filter =
false;
3186 TR <<
"UBI Failed Fullatom Filter Constraint Score: "
3192 TR <<
"UBI Success Fullatom Filter Constraint Score: "
3198 ( *dockfa_cst_scorefxn_ )( pose_in );
3201 score_map_[
"AA_CSP_fraction" ] = CSP_fraction_ratio;
3202 if( passed_filter && ( CSP_fraction_ratio <
3204 passed_filter =
false;
3205 TR <<
"UBI Failed Fullatom Filter CSP Fraction: "
3206 << CSP_fraction_ratio << std::endl;
3210 TR <<
"UBI Success Fullatom Filter CSP Fraction: "
3211 << CSP_fraction_ratio << std::endl;
3216 if ( !passed_filter )
3217 TR <<
"UBI MONO UBI STRUCTURE FAILED HIGH-RES FILTER" << std::endl;
3219 TR <<
"UBI Done: Mono Ubi Successfully Passed Fullatom Filter"
3222 return( passed_filter );
3230 using namespace core::scoring;
3232 FArray1D_bool superpos_partner (
monoub_end_,
false );
3234 Size compute_rmsd_start(0), compute_rmsd_end(0);
3236 compute_rmsd_start =
e2_end_ + 1;
3238 for (
Size i = compute_rmsd_start; i <= compute_rmsd_end; ++i )
3239 superpos_partner(i) =
true;