29 #include <basic/Tracer.hh>
30 #include <utility/exit.hh>
31 #include <numeric/random/random.hh>
34 #include <utility/vector1.hh>
36 #include <basic/options/keys/fold_and_dock.OptionKeys.gen.hh>
37 #include <basic/options/option.hh>
42 namespace simple_moves {
43 namespace asym_fold_and_dock {
45 static basic::Tracer
TR(
"protocols.simple_moves.symmetry.AsymFoldandDockMoveRbJumpMover");
46 static numeric::random::RandomGenerator
RG(44525243);
49 : protocols::moves::
Mover(
"AsymFoldandDockMoveRbJumpMover"), chain_start_( chain_start )
61 using namespace core::kinematics;
72 Size residue_that_builds_anchor(0);
73 for (
Size i=1; i<= f.num_jump(); ++i ) {
74 Size res( f.downstream_jump_residue( i ) );
75 Size res_start( f.upstream_jump_residue( i ) );
78 residue_that_builds_anchor = res_start;
82 runtime_assert(anchor_start > 0 && residue_that_builds_anchor > 0 );
84 TR <<
"The anchor residues are at residue " << residue_that_builds_anchor <<
" : " << anchor_start << std::endl;
88 Size anchor_chain2 =
static_cast<Size>( RG.uniform() * (nres_flexible_segment) ) +
91 if ( basic::options::option[ basic::options::OptionKeys::fold_and_dock::set_anchor_at_closest_point ] )
97 if ( dist < mindist ){
105 TR <<
"The anchor residues are moved to residue " << anchor_chain1 <<
" : " << anchor_chain2 << std::endl;
107 Size num_jumps( f.num_jump() );
108 Size num_cuts( f.num_cutpoint() );
111 ObjexxFCL::FArray1D_int cuts( num_cuts );
112 ObjexxFCL::FArray2D_int jumps( 2, num_jumps );
115 for (
Size i = 1; i<= num_jumps; ++i ) {
116 int down ( f.downstream_jump_residue(i) );
117 int up ( f.upstream_jump_residue(i) );
127 for (
Size i = 1; i<= num_cuts; ++i ) {
128 cuts(i) = cuts_vector[i];
131 int root ( f.root() );
133 jumps(1, jump_number ) = anchor_chain1;
134 jumps(2, jump_number ) = anchor_chain2;
147 f.tree_from_jumps_and_cuts( pose.
conformation().
size(), num_jumps, jumps, cuts );
156 return "AsymFoldandDockMoveRbJumpMover";