42 #include <basic/Tracer.hh>
59 #include <utility/exit.hh>
63 #include <utility/vector0.hh>
64 #include <utility/vector1.hh>
68 static basic::Tracer
TR(
"protocols.antibody.GraftMover");
69 static basic::Tracer
TRO(
"protocols.antibody.GraftOneMover");
75 using namespace moves;
85 TR <<
"Setting up default settings" << std::endl;
97 TR <<
"Grafting designated CDRs" << std::endl;
105 for(
Size i = 1; i <= nres; i++ )
106 secondary_struct_storage.push_back( pose_in.
secstruct( i ) );
111 antibody_in.
cdrl_[1][1],antibody_in.
cdrl_[1][2],
"l1" ));
112 graftone_l1->enable_benchmark_mode(
benchmark_ );
113 graft_sequence->add_mover( graftone_l1 );
117 antibody_in.
cdrl_[2][1],antibody_in.
cdrl_[2][2],
"l2" ));
118 graftone_l2->enable_benchmark_mode(
benchmark_ );
119 graft_sequence->add_mover( graftone_l2 );
123 antibody_in.
cdrl_[3][1],antibody_in.
cdrl_[3][2],
"l3" ));
124 graftone_l3->enable_benchmark_mode(
benchmark_ );
125 graft_sequence->add_mover( graftone_l3 );
130 antibody_in.
cdrh_[1][1],antibody_in.
cdrh_[1][2],
"h1" ));
131 graftone_h1->enable_benchmark_mode(
benchmark_ );
132 graft_sequence->add_mover( graftone_h1 );
136 antibody_in.
cdrh_[2][1],antibody_in.
cdrh_[2][2],
"h2" ));
137 graftone_h2->enable_benchmark_mode(
benchmark_ );
138 graft_sequence->add_mover( graftone_h2 );
142 antibody_in.
cdrh_[3][1],antibody_in.
cdrh_[3][2],
"h3" ));
143 graftone_h3->enable_benchmark_mode(
benchmark_ );
144 graft_sequence->add_mover( graftone_h3 );
147 graft_sequence->apply(pose_in);
150 TR <<
"Extending CDR H3" << std::endl;
152 Size framework_loop_begin( antibody_in.
cdrh_[3][1] - 1 );
153 Size frmrk_loop_end_plus_one( antibody_in.
cdrh_[3][2] + 1 );
154 Size cutpoint = framework_loop_begin + 1;
155 loops::Loop cdr_h3( framework_loop_begin, frmrk_loop_end_plus_one,
156 cutpoint, 0,
false );
161 loop_list->add_loop( cdr_h3 );
172 for(
Size i = 1; i <= nres; i++ ) {
174 allow_repack[i] =
true;
176 ( i <= antibody_in.
cdrh_[2][2] ) )
177 allow_repack[i] =
true;
179 ( i <= antibody_in.
cdrh_[3][2] ) )
180 allow_repack[i] =
true;
184 for(
Size i = 1; i <= nres; i++ )
192 to_centroid.
apply( pose_in );
193 to_full_atom.
apply( pose_in );
197 recover_sidechains.
apply( pose_in );
198 bool include_current(
false );
212 for(
Size i = 1; i <= nres; i++ ) {
214 saved_sidechains.
residue( i ) );
217 if( !allow_repack[i] ) {
218 for(
Size j=1; j <= packed_rsd.natoms(); ++j ) {
219 std::string const & atom_name( packed_rsd.atom_name(j) );
220 if( original_rsd.type().has_atom_name( atom_name ) )
222 atom_name),i), original_rsd.xyz( atom_name ) );
226 include_current =
true;
234 antibody_in.
cdrl_[1][1],antibody_in.
cdrl_[1][2]) );
235 closeone_l1->enable_benchmark_mode(
benchmark_ );
236 close_grafted_loops->add_mover( closeone_l1 );
240 antibody_in.
cdrl_[2][1],antibody_in.
cdrl_[2][2]) );
241 closeone_l2->enable_benchmark_mode(
benchmark_ );
242 close_grafted_loops->add_mover( closeone_l2 );
246 antibody_in.
cdrl_[3][1],antibody_in.
cdrl_[3][2]) );
247 closeone_l3->enable_benchmark_mode(
benchmark_ );
248 close_grafted_loops->add_mover( closeone_l3 );
253 antibody_in.
cdrh_[1][1],antibody_in.
cdrh_[1][2]) );
254 closeone_h1->enable_benchmark_mode(
benchmark_ );
255 close_grafted_loops->add_mover( closeone_h1 );
259 antibody_in.
cdrh_[2][1],antibody_in.
cdrh_[2][2]) );
260 closeone_h2->enable_benchmark_mode(
benchmark_ );
261 close_grafted_loops->add_mover( closeone_h2 );
265 antibody_in.
cdrh_[3][1],antibody_in.
cdrh_[3][2]) );
266 closeone_h3->enable_benchmark_mode(
benchmark_ );
267 close_grafted_loops->add_mover( closeone_h3 );
269 close_grafted_loops->apply(pose_in);
271 for(
Size i = 1; i <= nres; i++ )
273 allow_repack[i] =
true;
275 to_centroid.
apply( pose_in );
276 to_full_atom.
apply( pose_in );
277 recover_sidechains.
apply( pose_in );
287 for(
Size i = 1; i <= nres; i++ ) {
289 saved_sidechains.
residue( i ) );
292 if( !allow_repack[i] ) {
293 for(
Size j=1; j <= packed_rsd.natoms(); ++j ) {
294 std::string const & atom_name( packed_rsd.atom_name(j) );
295 if( original_rsd.type().has_atom_name( atom_name ) )
297 atom_name),i), original_rsd.xyz( atom_name ) );
301 include_current =
true;
305 for(
Size i = 1; i <= nres; i++ )
306 allow_repack[i] =
true;
307 include_current =
true;
316 for(
Size i = 1; i <= nres; i++ )
326 native_pose = pose_in;
331 pose_in = antibody_out.
Fv;
342 bool include_current) {
346 task = pack::task::TaskFactory::create_packer_task( pose_in );
347 task->restrict_to_repacking();
348 task->or_include_current( include_current );
374 return "GraftOneMover";
381 truncated_pose = pose_in;
389 5, ( query_size - 1 ) + 5 );
397 for(
Size start_stem = 4 - (flank-1); start_stem <= 4; start_stem++ ) {
398 for(
Size j=1; j <= 4; j++ ) {
401 atom_map[ id1 ] = id2;
404 for(
Size end_stem = 4 + query_size + 1; end_stem <= 4+query_size+flank;
406 for(
Size j=1; j <= 4; j++ ) {
408 id::AtomID const id2( j, end_stem - query_size );
409 atom_map[ id1 ] = id2;
422 if( template_rsd.name() != orientable_rsd.name() )
424 for(
Size j=1; j <= template_rsd.natoms(); ++j ) {
425 std::string const & atom_name( template_rsd.atom_name(j) );
426 if( orientable_rsd.type().has_atom_name( atom_name ) )
428 atom_name),i), template_rsd.xyz(
434 if( template_rsd.name() ==
"PRO" && orientable_rsd.name() !=
"PRO"
435 && atom_name ==
" CD " ){
448 Size loop_begin(0), loop_end(0);
449 bool detect_flag(
false );
451 if( (pose_in.
secstruct(ii) ==
'Y') && !detect_flag ) {
455 if( (pose_in.
secstruct(ii) !=
'Y') && detect_flag ) {
459 if((detect_flag ==
false) && (loop_begin != 0) && (loop_end != 0 )) {
461 rlx_one_loop->enable_benchmark_mode(
benchmark_ );
462 rlx_one_loop->apply( pose_in );
474 :
Mover(
"CloseOneMover" )
492 numeric::xyzVector_float peptide_C, peptide_N;
496 Real nter_separation=peptide_C.distance(peptide_N);
500 Real cter_separation=peptide_C.distance(peptide_N);
506 bool repack_flag(
false );
509 to_centroid.
apply( pose_in );
529 Real separation = 0.00;
532 peptide_N = pose_in.
residue( ii + 1 ).
xyz( N );
533 separation=peptide_C.distance(peptide_N);
542 to_full_atom.
apply( pose_in );
543 recover_sidechains.
apply( pose_in );
551 return "CloseOneMover";
559 using namespace protocols;
560 using namespace protocols::loops;
569 Size loop_flex_begin, loop_flex_end;
571 loop_flex_begin = cutpoint_in;
576 loop_flex_end = cutpoint_in;
583 loop_map->set_chi(
false );
584 loop_map->set_bb(
false );
586 for(
Size ii = loop_flex_begin; ii <= loop_flex_end; ii++ ) {
587 allow_bb_move[ ii ] =
true;
590 loop_map->set_bb( allow_bb_move );
591 loop_map->set_jump( 1,
false );
593 Size loop_begin, loop_end, cutpoint;
595 loop_begin = loop_flex_begin - 2;
596 loop_end = loop_flex_end;
597 cutpoint = loop_flex_begin - 1;
600 loop_begin = loop_flex_begin;
601 loop_end = loop_flex_end + 2;
602 cutpoint = loop_flex_end;
605 loops::Loop one_loop( loop_begin, loop_end, cutpoint, 0,
false );
627 Real min_tolerance = 0.001;
632 lowres_scorefxn, min_type, min_tolerance, nb_list );
635 Size loop_size = ( loop_end - loop_begin ) + 1;
636 Size n_small_moves ( numeric::max(
Size(5),
Size(loop_size/2)) );
637 Size inner_cycles( loop_size );
638 Size outer_cycles( 2 );
645 Real high_move_temp = 2.00;
653 small_mover->angle_max(
'H', 2.0 );
654 small_mover->angle_max(
'E', 5.0 );
655 small_mover->angle_max(
'L', 6.0 );
656 shear_mover->angle_max(
'H', 2.0 );
657 shear_mover->angle_max(
'E', 5.0 );
658 shear_mover->angle_max(
'L', 6.0 );
666 wiggle_cdr->add_mover( small_mover );
667 wiggle_cdr->add_mover( shear_mover );
668 wiggle_cdr->add_mover( ccd_cycle );
671 loop_min_mover->apply( pose_in );
673 Real const init_temp( 2.0 );
674 Real const last_temp( 0.5 );
675 Real const gamma = std::pow( (last_temp/init_temp), (1.0/inner_cycles));
676 Real temperature = init_temp;
680 mc->reset( pose_in );
683 for(
Size i = 1; i <= outer_cycles; i++) {
684 mc->recover_low( pose_in );
687 for (
Size j = 1; j <= inner_cycles; j++ ) {
688 temperature *= gamma;
689 mc->set_temperature( temperature );
690 wiggle_cdr->apply( pose_in );
691 loop_min_mover->apply( pose_in );
693 mc->boltzmann( pose_in );
697 mc->recover_low( pose_in );
701 loop_min_mover->apply( pose_in );
716 using namespace protocols;
717 using namespace protocols::loops;
730 loop_map->set_chi(
false );
731 loop_map->set_bb(
false );
733 for(
Size ii = loop_begin; ii <= loop_end; ii++ ) {
734 allow_bb_move[ ii ] =
true;
737 loop_map->set_bb( allow_bb_move );
738 loop_map->set_jump( 1,
false );
740 loops::Loop one_loop( loop_begin, loop_end, cutpoint, 0,
false );
762 Real min_tolerance = 0.001;
767 lowres_scorefxn, min_type, min_tolerance, nb_list );
770 Size loop_size = ( loop_end - loop_begin ) + 1;
771 Size n_small_moves ( numeric::max(
Size(5),
Size(loop_size/2)) );
772 Size inner_cycles( loop_size );
773 Size outer_cycles( 2 );
780 Real high_move_temp = 2.00;
788 small_mover->angle_max(
'H', 2.0 );
789 small_mover->angle_max(
'E', 5.0 );
790 small_mover->angle_max(
'L', 6.0 );
791 shear_mover->angle_max(
'H', 2.0 );
792 shear_mover->angle_max(
'E', 5.0 );
793 shear_mover->angle_max(
'L', 6.0 );
801 wiggle_cdr->add_mover( small_mover );
802 wiggle_cdr->add_mover( shear_mover );
803 wiggle_cdr->add_mover( ccd_cycle );
806 loop_min_mover->apply( pose_in );
808 Real const init_temp( 2.0 );
809 Real const last_temp( 0.5 );
810 Real const gamma = std::pow( (last_temp/init_temp), (1.0/inner_cycles));
811 Real temperature = init_temp;
815 mc->reset( pose_in );
818 for(
Size i = 1; i <= outer_cycles; i++) {
819 mc->recover_low( pose_in );
822 for (
Size j = 1; j <= inner_cycles; j++ ) {
823 temperature *= gamma;
824 mc->set_temperature( temperature );
825 wiggle_cdr->apply( pose_in );
826 loop_min_mover->apply( pose_in );
828 mc->boltzmann( pose_in );
832 mc->recover_low( pose_in );
836 loop_min_mover->apply( pose_in );
847 ) :
Mover(
"LoopRlxMover" )
888 using namespace protocols;
889 using namespace protocols::loops;
890 using namespace protocols::moves;
891 using namespace pack;
892 using namespace pack::task;
893 using namespace pack::task::operation;
898 TR <<
"LoopRlxMover: Apply" << std::endl;
907 loop_map->set_chi(
false );
908 loop_map->set_bb(
false );
911 allow_bb_move[ ii ] =
true;
912 loop_map->set_bb( allow_bb_move );
913 loop_map->set_jump( 1,
false );
923 utility_exit_with_message(
"Fullatom poses only");
942 loop_map->set_chi( allow_repack );
946 ( *highres_scorefxn_ )( pose_in );
948 loop_repack->task_factory(
tf_);
949 loop_repack->apply( pose_in );
951 Real min_tolerance = 0.001;
959 Size n_small_moves ( numeric::max(
Size(5),
Size(loop_size/2)) );
960 Size inner_cycles( loop_size );
961 Size outer_cycles( 2 );
968 Real high_move_temp = 2.00;
976 small_mover->angle_max(
'H', 2.0 );
977 small_mover->angle_max(
'E', 5.0 );
978 small_mover->angle_max(
'L', 6.0 );
979 shear_mover->angle_max(
'H', 2.0 );
980 shear_mover->angle_max(
'E', 5.0 );
981 shear_mover->angle_max(
'L', 6.0 );
987 wiggle_loop->add_mover( small_mover );
988 wiggle_loop->add_mover( shear_mover );
989 wiggle_loop->add_mover( ccd_cycle );
994 loop_map->set_chi( allow_repack );
996 ( *highres_scorefxn_ )( pose_in );
1001 pack_rottrial->apply( pose_in );
1004 Real const init_temp( 2.0 );
1005 Real const last_temp( 0.5 );
1006 Real const gamma = std::pow( (last_temp/init_temp), (1.0/inner_cycles));
1007 Real temperature = init_temp;
1011 mc->reset( pose_in );
1014 for(
Size i = 1; i <= outer_cycles; i++) {
1015 mc->recover_low( pose_in );
1018 for (
Size j = 1; j <= inner_cycles; j++ ) {
1019 temperature *= gamma;
1020 mc->set_temperature( temperature );
1021 wiggle_loop->apply( pose_in );
1022 loop_min_mover->apply( pose_in );
1027 loop_map->set_chi( allow_repack );
1029 ( *highres_scorefxn_ )( pose_in );
1033 pack_rottrial->apply( pose_in );
1035 mc->boltzmann( pose_in );
1038 if ( numeric::mod(j,
Size(20))==0 || j==inner_cycles ) {
1042 ( *highres_scorefxn_ )( pose_in );
1044 loop_repack->task_factory(
tf_ );
1045 loop_repack->apply( pose_in );
1046 mc->boltzmann( pose_in );
1050 mc->recover_low( pose_in );
1054 loop_min_mover->apply( pose_in );
1059 TR <<
"LoopRlxMover: Finished Apply" << std::endl;
1066 return "LoopRlxMover";
1073 using namespace pack::task;
1074 using namespace pack::task::operation;
1078 TR <<
"LoopRlxMover Reinitializing Packer Task" << std::endl;
1082 tf_ =
new TaskFactory;
1084 TR <<
"LoopRlxMover Setting Up Packer Task" << std::endl;
1097 unboundrot->initialize_from_command_line();
1099 new operation::AppendRotamerSet( unboundrot );
1100 tf_->push_back( unboundrot_operation );
1106 TR <<
"LoopRlxMover Done: Setting Up Packer Task" << std::endl;