Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GeometricSolEnergy.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 /// @file core/scoring/methods/GeometricSolEnergy.hh
11 /// @brief Hydrogen bond energy method class declaration
12 /// @author Phil Bradley
13 /// @author Andrew Leaver-Fay
14 
15 
16 #ifndef INCLUDED_core_scoring_geometric_solvation_GeometricSolEnergy_hh
17 #define INCLUDED_core_scoring_geometric_solvation_GeometricSolEnergy_hh
18 
19 // Unit Headers
21 
22 #include <core/types.hh>
23 
24 // Package headers
25 // AUTO-REMOVED #include <core/scoring/hbonds/constants.hh>
30 // AUTO-REMOVED #include <core/scoring/methods/EnergyMethodOptions.hh>
31 
32 // Project headers
33 #include <core/pose/Pose.fwd.hh>
34 // AUTO-REMOVED #include <core/scoring/EnergyMap.hh>
35 
37 #include <utility/vector1.hh>
38 
39 
40 namespace core {
41 namespace scoring {
42 namespace geometric_solvation {
43 
44 ///
46 public:
48 public:
49 
50  ///
52 
53  ///@brief copy c-tor
55 
56  /// clone
57  virtual
59  clone() const;
60 
61  ///
62  virtual
63  void
64  setup_for_scoring( pose::Pose & pose, ScoreFunction const & ) const;
65 
66  ///
67  virtual
68  void
69  setup_for_derivatives( pose::Pose & pose, ScoreFunction const & ) const;
70 
71  /////////////////////////////////////////////////////////////////////////////
72  // scoring
73  /////////////////////////////////////////////////////////////////////////////
74 
75  /// This evaluates everything for now,
76  /// but eventually may want to split this
77  /// based on backbone/backbone vs. others,
78  /// as is carried out in HBondEnergy.cc
79  virtual
80  void
82  conformation::Residue const & rsd1,
83  conformation::Residue const & rsd2,
84  pose::Pose const & pose,
85  ScoreFunction const &,
86  EnergyMap & emap
87  ) const;
88 
89  void
91  id::AtomID const & atom_id,
92  pose::Pose const & pose,
93  EnergyMap const & weights,
94  Vector & F1,
95  Vector & F2
96  ) const;
97 
98  /// f1 and f2 are zeroed
99  virtual
100  void
102  id::AtomID const & atom_id,
103  pose::Pose const & pose,
104  kinematics::DomainMap const &,
105  ScoreFunction const &,
106  EnergyMap const & weights,
107  Vector & F1,
108  Vector & F2
109  ) const;
110 
111  Real
113  id::AtomID const & atom_id,
114  pose::Pose const & pose
115  ) const;
116 
117  ///
118  // virtual
119  // void
120  // finalize_total_energy(
121  // pose::Pose & pose,
122  // ScoreFunction const &,
123  // EnergyMap & totals
124  // ) const;
125 
126  virtual
127  bool
128  defines_intrares_energy( EnergyMap const & weights ) const;
129 
130  virtual
131  void
133  conformation::Residue const & rsd,
134  pose::Pose const & pose,
135  ScoreFunction const & ,
136  EnergyMap & emap
137  ) const;
138 
139  virtual
140  Distance
142 
143  //Real
144  //hydrogen_interaction_cutoff2() const;
145 
146  ///@brief GeometricSolEnergy is context sensitive
147  virtual
149  utility::vector1< bool > & context_graphs_required ) const;
150 
151 private:
152 
153  inline
154  Real
156  conformation::Residue const & polar_rsd,
157  conformation::Residue const & occ_rsd,
158  pose::Pose const & pose ) const;
159 
160  inline
161  Real
163  conformation::Residue const & don_rsd,
164  conformation::Residue const & occ_rsd,
165  pose::Pose const & pose ) const;
166 
167  inline
168  Real
170  conformation::Residue const & acc_rsd,
171  conformation::Residue const & occ_rsd,
172  pose::Pose const & pose ) const;
173 
174  inline
175  Real
177  bool const & is_donor,
178  hbonds::HBEvalTuple const & hbond_eval_type,
179  Vector const & polar_atm_xyz,
180  Vector const & base_atm_xyz,
181  Vector const & occluding_atm_xyz,
182  Size const & polar_nb,
183  Size const & occ_nb,
184  bool const update_deriv = false,
186  ) const;
187 
188  inline
189  void
191  Vector const & base_v,
192  Vector const & atom_v,
193  Vector const & water_v,
194  Vector & water_base_v,
195  Real const & xH /*cos(theta)*/,
196  Distance const & bond_length ) const;
197 
198  inline
199  Real
201  Vector const & base_atm_xyz,
202  Vector const & polar_atm_xyz,
203  Vector const & occluding_atm_xyz ) const;
204 
205  bool
206  atom_is_donor( conformation::Residue const & rsd, Size const atm ) const;
207 
208  bool
209  atom_is_donor_h( conformation::Residue const & rsd, Size const atm ) const;
210 
211  bool
212  atom_is_acceptor( conformation::Residue const & rsd, Size const atm ) const;
213 
214  bool
215  atom_is_heavy( conformation::Residue const & rsd, Size const atm ) const;
216 
217 
218  void
220  Size const & don_h_atm,
221  conformation::Residue const & don_rsd,
222  Size const & occ_atm,
223  conformation::Residue const & occ_rsd,
224  pose::Pose const & pose,
225  Real & energy,
226  bool const update_deriv = false,
228  ) const;
229 
230  void
232  Size const & acc_atm,
233  conformation::Residue const & acc_rsd,
234  Size const & occ_atm,
235  conformation::Residue const & occ_rsd,
236  pose::Pose const & pose,
237  Real & energy,
238  bool const update_deriv = false,
240  ) const;
241 
242  Real
244  conformation::Residue const & rsd,
245  pose::Pose const & pose ) const;
246 
247  Real
249  conformation::Residue const & rsd,
250  pose::Pose const & pose ) const;
251 
252  Vector
253  get_acceptor_base_atm_xyz( conformation::Residue const & acc_rsd, Size const & acc_atm ) const;
254 
255 
256 private:
257 
258  /////////////////////////////////////////////////////////////////////////////
259  // data
260  /////////////////////////////////////////////////////////////////////////////
262 
263  // no Hbonds longer than sqrt of this (the square)
268  bool const verbose_;
269 virtual
270 core::Size version() const;
271 };
272 
273 } // hbonds
274 } // scoring
275 } // core
276 
277 #endif
278