Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ContextIndependentGeometricSolEnergy.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/ContextIndependentGeometricSolEnergy.hh
11 /// @brief Hydrogen bond energy method class declaration
12 /// @author Parin Sripakdeevong (sripakpa@stanford.edu), Rhiju Das (rhiju@stanford.edu)
13 
14 
15 
16 #ifndef INCLUDED_core_scoring_geometric_solvation_ContextIndependentGeometricSolEnergy_hh
17 #define INCLUDED_core_scoring_geometric_solvation_ContextIndependentGeometricSolEnergy_hh
18 
19 // Unit Headers
21 #include <core/types.hh>
22 
23 // Package headers
24 // AUTO-REMOVED #include <core/scoring/hbonds/constants.hh>
29 
30 // Project headers
31 #include <core/pose/Pose.fwd.hh>
32 
33 //Auto Headers
35 
36 
37 namespace core {
38 namespace scoring {
39 namespace geometric_solvation {
40 
41 ///
43 public:
45 public:
46 
47  ///
49 
50  ///@brief copy c-tor
52 
53  /// clone
54  virtual
56  clone() const;
57 
58  ///
59  virtual
60  void
61  setup_for_scoring( pose::Pose & pose, ScoreFunction const & ) const;
62 
63  ///
64  virtual
65  void
66  setup_for_derivatives( pose::Pose & pose, ScoreFunction const & ) const;
67 
68  /////////////////////////////////////////////////////////////////////////////
69  // scoring
70  /////////////////////////////////////////////////////////////////////////////
71 
72  /// This evaluates everything for now,
73  /// but eventually may want to split this
74  /// based on backbone/backbone vs. others,
75  /// as is carried out in HBondEnergy.cc
76  virtual
77  void
79  conformation::Residue const & rsd1,
80  conformation::Residue const & rsd2,
81  pose::Pose const & pose,
82  ScoreFunction const &,
83  EnergyMap & emap
84  ) const;
85 
86  void
88  id::AtomID const & atom_id,
89  pose::Pose const & pose,
90  EnergyMap const & weights,
91  Vector & F1,
92  Vector & F2
93  ) const;
94 
95  /// f1 and f2 are zeroed
96  virtual
97  void
99  id::AtomID const & atom_id,
100  pose::Pose const & pose,
101  kinematics::DomainMap const &,
102  ScoreFunction const &,
103  EnergyMap const & weights,
104  Vector & F1,
105  Vector & F2
106  ) const;
107 
108  Real
110  id::AtomID const & atom_id,
111  pose::Pose const & pose
112  ) const;
113 
114 
115  virtual
116  bool
117  defines_intrares_energy( EnergyMap const & weights ) const;
118 
119  virtual
120  void
122  conformation::Residue const & rsd,
123  pose::Pose const & pose,
124  ScoreFunction const & ,
125  EnergyMap & emap
126  ) const;
127 
128  virtual
129  Distance
131 
132  // Undefined, commenting out to fix PyRosetta build Real hydrogen_interaction_cutoff2() const;
133 
134  ///@brief ContextIndependentGeometricSolEnergy is NOT context sensitive
135  virtual
137  utility::vector1< bool > & /*context_graphs_required*/ ) const;
138 
139 private:
140 
141  inline
142  Real
144  conformation::Residue const & polar_rsd,
145  conformation::Residue const & occ_rsd,
146  pose::Pose const & pose ) const;
147 
148  inline
149  Real
151  conformation::Residue const & don_rsd,
152  conformation::Residue const & occ_rsd,
153  pose::Pose const & pose ) const;
154 
155  inline
156  Real
158  conformation::Residue const & acc_rsd,
159  conformation::Residue const & occ_rsd,
160  pose::Pose const & pose ) const;
161 
162  inline
163  Real
165  bool const & is_donor,
166  hbonds::HBEvalTuple const & hbond_eval_type,
167  Vector const & polar_atm_xyz,
168  Vector const & base_atm_xyz,
169  Vector const & occluding_atm_xyz,
170  bool const update_deriv = false,
171  hbonds::HBondDerivs & deriv = hbonds::DUMMY_DERIVS) const;
172 
173  inline
174  void
176  Vector const & base_v,
177  Vector const & atom_v,
178  Vector const & water_v,
179  Vector & water_base_v,
180  Real const & xH /*cos(theta)*/,
181  Distance const & bond_length ) const;
182 
183  inline
184  Real
186  Vector const & base_atm_xyz,
187  Vector const & polar_atm_xyz,
188  Vector const & occluding_atm_xyz ) const;
189 
190  bool
191  atom_is_donor( conformation::Residue const & rsd, Size const atm ) const;
192 
193  bool
194  atom_is_donor_h( conformation::Residue const & rsd, Size const atm ) const;
195 
196  bool
197  atom_is_acceptor( conformation::Residue const & rsd, Size const atm ) const;
198 
199  bool
200  atom_is_heavy( conformation::Residue const & rsd, Size const atm ) const;
201 
202 
203  void
205  Size const & don_h_atm,
206  conformation::Residue const & don_rsd,
207  Size const & occ_atm,
208  conformation::Residue const & occ_rsd,
209  pose::Pose const & pose,
210  Real & energy,
211  bool const update_deriv = false,
213  ) const;
214 
215  void
217  Size const & acc_atm,
218  conformation::Residue const & acc_rsd,
219  Size const & occ_atm,
220  conformation::Residue const & occ_rsd,
221  pose::Pose const & pose,
222  Real & energy,
223  bool const update_deriv = false,
225  ) const;
226 
227 
228  Real
230  conformation::Residue const & rsd,
231  pose::Pose const & pose ) const;
232 
233  Real
235  conformation::Residue const & rsd,
236  pose::Pose const & pose ) const;
237 
238  Vector
239  get_acceptor_base_atm_xyz( conformation::Residue const & acc_rsd, Size const & acc_atm ) const;
240 
241 private:
242 
243  /////////////////////////////////////////////////////////////////////////////
244  // data
245  /////////////////////////////////////////////////////////////////////////////
247 
248 
249  // no Hbonds longer than sqrt of this (the square)
253 
255  bool const verbose_;
256 
257  virtual
258  core::Size version() const;
259 
260 };
261 
262 } // hbonds
263 } // scoring
264 } // core
265 
266 #endif
267