41 #include <basic/Tracer.hh>
44 #include <ObjexxFCL/FArray1D.hh>
46 #include <utility/vector1.hh>
53 static basic::Tracer
tr(
"protocols.flexpack.FlexPacker");
62 ) : task_(task), scorefxn_(scorefxn)
90 using namespace ObjexxFCL;
94 scorefxn_->setup_for_packing( pose,
task_->repacking_residues(),
task_->designing_residues() );
98 flex_rotsets->set_frames( pose,
frames_ );
102 opts.hbond_options().decompose_bb_hb_into_pair_energies(
true );
108 flex_rotsets->build_rotamers( pose, *
scorefxn_, *flex_neighbor_graph );
109 tr <<
"Flexxbb RotamerSet contains a total of " << flex_rotsets->nrotamers() <<
" rotamers." << std::endl;
114 flex_ig->initialize( *flex_rotsets );
115 flex_rotsets->precompute_energies( pose, *
scorefxn_, flex_neighbor_graph, *flex_ig );
117 FArray1D_int bestrotamer_at_seqpos( pose.
total_residue(), 0 );
118 FArray1D< PackerEnergy > rot_freq( flex_rotsets->nrotamers() );
123 tr <<
"Current rot index: ";
124 for (
Size ii = 1; ii <= flex_rotsets->nmoltenres(); ++ii ) {
125 tr << current_rot_index( ii ) <<
" ";
131 bestrotamer_at_seqpos, bestE,
false , flex_ig,
132 flex_rotsets, current_rot_index,
false, rot_freq);
134 tr <<
"FlexbbIG Memory Use: " << flex_ig->getTotalMemoryUsage() <<
" bytes " << std::endl;
136 using namespace core::scoring;
140 if (
scorefxn_->weights()[ iist ] != 0.0 ) {
147 tr <<
"Other Context Score: " << oc_sfxn( pose ) << std::endl;
149 tr <<
"OC weights: ";
153 tr << std::endl <<
"Correct Context Score: " << (*scorefxn_)( pose ) << std::endl;
156 tr <<
"scorefxn_ weights: ";
161 std::cerr <<
"Start score: " << oc_sfxn( pose ) << std::endl;
164 tr <<
"Final energy: " << bestE << std::endl;
165 for (
Size ii = 1; ii <= flex_rotsets->nmoltenres(); ++ii ) {
166 Size iiresid =flex_rotsets->moltenres_2_resid( ii );
170 *(flex_rotsets->rotamer( bestrotamer_at_seqpos( iiresid ))),
175 tr <<
"The final assigned backbone fragments are: ";
176 for(
Size jj = 1; jj<= flex_rotsets->nflexible_segments(); ++jj){
177 Size representative_seqpos = flex_rotsets->flexsegment_start_resid( jj );
178 Size representative_moltenres = flex_rotsets->resid_2_moltenres( representative_seqpos );
179 Size rep_rotamer = bestrotamer_at_seqpos( representative_seqpos ) - flex_rotsets->nrotamer_offset_for_moltenres( representative_moltenres );
181 tr <<
"for segment " << jj <<
" is " << flex_ig->get_bb_for_state( representative_moltenres , rep_rotamer ) ;
188 tr <<
"Other Context Score: " << oc_sfxn( pose ) << std::endl;
190 tr <<
"OC weights: ";
194 tr << std::endl <<
"Correct Context Score: " << (*scorefxn_)( pose ) << std::endl;
197 tr <<
"scorefxn_ weights: ";
220 frames_.push_back( *frame_it );