Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MultiThreadingMover.cc
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10 /// @file protocols/comparative_modeling/MultiThreadingMover.hh
11 /// @brief
12 /// @author James Thompson
13 
17 
18 #include <core/types.hh>
19 
20 
22 
23 #include <core/pose/util.hh>
24 #include <core/pose/Pose.hh>
25 // AUTO-REMOVED #include <core/pose/PDBInfo.hh>
26 
27 // AUTO-REMOVED #include <core/conformation/Residue.functions.hh>
29 
31 
32 #include <core/id/AtomID.hh>
33 #include <core/id/AtomID_Map.hh>
35 
37 // AUTO-REMOVED #include <core/sequence/SWAligner.hh>
39 // AUTO-REMOVED #include <core/sequence/SimpleScoringScheme.hh>
42 // AUTO-REMOVED #include <core/sequence/util.hh>
43 
44 // AUTO-REMOVED #include <core/pack/optimizeH.hh>
45 // AUTO-REMOVED #include <core/pack/pack_missing_sidechains.hh>
46 
48 // AUTO-REMOVED #include <core/scoring/ScoreFunction.hh>
50 // AUTO-REMOVED #include <core/scoring/ScoreFunctionFactory.hh>
51 
52 // AUTO-REMOVED #include <core/kinematics/MoveMap.hh>
54 #include <basic/Tracer.hh>
55 
56 // AUTO-REMOVED #include <numeric/random/random.hh>
57 
58 #include <utility/vector1.hh>
59 // AUTO-REMOVED #include <utility/string_util.hh>
60 
61 // C++ headers
62 #include <string>
63 
64 //Auto Headers
65 #include <core/pose/util.tmpl.hh>
66 // option key includes
67 
68 
69 
70 namespace protocols {
71 namespace comparative_modeling {
72 
74  Alignments const & alignments,
75  Poses const & template_poses
76 ) :
77  protocols::moves::Mover( "MultiThreadingMover" ),
78  template_poses_( template_poses ),
79  alignments_( alignments ),
80  build_query_loops_( true ),
81  repack_query_( true ),
82  randomize_loop_coords_( false ),
83  min_loop_size_( 3 )
84 {}
85 
86 //boolean setters
87 void MultiThreadingMover::build_loops( bool setting ) {
88  build_query_loops_ = setting;
89 }
90 
92  randomize_loop_coords_ = setting;
93 }
94 
95 void MultiThreadingMover::repack_query( bool setting ) {
96  repack_query_ = setting;
97 }
98 
99 //boolean getters
101  return build_query_loops_;
102 }
103 
105  return repack_query_;
106 }
107 
109  return randomize_loop_coords_;
110 }
111 
113  min_loop_size_ = new_size;
114 }
115 
117  return min_loop_size_;
118 }
119 
121  return frag_libs_;
122 }
123 
126 ) {
127  frag_libs_ = new_libs;
128 }
129 
131  core::pose::Pose & query_pose
132 ) {
133  using std::set;
134  using core::Size;
135  using core::pose::Pose;
137  static basic::Tracer tr(
138  "protocols.comparative_modeling.MultiThreadingMover.apply"
139  );
140 
141  check_internals();
142 
143  // loop over alignments and template poses, thread from each
144  // one.
145 
146  core::id::AtomID_Mask missing( true );
147  core::pose::initialize_atomid_map( missing, query_pose ); // used for repacking atoms
148  for ( Size idx = 1; idx <= template_poses_.size(); ++idx ) {
149  Pose const & template_pose( template_poses_[idx] );
150  SequenceAlignment const & aln( alignments_[idx] );
151 
152  ThreadingMover threader( aln, template_pose );
153  threader.build_loops(false);
154  threader.repack_query(false);
155  threader.randomize_loop_coords(false);
156  threader.apply(query_pose);
158  for ( Size resi = 1; resi <= query_pose.total_residue(); ++resi ) {
159  if ( map[resi] != 0 ) {
160  for ( Size atomj = 1; atomj <= query_pose.residue(resi).natoms(); ++atomj ) {
161  missing[ core::id::AtomID( atomj, resi ) ] = false;
162  }
163  }
164  }
165  }
166  randomize_selected_atoms( query_pose, missing );
167 
168  // rebuild loops
169 
170  // repack query
171 } // apply
172 
175  return "MultiThreadingMover";
176 }
177 
179  runtime_assert( template_poses_.size() == alignments_.size() );
180 }
181 
182 } // comparative_modeling
183 } // protocols