Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RmsdEvaluator.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 PoseEvaluator
11 /// @brief PoseEvaluator
12 /// @detailed
13 ///
14 ///
15 /// @author Oliver Lange
16 
17 
18 
19 // Unit Headers
21 
22 // Package Headers
23 
24 // Project Headers
26 #include <core/pose/Pose.hh>
27 #include <protocols/jd2/util.hh>
29 // ObjexxFCL Headers
30 
31 // Utility headers
32 #include <basic/Tracer.hh>
33 #include <core/scoring/rms_util.hh>
34 
35 // option key includes
36 
37 // AUTO-REMOVED #include <basic/options/keys/in.OptionKeys.gen.hh>
38 
40 #include <utility/exit.hh>
41 #include <utility/vector1.hh>
42 
43 //Auto Headers
44 static basic::Tracer tr("protocols.evalution.RMSD");
45 namespace protocols {
46 namespace simple_filters {
47 using namespace core;
48 
49 
50 
51 
53  : evaluation::SingleValuePoseEvaluator< Real > ("rms"+tag ),
54  rmsd_pose_( pose ),
55  start_( start ),
56  end_( end ),
57  bGDT_ ( bGDT ),
58  tag_ ( tag ),
59  report_gdt_components_ ( false )
60 {
61  runtime_assert( start >=1 );
62  runtime_assert( end <= pose -> total_residue() );
63 }
64 
66 
67 RmsdEvaluator::RmsdEvaluator( core::pose::PoseCOP pose, std::string tag, bool bGDT /* default true */ )
68  : evaluation::SingleValuePoseEvaluator< Real > ("rms"+tag),
69  rmsd_pose_( pose ),
70  start_( 1 ),
71  end_( pose->total_residue() ),
72  bGDT_ ( bGDT ),
73  tag_( tag ),
74  report_gdt_components_ ( false )
75 {}
76 
77 
78 void
80  static basic::Tracer tr("protocols.Evaluator.RMSD");
81  tr.Debug << "compute RMSD for " << tag << " for residues " << start_ << "..." << end_ << std::endl;
82 
83  core::Real rmsd( apply( pose ) );
84  pss.add_energy( "rms"+tag_, rmsd );
85 
86 
87  if ( bGDT_ ) { //move into GDT_Evaluator
88  tr.Debug << "compute GDT-score for " << tag << std::endl;
89  core::Real m_1_1, m_2_2, m_3_3, m_4_3, m_7_4;
90  core::Real gdtmm = core::scoring::CA_gdtmm( *rmsd_pose_, pose, m_1_1, m_2_2, m_3_3, m_4_3, m_7_4 );
91  pss.add_energy ( "gdtmm"+tag_, gdtmm );
92  if ( report_gdt_components_ ) {
93  pss.add_energy ( "m11", m_1_1 );
94  pss.add_energy ( "m22", m_2_2 );
95  pss.add_energy ( "m33", m_3_3 );
96  pss.add_energy ( "m43", m_4_3 );
97  pss.add_energy ( "m74", m_7_4 );
98  }
99  tr.Debug << "compute maxsub for " << tag << std::endl;
100  int maxsub = core::scoring::CA_maxsub( *rmsd_pose_, pose );
101  pss.add_energy( "maxsub", maxsub );
102  }
103 }
104 
106  runtime_assert( rmsd_pose_ );
107  core::Real rmsd;
108  if ( start_ == 1 && end_ == rmsd_pose_->total_residue() ) {
109  runtime_assert( pose.total_residue() >= end_ );
110  rmsd = core::scoring::CA_rmsd( *rmsd_pose_, pose );
111  } else {
112  runtime_assert( pose.total_residue() >= end_ );
113  rmsd = core::scoring::CA_rmsd( *rmsd_pose_, pose, start_, end_ );
114  }
115  return rmsd;
116 }
117 
118 
119 SelectRmsdEvaluator::SelectRmsdEvaluator( core::pose::PoseCOP pose, std::list< Size > const& selection, std::string tag, bool CAonly )
120  : evaluation::SingleValuePoseEvaluator< Real >( "rms"+tag ),
121  rmsd_pose_( pose ),
122  selection_( selection ),
123  tag_ ( tag ),
124  CAonly_( CAonly )
125 {
126 
127 }
128 
130  : evaluation::SingleValuePoseEvaluator< Real >( "rms"+tag ),
131  rmsd_pose_( pose ),
132  tag_( tag ),
133  CAonly_( CAonly )
134 {
135  copy( selection.begin(), selection.end(), std::back_inserter( selection_ ) );
136 }
137 
138 
140  : evaluation::SingleValuePoseEvaluator< Real >( "rms"+tag ),
141  rmsd_pose_( pose ),
142  tag_( tag ),
143  CAonly_( CAonly )
144 {
145  if ( pose ) evaluation::find_existing_residues( pose, tag, selection_ );
146 }
147 
149  : evaluation::SingleValuePoseEvaluator< Real >( "rms"+tag ),
150  rmsd_pose_( new core::pose::Pose( pose ) ),
151  tag_( tag ),
152  CAonly_( CAonly )
153 {
155 }
156 
157 Real
159  core::pose::PoseCOP target_pose = rmsd_pose_;
160  if ( !target_pose ) {
161  runtime_assert( jd2::jd2_used() );
162  target_pose = jd2::get_current_jobs_starting_pose();
163  }
164  if ( !target_pose ) utility_exit_with_message(" no target pose for rmsd simple_filters "+tag_ );
165  core::Real rmsd;
166  if ( selection_.size() > 0 ) {
167  if ( CAonly_ ) {
168  rmsd = core::scoring::CA_rmsd( *target_pose, pose, selection_ );
169  } else {
170  rmsd = core::scoring::all_atom_rmsd( *target_pose, pose, selection_ );
171  }
172  } else {
173  if ( CAonly_ ) {
174  rmsd = core::scoring::CA_rmsd( *target_pose, pose );
175  } else {
176  rmsd = core::scoring::all_atom_rmsd( *target_pose, pose );
177  }
178  }
179  return rmsd;
180 }
181 
183 SelectGdtEvaluator::SelectGdtEvaluator( core::pose::PoseCOP pose, std::list< Size > const& selection, std::string tag )
184  : evaluation::SingleValuePoseEvaluator< Real >( "gdtmm"+tag ),
185  rmsd_pose_( pose ),
186  selection_( selection ),
187  tag_ ( tag )
188 {
189 
190 }
191 
193  : evaluation::SingleValuePoseEvaluator< Real >( "gdtmm"+tag ),
194  rmsd_pose_( pose ),
195  tag_( tag )
196 {
197  copy( selection.begin(), selection.end(), std::back_inserter( selection_ ) );
198 }
199 
201  : evaluation::SingleValuePoseEvaluator< Real >( "gdtmm"+tag ),
202  rmsd_pose_( pose ),
203  tag_( tag )
204 {
205  if ( pose ) evaluation::find_existing_residues( pose, tag, selection_ );
206 }
207 
209  : evaluation::SingleValuePoseEvaluator< Real >( "gdtmm"+tag ),
210  rmsd_pose_( new core::pose::Pose( pose ) ),
211  tag_( tag )
212 {
214 }
215 
216 
217 Real
219  core::pose::PoseCOP target_pose = rmsd_pose_;
220  core::Real m_1_1, m_2_2, m_3_3, m_4_3, m_7_4;
221  if ( !target_pose ) {
222  runtime_assert( jd2::jd2_used() );
223  target_pose = jd2::get_current_jobs_starting_pose();
224  }
225  if ( !target_pose ) utility_exit_with_message(" no target pose for rmsd simple_filters "+tag_ );
226 
227  if ( selection_.size() ) {
228  return core::scoring::CA_gdtmm( *rmsd_pose_, pose, selection_, m_1_1, m_2_2, m_3_3, m_4_3, m_7_4 );
229  }
230  return core::scoring::CA_gdtmm( *rmsd_pose_, pose, m_1_1, m_2_2, m_3_3, m_4_3, m_7_4 );
231 }
232 
233 
234 SelectMaxsubEvaluator::SelectMaxsubEvaluator( core::pose::PoseCOP pose, std::list< Size > const& selection, std::string tag, core::Real rmsd_threshold )
235  : evaluation::SingleValuePoseEvaluator< Real >( "maxsub"+tag ),
236  rmsd_pose_( pose ),
237  selection_( selection ),
238  tag_ ( tag ),
239  rmsd_threshold_( rmsd_threshold )
240 {
241 
242 }
243 
245  : evaluation::SingleValuePoseEvaluator< Real >( "maxsub"+tag ),
246  rmsd_pose_( pose ),
247  tag_( tag ),
248  rmsd_threshold_( rmsd_threshold )
249 {
250  copy( selection.begin(), selection.end(), std::back_inserter( selection_ ) );
251 }
252 
254  : evaluation::SingleValuePoseEvaluator< Real >( "maxsub"+tag ),
255  rmsd_pose_( pose ),
256  tag_( tag ),
257  rmsd_threshold_( rmsd_threshold )
258 {
259  if ( pose ) evaluation::find_existing_residues( pose, tag, selection_ );
260 }
261 
263  : evaluation::SingleValuePoseEvaluator< Real >( "maxsub"+tag ),
264  rmsd_pose_( new core::pose::Pose( pose ) ),
265  tag_( tag ),
266  rmsd_threshold_( rmsd_threshold )
267 {
269 }
270 
271 
272 
273 Real
275  runtime_assert( rmsd_pose_ );
276  // core::Real m_1_1, m_2_2, m_3_3, m_4_3, m_7_4;
278  return maxsub;
279 }
280 
281 
283  : evaluation::SingleValuePoseEvaluator< Real > ("symmetric rms"+tag ),
284  rmsd_pose_( pose ) {}
285 
287 
288 Real
290 
292 }
293 
295  : evaluation::SingleValuePoseEvaluator< Real >( "looprms"+tag ),
296  rmsd_pose_( pose ),
297  loops_( loops ),
298  CAonly_( CAonly ),
299  superimpose_( superimpose )
300 {}
301 
303  : evaluation::SingleValuePoseEvaluator< Real >( "looprms"+tag ),
304  rmsd_pose_( pose ),
305  loops_( loops ),
306  core_( core ),
307  CAonly_( CAonly ),
308  superimpose_( superimpose )
309 {}
310 
311 
312 Real
314  core::pose::PoseCOP target_pose = rmsd_pose_;
315  bool temp_pose=false;
316  if ( !target_pose ) {
317  runtime_assert( jd2::jd2_used() );
318  temp_pose=true;
319  target_pose = jd2::get_current_jobs_starting_pose();
320  }
321  if ( !target_pose ) utility_exit_with_message(" no target pose for rmsd simple_filters "+name(0) );
322  core::Real rmsd;
323  if ( superimpose_ ) {
324  rmsd = protocols::loops::loop_rmsd_with_superimpose_core( *target_pose, pose, loops_, core_, CAonly_ /*CA_only*/, false /*bb_only*/ );
325  } else {
326  rmsd = protocols::loops::loop_rmsd( *target_pose, pose, loops_, CAonly_ /*CA_only*/, false /*bb_only*/ );
327  }
328  if ( temp_pose ) target_pose=NULL;
329  return rmsd;
330 }
331 
332 }
333 }