44 #include <basic/Tracer.hh>
46 #include <numeric/numeric.functions.hh>
47 #include <numeric/random/random.hh>
48 #include <numeric/xyz.functions.hh>
68 #include <utility/exit.hh>
69 #include <utility/io/izstream.hh>
70 #include <utility/pointer/owning_ptr.hh>
73 #include <utility/vector0.hh>
74 #include <utility/vector1.hh>
76 static numeric::random::RandomGenerator
RG(11141980);
78 static basic::Tracer
TR(
"protocols.antibody.CDRH3Modeler");
84 using namespace protocols::moves;
88 ) : moves::
Mover(
"CDRH3Modeler" )
144 TR <<
"H3M Finished Setting Defaults" << std::endl;
168 TR <<
"H3M Applying CDR H3 modeler" << std::endl;
170 using namespace core::pose;
171 using namespace core::scoring;
172 using namespace protocols::moves;
186 Size cutpoint = framework_loop_begin + 1;
187 loops::Loop cdr_h3( framework_loop_begin, frmrk_loop_end_plus_one,
208 allow_chi_copy[ii] =
false;
217 packer->task_factory(
tf_);
224 Size repack_cycles(1);
229 packer->task_factory(
tf_);
230 packer->nloop( repack_cycles );
241 bool closed_cutpoints(
false );
246 while( !closed_cutpoints) {
260 TR <<
"H3M Finished applying CDR H3 modeler" << std::endl;
267 return "CDRH3Modeler";
272 using namespace core::pose;
273 using namespace core::scoring;
274 using namespace protocols::moves;
279 TR <<
"H3M Modeling Centroid CDR H3 loop" << std::endl;
282 Size framework_loop_size = ( frmrk_loop_end_plus_one -
291 cdr_h3_loop_list->add_loop( cdr_h3 );
298 Size unaligned_cdr_loop_begin(0);
310 Size modified_framework_loop_end = frmrk_loop_end_plus_one -
c_ter_stem_;
312 modified_framework_loop_end, cutpoint, 0,
true );
316 bool closed_cutpoints(
false );
318 while( !closed_cutpoints) {
320 if( framework_loop_size > 5 )
332 TR <<
"H3M Finished Modeling Centroid CDR H3 loop" << std::endl;
339 using namespace core::pose;
340 using namespace core::scoring;
341 using namespace protocols::moves;
346 TR <<
"H3M Modeling Fullatom CDR H3 loop" << std::endl;
350 bool closed_cutpoints(
false );
352 while( !closed_cutpoints) {
359 TR <<
"H3M Finished modeling Fullatom CDR H3 loop" << std::endl;
375 using namespace kinematics;
377 TR <<
"H3M Setting up simple one loop fold tree" << std::endl;
386 if( jumppoint1 < 1 ) jumppoint1 = 1;
387 if( jumppoint2 > nres) jumppoint2 = nres;
389 f.add_edge( 1, jumppoint1, Edge::PEPTIDE );
390 f.add_edge( jumppoint1, loop.
cut(), Edge::PEPTIDE );
391 f.add_edge( loop.
cut() + 1, jumppoint2, Edge::PEPTIDE );
392 f.add_edge( jumppoint2, nres, Edge::PEPTIDE );
393 f.add_edge( jumppoint1, jumppoint2, 1 );
398 TR <<
"H3M Finished setting up simple one loop fold tree" << std::endl;
409 using namespace kinematics;
411 TR <<
"H3M Setting up simple fold tree" << std::endl;
418 if( jumppoint1 < 1 ) jumppoint1 = 1;
419 if( jumppoint2 > nres) jumppoint2 = nres;
421 f.add_edge( 1, jumppoint1, Edge::PEPTIDE );
422 f.add_edge( jumppoint1, cutpoint, Edge::PEPTIDE );
423 f.add_edge( cutpoint + 1, jumppoint2, Edge::PEPTIDE );
424 f.add_edge( jumppoint2, nres, Edge::PEPTIDE );
425 f.add_edge( jumppoint1, jumppoint2, 1 );
430 TR <<
"H3M Finished setting up simple fold tree" << std::endl;
440 using namespace fragment;
442 TR <<
"H3M Reading CDR H3 C-ter Fragments" << std::endl;
444 bool is_kinked( antibody_in.
kinked_ );
445 bool is_extended( antibody_in.
extended_ );
448 Size cdr_h3_size = ( antibody_in.
cdrh_[3][2] -
449 antibody_in.
cdrh_[3][1] ) + 1;
451 for(
Size ii = antibody_in.
cdrh_[3][1] - 2;
452 ii <= ( antibody_in.
cdrh_[3][1] - 2 ) + cdr_h3_size + 3; ++ii )
464 H3_ter_library_filename =
"camelid_H3_CTERM";
466 H3_ter_library_filename =
"H3_CTERM";
469 utility::io::izstream H3_ter_library_stream( H3_ter_library_filename );
472 if ( !H3_ter_library_stream ) {
473 TR <<
"[Error]: Could not open H3 base library file: "
474 << H3_ter_library_filename << std::endl
475 <<
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" << std::endl;
476 std::exit( EXIT_FAILURE );
486 Real resolution(0.0);
489 Size pdb_H3_length = cdr_h3_size;
490 Size h3_base_frag_size( is_camelid ? 6 : 4 );
491 bool end_not_reached(
true);
492 while(end_not_reached){
493 bool seq_match(
true );
494 bool kink_match(
false );
499 for (
Size i = 1; i <= h3_base_frag_size; ++i ) {
500 H3_ter_library_stream >> pdb_name
510 if ( H3_ter_library_stream.eof() ) {
511 end_not_reached =
false;
514 if( res_name != aa_1name[aa_1name.size() - 5 + i] )
518 new BBTorsionSRFD( 3,
'L', res_name ) );
520 res_torsions->set_torsion ( 1, phi );
521 res_torsions->set_torsion ( 2, psi );
522 res_torsions->set_torsion ( 3, omega );
523 res_torsions->set_secstruct (
'L' );
524 f.add_residue( res_torsions );
527 if( is_kinked && base_type ==
"KINK" )
529 else if( is_extended && base_type ==
"EXTENDED" )
531 else if( !is_kinked && !is_extended && base_type ==
"NEUTRAL" )
534 if( is_extended && base_type ==
"EXTENDED" )
536 else if( ( is_kinked && base_type ==
"KINK" ) ||
537 ( is_kinked && base_type ==
"EXTENDED" ) )
539 else if( !is_kinked && !is_extended )
542 if( is_camelid && end_not_reached && kink_match ) {
543 H3_base_library.push_back( f );
544 }
else if( end_not_reached && ( H3_length == pdb_H3_length )
546 H3_base_library.push_back( f );
548 if( end_not_reached && seq_match && kink_match ) {
549 H3_base_library_seq_kink.push_back( f );
551 if( end_not_reached && kink_match ) {
552 H3_base_library_kink.push_back( f );
556 H3_ter_library_stream.close();
557 H3_ter_library_stream.clear();
562 if( H3_base_library.size() == 0 ) {
563 H3_base_library = H3_base_library_seq_kink;
565 if( H3_base_library.size() == 0 ) {
566 H3_base_library = H3_base_library_kink;
569 TR <<
"H3M Finished reading CDR H3 C-ter Fragments" << std::endl;
576 TR <<
"H3M Inserting CDR H3 C-ter Fragments" << std::endl;
581 Size loop_begin(0), loop_end(0), cutpoint(0), random_H3_ter(0);
592 loops::Loop cdr_h3( loop_begin, loop_end, cutpoint, 0,
true );
604 TR <<
"H3 LOOP IS TOO SHORT: CAN NOT USE N-TERM INFORMATION" << std::endl;
614 TR <<
"H3M Finished Inserting CDR H3 C-ter Fragments" << std::endl;
621 bool closed_cutpoints =
true;
625 it_next; it != it_end; ++it ) {
626 Size cutpoint = it->cut();
627 Real separation = 10.00;
630 if( separation > 1.9 ) {
631 closed_cutpoints =
false;
635 return( closed_cutpoints );
646 numeric::xyzVector_float peptide_C(pose_in.
residue( cutpoint ).
xyz( C )),
647 peptide_N( pose_in.
residue( cutpoint + 1 ).
xyz( N ) );
650 return( cutpoint_separation );
689 using namespace fragment;
690 using namespace protocols;
691 using namespace protocols::simple_moves;
692 using namespace protocols::loops;
698 TR <<
"H3M Fragments based centroid CDR H3 loop building" << std::endl;
700 if( trimmed_cdr_h3.
size() <= 2)
701 utility_exit_with_message(
"Loop too small for modeling");
704 if( !pose_in.
residue( trimmed_cdr_h3.
cut() ).is_upper_terminus() ) {
705 if( !pose_in.
residue( trimmed_cdr_h3.
cut() ).has_variant_type(
709 trimmed_cdr_h3.
cut() );
710 if( !pose_in.
residue( trimmed_cdr_h3.
cut() + 1 ).has_variant_type(
714 trimmed_cdr_h3.
cut() + 1 );
720 Size cycles2(25 * trimmed_cdr_h3.
size() );
723 Real const ccd_threshold( 0.1);
725 Real h3_fraction = 0.75;
726 Real current_h3_prob =
RG.uniform();;
727 bool H3_found_ever(
false);
728 bool loop_found(
false);
729 Size total_cycles(0);
753 cdrh3_map->set_chi(
true );
754 cdrh3_map->set_bb(
false );
755 for(
Size ii = trimmed_cdr_h3.
start(); ii<=trimmed_cdr_h3.
stop(); ii++ ) {
756 cdrh3_map->set_bb( ii,
true );
758 cdrh3_map->set_jump( 1,
false );
766 while( !loop_found && ( total_cycles++ < cycles1) ) {
768 for(
Size ii = trimmed_cdr_h3.
start(); ii<=trimmed_cdr_h3.
stop()
769 - ( buffer + (frag_size - 1 ) ); ii++ ) {
772 cfm->set_check_ss(
false );
773 cfm->enable_end_bias_check(
false );
774 cfm->define_start_window( ii );
775 cfm->apply( pose_in );
777 if( total_cycles == 1 ) {
778 mc->reset( pose_in );
781 Size local_h3_attempts(0);
782 for (
Size c2 = 1; c2 <= cycles2; ++c2 ) {
786 cfm->set_check_ss(
false );
787 cfm->enable_end_bias_check(
false );
788 cfm->apply( pose_in );
790 bool H3_found_current(
false);
792 ( local_h3_attempts++ < (50 * cycles2) ) ) {
795 if( !H3_found_ever && !H3_found_current) {
797 mc->boltzmann( pose_in );
798 }
else if( !H3_found_ever && H3_found_current ) {
799 H3_found_ever =
true;
800 mc->reset( pose_in );
801 }
else if( H3_found_ever && !H3_found_current ) {
804 }
else if( H3_found_ever && H3_found_current )
805 mc->boltzmann( pose_in );
807 mc->boltzmann( pose_in );
810 if ( (c2 > cycles2/2 &&
RG.uniform() * cycles2 < c2) ||
811 ( trimmed_cdr_h3.
size() <= 5) ) {
815 if( trimmed_cdr_h3.
size() <= 5 ) {
817 ccd_cycle->apply( pose_in );
820 ccd_cycle->apply( pose_in );
822 mc->boltzmann( pose_in );
826 mc->recover_low( pose_in );
828 trimmed_cdr_h3, cdrh3_map );
829 ccd_closure->set_tolerance( ccd_threshold );
830 ccd_closure->set_ccd_cycles( 500 );
831 ccd_closure->apply( pose_in );
833 if( total_cycles == 1 )
834 outer_mc->reset( pose_in );
836 if ( ccd_closure->forward_deviation() <= ccd_threshold &&
837 ccd_closure->backward_deviation() <= ccd_threshold ) {
840 outer_mc->boltzmann( pose_in );
842 (current_h3_prob < h3_fraction) && (h3_attempts++<50) )
851 outer_mc->recover_low( pose_in );
856 TR <<
"H3M Finished Fragments based centroid CDR H3 loop building"
895 Size const loop_begin,
897 char const light_chain
901 TR <<
"H3M Checking Kink/Extended CDR H3 Base Angle" << std::endl;
908 Real const kink_lower_bound = -10.00;
909 Real const kink_upper_bound = 70.00;
910 Real const extended_lower_bound = 125.00;
911 Real const extended_upper_bound = 185.00;
919 pose::Pose h3_loop( pose_in, loop_begin - 2, loop_begin + size + 1 );
926 std::vector <std::string> aa_name;
927 for(
Size ii = 1; ii <= size + 3; ii++)
932 Real base_dihedral( numeric::dihedral_degrees(
934 h3_loop.
residue( aa_name.size() - 1).
xyz( CA ),
935 h3_loop.
residue( aa_name.size() - 2).
xyz( CA ),
936 h3_loop.
residue( aa_name.size() - 3).
xyz( CA ) ) );
941 if( base_dihedral < kink_lower_bound )
942 base_dihedral = base_dihedral + 360.00;
946 if ((aa_name[aa_name.size()-3] !=
"ASP") &&
947 (aa_name[aa_name.size()-1] ==
"TRP")) {
948 if( (base_dihedral > kink_lower_bound) &&
949 (base_dihedral < kink_upper_bound))
958 if ( ( aa_name[ aa_name.size() - 3 ] ==
"ASP" ) &&
959 ( ( aa_name[1] !=
"LYS" ) && ( aa_name[1] !=
"ARG" ) )&&
960 ( is_H3 != true ) ) {
961 if( ( base_dihedral > extended_lower_bound ) &&
962 ( base_dihedral < extended_upper_bound) ) {
970 bool is_basic(
false);
971 for(
Size ii = 2; ii <=
Size(aa_name.size() - 5); ii++) {
972 if( aa_name[ii] ==
"ARG" || aa_name[ii] ==
"LYS" ) {
979 Size rosetta_number_of_L49 = pose_in.
pdb_info()->pdb2pose(
983 if( let3_code_L49 ==
"ARG" || let3_code_L49 ==
"LYS")
986 if( is_basic && ( base_dihedral > kink_lower_bound ) &&
987 ( base_dihedral < kink_upper_bound ) ) {
997 if ( ( aa_name[ aa_name.size() - 3 ] ==
"ASP") &&
998 ( ( aa_name[1] ==
"LYS") || ( aa_name[1] ==
"ARG" ) ) &&
999 ( (aa_name[0] !=
"LYS" ) && ( aa_name[0] !=
"ARG" ) ) &&
1000 ( is_H3 !=
true) ) {
1001 if( (base_dihedral > kink_lower_bound ) &&
1002 (base_dihedral < kink_upper_bound ) ) {
1009 bool is_basic(
false);
1010 Size rosetta_number_of_L46 = pose_in.
pdb_info()->pdb2pose(
1014 if( let3_code_L46 ==
"ARG" || let3_code_L46 ==
"LYS")
1016 if( is_basic && (base_dihedral > extended_lower_bound ) &&
1017 ( base_dihedral < extended_upper_bound ) ) {
1027 if ( ( aa_name[ aa_name.size() - 3 ] ==
"ASP") &&
1028 ( ( aa_name[1] ==
"LYS") || ( aa_name[1] ==
"ARG" ) ) &&
1029 ( ( aa_name[0] ==
"LYS") || ( aa_name[0] ==
"ARG") ) &&
1030 ( is_H3 !=
true ) ) {
1031 if( ( base_dihedral > extended_lower_bound ) &&
1032 ( base_dihedral < extended_upper_bound ) ) {
1040 TR <<
"H3M Finished Checking Kink/Extended CDR H3 Base Angle: "
1041 << is_H3 << std::endl;
1072 Size const loop_begin,
1073 Size const loop_end )
1075 using namespace protocols;
1076 using namespace protocols::simple_moves;
1077 using namespace protocols::loops;
1078 using namespace protocols::moves;
1079 using namespace protocols::toolbox::task_operations;
1080 using namespace pack;
1081 using namespace pack::task;
1082 using namespace pack::task::operation;
1086 TR <<
"H3M Relaxing CDR H3 Loop" << std::endl;
1095 cdrh3_map->set_chi(
false );
1096 cdrh3_map->set_bb(
false );
1098 for(
Size ii = loop_begin; ii <= loop_end; ii++ )
1099 allow_bb_move[ ii ] =
true;
1100 cdrh3_map->set_bb( allow_bb_move );
1101 cdrh3_map->set_jump( 1,
false );
1106 Size loop_size = ( loop_end - loop_begin ) + 1;
1107 Size cutpoint = loop_begin +
int(loop_size/2);
1117 cutpoint = loop_begin +
Size( loop_size / 2);
1124 loops::Loop one_loop( loop_begin, loop_end, cutpoint, 0,
false );
1137 utility_exit_with_message(
"Fullatom poses only");
1154 flank_allow_bb_move[i] =
true;
1157 one_loop_fold_tree->
apply( pose_in );
1178 cdrh3_map->set_chi( allow_repack );
1182 ( *highres_scorefxn_ )( pose_in );
1184 loop_repack->task_factory(
tf_);
1187 Real min_tolerance = 0.001;
1190 bool nb_list =
true;
1195 Size n_small_moves ( numeric::max(
Size(5),
Size(loop_size/2)) );
1196 Size inner_cycles( loop_size );
1197 Size outer_cycles( 1 );
1208 Real high_move_temp = 2.00;
1217 small_mover->angle_max(
'H', 0.5 );
1218 small_mover->angle_max(
'E', 0.5 );
1219 small_mover->angle_max(
'L', 1.0 );
1220 shear_mover->angle_max(
'H', 0.5 );
1221 shear_mover->angle_max(
'E', 0.5 );
1222 shear_mover->angle_max(
'L', 1.0 );
1225 small_mover->angle_max(
'H', 2.0 );
1226 small_mover->angle_max(
'E', 5.0 );
1227 small_mover->angle_max(
'L', 6.0 );
1228 shear_mover->angle_max(
'H', 2.0 );
1229 shear_mover->angle_max(
'E', 5.0 );
1230 shear_mover->angle_max(
'L', 6.0 );
1237 wiggle_cdr_h3->add_mover( one_loop_fold_tree );
1238 wiggle_cdr_h3->add_mover( small_mover );
1239 wiggle_cdr_h3->add_mover( shear_mover );
1240 wiggle_cdr_h3->add_mover( ccd_cycle );
1241 wiggle_cdr_h3->add_mover( with_flank_fold_tree );
1244 cdrh3_map->set_bb( flank_allow_bb_move );
1245 with_flank_fold_tree->apply( pose_in );
1246 loop_min_mover->movemap( cdrh3_map );
1247 loop_min_mover->apply( pose_in );
1248 cdrh3_map->set_bb( allow_bb_move );
1253 cdrh3_map->set_chi( allow_repack );
1255 ( *highres_scorefxn_ )( pose_in );
1260 pack_rottrial->apply( pose_in );
1263 Real const init_temp( 2.0 );
1264 Real const last_temp( 0.5 );
1265 Real const gamma = std::pow( (last_temp/init_temp), (1.0/inner_cycles));
1266 Real temperature = init_temp;
1270 mc->reset( pose_in );
1272 bool relaxed_H3_found_ever(
false );
1278 for(Size i = 1; i <= outer_cycles; i++) {
1279 mc->recover_low( pose_in );
1280 Size h3_attempts(0);
1283 for ( Size j = 1; j <= inner_cycles; j++ ) {
1284 temperature *= gamma;
1285 mc->set_temperature( temperature );
1286 wiggle_cdr_h3->apply( pose_in );
1287 cdrh3_map->set_bb( flank_allow_bb_move );
1288 loop_min_mover->movemap( cdrh3_map );
1289 loop_min_mover->apply( pose_in );
1290 cdrh3_map->set_bb( allow_bb_move );
1295 cdrh3_map->set_chi( allow_repack );
1297 ( *highres_scorefxn_ )( pose_in );
1301 pack_rottrial->apply( pose_in );
1303 bool relaxed_H3_found_current(
false);
1305 if(
H3_filter_ && (h3_attempts <= inner_cycles)) {
1311 if( !relaxed_H3_found_ever && !relaxed_H3_found_current) {
1312 mc->boltzmann( pose_in );
1314 else if( !relaxed_H3_found_ever && relaxed_H3_found_current ) {
1315 relaxed_H3_found_ever =
true;
1316 mc->reset( pose_in );
1318 else if( relaxed_H3_found_ever && !relaxed_H3_found_current ) {
1322 else if( relaxed_H3_found_ever && relaxed_H3_found_current )
1323 mc->boltzmann( pose_in );
1327 bool relaxed_H3_found_current(
false);
1331 if( !relaxed_H3_found_ever && !relaxed_H3_found_current) {
1332 mc->boltzmann( pose_in );
1334 else if( !relaxed_H3_found_ever && relaxed_H3_found_current ) {
1335 relaxed_H3_found_ever =
true;
1336 mc->reset( pose_in );
1338 else if( relaxed_H3_found_ever && !relaxed_H3_found_current ) {
1339 mc->recover_low( pose_in );
1341 else if( relaxed_H3_found_ever && relaxed_H3_found_current )
1342 mc->boltzmann( pose_in );
1345 mc->boltzmann( pose_in );
1348 if ( numeric::mod(j,
Size(20))==0 || j==inner_cycles ) {
1352 ( *highres_scorefxn_ )( pose_in );
1354 loop_repack->task_factory(
tf_ );
1355 loop_repack->apply( pose_in );
1356 mc->boltzmann( pose_in );
1360 mc->recover_low( pose_in );
1364 cdrh3_map->set_bb( flank_allow_bb_move );
1365 with_flank_fold_tree->apply( pose_in );
1366 loop_min_mover->movemap( cdrh3_map );
1367 loop_min_mover->apply( pose_in );
1368 cdrh3_map->set_bb( allow_bb_move );
1374 TR <<
"H3M Finished Relaxing CDR H3 Loop" << std::endl;
1403 Size const loop_begin,
1404 Size const loop_end )
1406 using namespace protocols;
1407 using namespace protocols::simple_moves;
1408 using namespace protocols::loops;
1409 using namespace protocols::moves;
1410 using namespace pack;
1411 using namespace pack::task;
1412 using namespace pack::task::operation;
1416 TR <<
"H3M Centroid Relaxing Loop" << std::endl;
1425 loop_map->set_chi(
false );
1426 loop_map->set_bb(
false );
1428 for(
Size ii = loop_begin; ii <= loop_end; ii++ )
1429 allow_bb_move[ ii ] =
true;
1430 loop_map->set_bb( allow_bb_move );
1431 loop_map->set_jump( 1,
false );
1434 Size loop_size = ( loop_end - loop_begin ) + 1;
1435 Size cutpoint = loop_begin +
Size(loop_size/2);
1437 loops::Loop one_loop( loop_begin, loop_end, cutpoint, 0,
false );
1456 Real min_tolerance = 0.001;
1459 bool nb_list =
true;
1464 Size n_small_moves ( numeric::max(
Size(5),
Size(loop_size/2)) );
1465 Size inner_cycles( loop_size );
1466 Size outer_cycles( 1 );
1477 Real high_move_temp = 2.00;
1485 small_mover->angle_max(
'H', 2.0 );
1486 small_mover->angle_max(
'E', 5.0 );
1487 small_mover->angle_max(
'L', 6.0 );
1489 shear_mover->angle_max(
'H', 2.0 );
1490 shear_mover->angle_max(
'E', 5.0 );
1491 shear_mover->angle_max(
'L', 6.0 );
1497 wiggle_cdr_h3->add_mover( small_mover );
1498 wiggle_cdr_h3->add_mover( shear_mover );
1499 wiggle_cdr_h3->add_mover( ccd_cycle );
1502 loop_min_mover->apply( pose_in );
1504 Real const init_temp( 2.0 );
1505 Real const last_temp( 0.5 );
1506 Real const gamma = std::pow( (last_temp/init_temp), (1.0/inner_cycles));
1507 Real temperature = init_temp;
1511 mc->reset( pose_in );
1514 for(Size i = 1; i <= outer_cycles; i++) {
1515 mc->recover_low( pose_in );
1518 for ( Size j = 1; j <= inner_cycles; j++ ) {
1519 temperature *= gamma;
1520 mc->set_temperature( temperature );
1521 wiggle_cdr_h3->apply( pose_in );
1522 loop_min_mover->apply( pose_in );
1524 mc->boltzmann( pose_in );
1528 mc->recover_low( pose_in );
1532 loop_min_mover->apply( pose_in );
1537 TR <<
"H3M Finished Centroid Relaxing Loop" << std::endl;
1545 using namespace pack::task;
1546 using namespace pack::task::operation;
1550 TR <<
"CDRH3Modeler Reinitializing Packer Task" << std::endl;
1554 tf_ =
new TaskFactory;
1556 TR <<
"CDRH3Modeler Setting Up Packer Task" << std::endl;
1569 unboundrot->initialize_from_command_line();
1571 new operation::AppendRotamerSet( unboundrot );
1572 tf_->push_back( unboundrot_operation );
1578 TR <<
"CDRH3Modeler Done: Setting Up Packer Task" << std::endl;