41 #include <basic/MetricValue.hh>
42 #include <basic/Tracer.hh>
59 #include <utility/vector0.hh>
60 #include <utility/vector1.hh>
64 namespace components {
67 static basic::Tracer
TR(
"protocols.forge.components.BDR" );
73 use_fullmer_( false ),
74 use_sequence_bias_( false ),
75 max_linear_chainbreak_( 0.07 ),
76 centroid_loop_mover_str_(
"RemodelLoopMover" ),
77 redesign_loop_neighborhood_( true ),
88 manager_( rval.manager_ ),
89 design_info_( rval.design_info_ ),
90 use_fullmer_( rval.use_fullmer_ ),
91 use_sequence_bias_( rval.use_sequence_bias_ ),
92 max_linear_chainbreak_( rval.max_linear_chainbreak_ ),
93 centroid_loop_mover_str_( rval.centroid_loop_mover_str_ ),
94 redesign_loop_neighborhood_( rval.redesign_loop_neighborhood_ ),
95 resfile_( rval.resfile_ ),
96 dr_cycles_( rval.dr_cycles_ ),
97 centroid_sfx_( rval.centroid_sfx_->
clone() ),
98 fullatom_sfx_( rval.fullatom_sfx_->
clone() )
100 if ( rval.
vlb_.get() ) {
112 return new BDR( *
this );
142 String const & aa_during_design_refine
146 if ( !aa_during_design_refine.empty() ) {
147 design_info_.push_back( std::make_pair( bi->original_interval(), aa_during_design_refine ) );
193 using basic::MetricValue;
203 dssp.insert_ss_into_pose( pose );
213 CalculatorFactory::Instance().register_calculator(
237 CalculatorFactory::Instance().register_calculator(
239 new BuriedUnsatisfiedPolarsCalculator(
246 MetricValue< std::set< Size > > loops_neighborhood;
248 CalculatorFactory::Instance().register_calculator(
250 new BuriedUnsatisfiedPolarsCalculator(
253 loops_neighborhood.value()
283 Pose archive_pose = pose;
284 Pose modified_archive_pose = archive_pose;
289 bool mod_ap_is_full_atom =
true;
290 for (
Size i = 1, ie = modified_archive_pose.
n_residue(); mod_ap_is_full_atom && i != ie; ++i ) {
294 if ( !mod_ap_is_full_atom ) {
302 protein_residues.push_back( i );
343 (*fullatom_sfx_)( pose );
410 if ( new_positions.find( i ) == new_positions.end() ) {
411 repack_op->include_residue( i );
415 design_tf->push_back( repack_op );
420 if ( !di->second.empty() ) {
423 assert( original2modified_interval_endpoints.find( di->first.left ) != original2modified_interval_endpoints.end() );
425 if ( aa.find( SegmentInsert::insertion_char() ) != String::npos ) {
445 PackRotamersMover design( sfx );
446 design.task_factory( design_tf );
447 design.apply( pose );
453 LoopMover_Refine_CCD refine( loops, sfx );
455 refine.set_task_factory( refine_tf );
456 refine.apply( pose );
472 bool cbreaks_pass =
true;
474 if ( l->cut() > 0 ) {
476 TR <<
"design_refine: final chainbreak = " << c << std::endl;
505 tf->push_back( rrf );
516 String const & design_str,
525 Size const offset = original2modified_interval_endpoints.find( original_interval.
left )->second;
526 for (
Size i = 0, ie = design_str.length(); i < ie; ++i ) {
529 switch ( design_str.at( i ) ) {
549 String const & design_str,
562 char const insert_char = SegmentInsert::insertion_char();
566 original2modified_interval_endpoints.find( original_interval.
left )->second,
567 original2modified_interval_endpoints.find( original_interval.
right )->second
570 Size const insert_char_idx = design_str.find( insert_char );
571 Size const left_nres = insert_char_idx;
572 Size const right_nres = design_str.size() - left_nres - 1;
573 Size const insert_nres = interval.
length() - left_nres - right_nres;
579 aa.replace( insert_char_idx, 1, insert_nres, insert_char );
584 Size const left_offset = interval.left;
585 for (
Size i = 0, ie = aa.size(); i < ie; ++i ) {
588 if ( aa.at( i ) == insert_char ) {
589 repack_op->include_residue( i + left_offset );
591 }
else if ( aa.at( i ) ==
's' ) {
593 }
else if ( aa.at( i ) ==
'.' ) {
602 design_tf->push_back( repack_op );
611 static String surface_aa =
"ADEGHIKLMNPQRSTV";
614 for (
Size i = 0, ie = surface_aa.length(); i < ie; ++i ) {