Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
hbonds_geom.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
11 /// @brief
12 /// @author
13 
14 #ifndef INCLUDED_core_scoring_hbonds_hbonds_geom_hh
15 #define INCLUDED_core_scoring_hbonds_hbonds_geom_hh
16 
17 // Package headers
19 // AUTO-REMOVED #include <core/scoring/hbonds/HBondSet.fwd.hh>
20 // AUTO-REMOVED #include <core/scoring/hbonds/hbtrie/HBAtom.hh>
25 
26 // Project headers
27 #include <core/chemical/types.hh>
29 
31 
32 
33 
34 
35 namespace core {
36 namespace scoring {
37 namespace hbonds {
38 
41  int const aatm,
42  conformation::Residue const & acc_rsd
43 );
44 
47  int const datm,
48  conformation::Residue const & don_rsd
49 );
50 
51 HBEvalTuple
53  hbtrie::HBAtom const & datm,
54  int const & don_rsd,
55  hbtrie::HBAtom const & aatm,
56  int const & acc_rsd
57 );
58 
61  HBDonChemType const & don_chem_type,
62  HBAccChemType const & acc_chem_type,
63  int const & sep
64 );
65 
66 // hbond evaluation type -- determines what scoring function to use
67 extern Real DUMMY_DERIV;
68 extern bool DUMMY_BOOL;
70 extern HBondDerivs DUMMY_DERIVS;
71 extern HBondDerivs const ZERO_DERIV2D;
72 
73 
74 HBEvalTuple
76  int const datm,
77  conformation::Residue const & don_rsd,
78  int const aatm,
79  conformation::Residue const & acc_rsd
80 );
81 
82 // @brief Inner-most function for hydrogen bond energy evaluation. This function
83 // evaluates the polynomials describing the energy for a hydrogen bond in terms of
84 // its geometry. AHdis is the distance between the acceptor and the hydrogen, xD is
85 // the cosine of (180 - the angle between the acceptor, the hydrogen and the donor heavy atom),
86 // xH is the cosine of (180 - the angle between the acceptor-base, the acceptor, and the hydrogen),
87 // and chi is the dihedral defined by the acceptor-base 2, the acceptor base, the acceptor, and
88 // the hydrogen. The chi term only contributes to the energy if hbondoptions.sp2_chi_penalty()
89 // returns true. If the last 6 parameters are not specified, then the derivatives are not evaluated.
90 void
92  HBondDatabase const & database,
93  HBondOptions const & hbondoptions,
94  HBEvalTuple hbt, // used internally & by geometric solvation
95  Real const AHdis, // acceptor proton distance
96  Real const xD, // -cos(180-theta), where theta is defined by Tanja K.
97  Real const xH, // cos(180-phi), where phi is defined by Tanja K.
98  Real const chi, // AB2-AB-A-H dihdral angle for sp2 hybridized acceptors
99  Real & energy, // main return value #1: sum of the dAH term, the xD term and the xH term.
100  bool & apply_chi_torsion_penalty = DUMMY_BOOL, // did this hbond get the chi torsion penalty?
101  HBGeoDimType & AHD_geometric_dimension = DUMMY_HBGEODIMTYPE, // measure in angle in cosine space?
102  Real & dE_dr = DUMMY_DERIV,
103  Real & dE_dxD = DUMMY_DERIV,
104  Real & dE_dxH = DUMMY_DERIV,
105  Real & dchipen_dBAH = DUMMY_DERIV,
106  Real & dchipen_dchi = DUMMY_DERIV
107 );
108 
109 /// @brief Evaluate the hydrogen bond energy and derivatives after having first calculated
110 /// the HD and BA *u*nit vectors
111 void
113  HBondDatabase const & database,
114  HBondOptions const & hbondoptions,
115  HBEvalTuple const hbt, // hbond evaluation tuple
116  Vector const & Hxyz, // proton
117  Vector const & Dxyz, // donor -- only needed for derivative evaluation
118  Vector const & HDunit, // proton-to-donor unit vector
119  Vector const & Axyz, // acceptor
120  Vector const & Bxyz, // pseudo acceptor-base coordinate -- only needed for derivative evaluation
121  Vector const & BAunit, // unit vector towards the acceptor base
122  Vector const & B2xyz, // coordinate of acceptor-base 2
123  Real & energy,
124  bool const calculate_derivative = false,
125  HBondDerivs & deriv = DUMMY_DERIVS
126 );
127 
128 /// @brief Evaluate the hydrogen bond energy and derivatives after having first calculated
129 /// the HD and BA *u*nit vectors; deriv type must have been chosen (why does this exist?)
130 void
132  HBondDatabase const & database,
133  HBondOptions const & hbondoptions,
134  HBEvalTuple const hbt, // hbond evaluation type
135  HBDerivType const deriv_type,
136  Vector const & Hxyz, // proton
137  Vector const & Dxyz, // donor
138  Vector const & HDunit, // donor
139  Vector const & Axyz, // acceptor
140  Vector const & Bxyz, // pseudo acceptor-base coordinate
141  Vector const & BAunit, // unit vector towards base
142  Vector const & B2xyz, // coordinate of acceptor-base 2
143  Real & energy,
144  HBondDerivs & deriv = DUMMY_DERIVS
145 );
146 
147 
148 //hbond evaluation type -- determines what scoring function to use
149 void
151  HBondDatabase const & database,
152  HBondOptions const & hbondoptions,
153  HBEvalTuple const hbt, // hbond evaluation type
154  Vector const & Dxyz, // donor coords
155  Vector const & Hxyz, // proton
156  Vector const & Axyz, // acceptor
157  Vector const & Bxyz, // acceptor base
158  Vector const & B2xyz, // 2nd acceptor base for ring & SP2 acceptors
159  Real & energy,
160  bool const calculate_derivative = false,
161  HBondDerivs & deriv = DUMMY_DERIVS // f1/f2 for four atoms
162 );
163 
164 void
166  HBondDatabase const & database,
167  HBondOptions const & hbondoptions,
168  HBEvalTuple const hbt, // hbond evaluation type
169  Vector const & Dxyz, // donor coords
170  Vector const & Hxyz, // proton
171  Vector const & Axyz, // acceptor
172  Vector const & Bxyz, // acceptor base
173  Vector const & B2xyz, // 2nd acceptor base for ring & SP2 acceptors
174  Real & energy,
175  HBDerivType const deriv_type,
176  HBondDerivs & deriv = DUMMY_DERIVS // f1/f2 for four atoms
177 );
178 
179 Vector
181  HBondOptions const & hbondoptions,
182  conformation::Residue const & residue,
183  int atom_id
184 );
185 
186 // hack?
188 
189 
190 Vector
192  conformation::Residue const & residue,
193  int atom_id
194 );
195 
196 void
198  HBondOptions const & hbondoptions,
199  chemical::Hybridization const & acc_hybrid,
200  Vector const & Axyz,
201  Vector const & Bxyz,
202  Vector const & B2xyz,
203  Vector & PBxyz, /// the coordinate for the pseudo-acceptor-base atom, used in derivative evaluation
204  Vector & BAunit
205 );
206 
207 void
209  HBondOptions const & hbondoptions,
210  conformation::Residue const & acc_rsd,
211  Size acc_atom,
212  HBEvalTuple const hbe_type,
213  DerivVectorPair const & abase_deriv,
214  Real weighted_energy,
215  utility::vector1< DerivVectorPair > & acc_atom_derivs
216 );
217 
218 
219 }
220 }
221 }
222 
223 #endif