Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MPIPool_ConvergenceCheck.hh
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 #ifndef INCLUDED_protocols_canonical_sampling_mc_convergence_checks_MPIPool_ConvergenceCheck_hh
11 #define INCLUDED_protocols_canonical_sampling_mc_convergence_checks_MPIPool_ConvergenceCheck_hh
15 // AUTO-REMOVED #include <core/io/silent/SilentFileData.hh>
16 #include <ObjexxFCL/FArray3D.hh>
17 #include <ObjexxFCL/FArray2D.hh>
18 #include <core/pose/Pose.hh>
19 
20 #include <utility/vector1.hh>
21 
22 //Auto Headers
23 #include <platform/types.hh>
24 #include <core/types.hh>
25 #include <core/chemical/AA.hh>
31 #include <core/id/AtomID.fwd.hh>
32 #include <core/id/DOF_ID.fwd.hh>
35 #include <core/id/TorsionID.fwd.hh>
45 #include <core/pose/PDBInfo.fwd.hh>
46 #include <core/pose/Pose.fwd.hh>
63 #include <utility/down_cast.hh>
64 #include <utility/vector1.fwd.hh>
65 #include <utility/vector1_bool.hh>
66 #include <utility/vectorL.fwd.hh>
67 #include <utility/vectorL.hh>
68 #include <utility/vectorL_Selector.hh>
69 #include <utility/vectorL_bool.hh>
70 #include <utility/excn/EXCN_Base.hh>
71 #include <utility/excn/Exceptions.hh>
72 #include <utility/pointer/ReferenceCount.fwd.hh>
73 #include <utility/pointer/ReferenceCount.hh>
74 #include <utility/pointer/access_ptr.fwd.hh>
75 #include <utility/pointer/access_ptr.hh>
76 #include <utility/pointer/owning_ptr.functions.hh>
77 #include <utility/pointer/owning_ptr.fwd.hh>
78 #include <utility/pointer/owning_ptr.hh>
79 #include <utility/signals/BufferedSignalHub.fwd.hh>
80 #include <utility/signals/BufferedSignalHub.hh>
81 #include <utility/signals/Link.fwd.hh>
82 #include <utility/signals/Link.hh>
83 #include <utility/signals/LinkUnit.fwd.hh>
84 #include <utility/signals/LinkUnit.hh>
85 #include <utility/signals/SignalHub.fwd.hh>
86 #include <utility/signals/SignalHub.hh>
87 #include <numeric/xyzMatrix.fwd.hh>
88 #include <numeric/xyzVector.fwd.hh>
89 #include <ObjexxFCL/Dimension.fwd.hh>
90 #include <ObjexxFCL/Dimension.hh>
91 #include <ObjexxFCL/DimensionExpression.hh>
92 #include <ObjexxFCL/DynamicIndexRange.fwd.hh>
93 #include <ObjexxFCL/DynamicIndexRange.hh>
94 #include <ObjexxFCL/FArray.fwd.hh>
95 #include <ObjexxFCL/FArray.hh>
96 #include <ObjexxFCL/FArray1.fwd.hh>
97 #include <ObjexxFCL/FArray1.hh>
98 #include <ObjexxFCL/FArray1D.fwd.hh>
99 #include <ObjexxFCL/FArray1D.hh>
100 #include <ObjexxFCL/FArray2.fwd.hh>
101 #include <ObjexxFCL/FArray2.hh>
102 #include <ObjexxFCL/FArray2D.fwd.hh>
103 #include <ObjexxFCL/FArray2P.fwd.hh>
104 #include <ObjexxFCL/FArray2P.hh>
105 #include <ObjexxFCL/FArray3.fwd.hh>
106 #include <ObjexxFCL/FArray3.hh>
107 #include <ObjexxFCL/FArray3D.fwd.hh>
108 #include <ObjexxFCL/FArrayInitializer.fwd.hh>
109 #include <ObjexxFCL/FArrayInitializer.hh>
110 #include <ObjexxFCL/FArraySection.fwd.hh>
111 #include <ObjexxFCL/FArraySection.hh>
112 #include <ObjexxFCL/FArrayTraits.fwd.hh>
113 #include <ObjexxFCL/FArrayTraits.hh>
114 #include <ObjexxFCL/IndexRange.fwd.hh>
115 #include <ObjexxFCL/IndexRange.hh>
116 #include <ObjexxFCL/InitializerSentinel.hh>
117 #include <ObjexxFCL/Observer.fwd.hh>
118 #include <ObjexxFCL/Observer.hh>
119 #include <ObjexxFCL/ObserverMulti.hh>
120 #include <ObjexxFCL/ObserverSingle.hh>
121 #include <ObjexxFCL/ProxySentinel.hh>
122 #include <ObjexxFCL/SetWrapper.fwd.hh>
123 #include <ObjexxFCL/Star.fwd.hh>
124 #include <ObjexxFCL/Star.hh>
125 #include <ObjexxFCL/proxy_const_assert.hh>
126 #include <algorithm>
127 #include <cassert>
128 #include <cmath>
129 #include <cstddef>
130 #include <cstdio>
131 #include <cstdlib>
132 //#include <execinfo.h>
133 #include <iosfwd>
134 #include <limits>
135 #include <map>
136 #include <ostream>
137 #include <sstream>
138 #include <string>
139 #include <vector>
140 #include <basic/MetricValue.fwd.hh>
141 #include <basic/datacache/BasicDataCache.fwd.hh>
142 #include <boost/bind.hpp>
143 #include <boost/function.hpp>
144 
145 
146 
147 
148 
149 namespace protocols {
150 namespace canonical_sampling {
151 namespace mc_convergence_checks {
152 
153 
154 class MPIPool_RMSD : public Pool_RMSD {
155 
156 public:
157 
159 
160 MPIPool_RMSD( std::string silent_file );
161 
162  /**
163 void register_options();
164 
165 void set_defaults_from_cmdline();
166  **/
167 
168 void send_update(
169  int const receiving_rank,
170  int const message_type
171 );
172 
173 void field_message(
174  int& sending_rank,
175  int& message_type
176 );
177 
178 void farray_to_string(
179  ObjexxFCL::FArray2D<double>& xyz,
180  std::string& string
181 );
182 
183 void string_to_farray(
184  ObjexxFCL::FArray2D<double>& xyz,
185  std::string& string,
186  int xyz_u1,
187  int xyz_u2
188 );
189 
191  core::Real threshold
192 );
193 
194 void set_discovered_out( std::string new_out );
195 
197 
198  /**
199 void broadcast_new_coords(
200  ObjexxFCL::FArray2D<double>& xyz,
201  std::string& tag
202 );
203  **/
204 
205 bool trajectories_finished();
206 
207 void finalize();
208 
209 void master_go();
210 
211 bool is_master_node();
212 
213 
215  core::pose::Pose const& pose,
216  std::string& best_decoy,
217  core::Real& best_rmsd,
218  core::Real transition_threshold
219 );
220 
221 
222 
223 private:
231 
232  // static bool options_registered_;
233 
234 
235  void initialize();
236 
237  void increment_pool_size( core::Real new_structures );
238 
239  void send_newest_xyz(
240  core::Size num_to_get,
241  int const receiving_rank
242  );
243 
244  void send_xyz(
245  ObjexxFCL::FArray2D<double>& xyz,
246  std::string& tag,
247  core::Size rank
248  );
249 
251 
252  void receive_newest_xyz(
253  core::Size num_to_get,
254  int const sending_rank
255  );
256 
257  void receive_xyz(
258  ObjexxFCL::FArray2D<double>& xyz,
259  std::string& tag,
260  core::Size rank
261  );
262 
263  void send_accepted(bool truefalse, core::Size rank);
264  bool receive_is_accepted(core::Size rank);
265 
266  //int pool_status();
267 
268 };
269 
270 } //mc_convergence_checks
271 } //moves
272 } //protocols
273 
274 #endif