38 #include <basic/Tracer.hh>
40 #include <ObjexxFCL/format.hh>
46 #include <utility/vector1.hh>
49 using namespace ObjexxFCL::fmt;
52 namespace optimization {
64 using namespace core::conformation::symmetry;
71 Real const start_score( scorefxn( pose ) );
74 make_semisymmetric_movemap( pose, move_map, semisym_move_map );
103 Multivec dofs( sym_min_map.nangles() );
104 sym_min_map.copy_dofs_from_pose( pose, dofs );
106 Real const start_func( f( dofs ) );
121 minimizer.
run( dofs );
123 Real const end_func( f( dofs ) );
136 sym_min_map.reset_jump_rb_deltas( pose, dofs );
139 Real const end_score( scorefxn( pose ) );
147 static basic::Tracer core_optimize(
"core.optimize", basic::t_debug);
148 core_optimize <<
"SymAtomTreeMinimizer::run: nangles= " << sym_min_map.nangles() <<
149 " start_score: " << F(12,3,start_score) <<
150 " start_func: " << F(12,3,start_func ) <<
151 " end_score: " << F(12,3,end_score ) <<
152 " end_func: " << F(12,3,end_func ) << std::endl;
159 SymAtomTreeMinimizer::make_semisymmetric_movemap(
165 using namespace core::conformation::symmetry;
169 dynamic_cast<SymmetricConformation const &> ( pose.
conformation()) );
174 move_map_semisym = move_map_sym;
179 if ( symm_info->get_dof_derivative_weight( null_id , SymmConf ) > 0 ) {
181 if ( symm_info->jump_is_independent( i ) )
continue;
183 Size master_i = symm_info->jump_follows( i );
185 for (
int j=1; j<= 6; ++j ) {
191 bool allow ( move_map_sym.
get( id_master ) );
192 move_map_semisym.
set(
id, allow );
201 SymAtomTreeMinimizer::make_assymetric_movemap(
207 using namespace core::conformation::symmetry;
211 dynamic_cast<SymmetricConformation const &> ( pose.
conformation()) );
216 if ( symm_info->bb_is_independent( i ) ) {
217 bool bb ( move_map_sym.
get_bb(i) );
218 bool chi ( move_map_sym.
get_chi(i) );
219 move_map_asym.
set_bb ( i, bb );
220 move_map_asym.
set_chi( i, chi );
221 for ( std::vector< Size>::const_iterator
222 clone = symm_info->bb_clones( i ).begin(),
223 clone_end = symm_info->bb_clones( i ).end();
231 if ( symm_info->jump_is_independent( i ) ) {
232 for (
int j=1; j<= 6; ++j ) {
235 DOF_IDs
const & dofs( symm_info->dependent_dofs(
id, SymmConf ) );
236 bool allow ( move_map_sym.
get(
id ) );
237 move_map_asym.
set(
id, allow );
238 for ( DOF_IDs::const_iterator dof =dofs.begin(), dofe= dofs.end(); dof != dofe; ++dof ) {
239 move_map_asym.
set( *dof, allow );