Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CentroidDisulfidePotential.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 sw=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/disulfides/CentroidDisulfidePotential.hh
11 /// @brief Centroid Disulfide Energy Potentials
12 /// @author Spencer Bliven <blivens@u.washington.edu>
13 /// @date 12/17/08
14 
15 #ifndef INCLUDED_core_scoring_disulfides_CentroidDisulfidePotential_hh
16 #define INCLUDED_core_scoring_disulfides_CentroidDisulfidePotential_hh
17 
18 //Unit headers
20 #include <utility/pointer/ReferenceCount.hh>
21 
22 //Project headers
23 #include <core/types.hh>
24 // AUTO-REMOVED #include <core/pose/Pose.fwd.hh>
27 
28 //Utility Headers
29 // AUTO-REMOVED #include <numeric/interpolation/Histogram.hh>
30 // AUTO-REMOVED #include <utility/vector1.hh>
31 
32 #include <numeric/interpolation/Histogram.fwd.hh>
33 
34 
35 namespace core {
36 namespace scoring {
37 namespace disulfides {
38 
39 /**
40  * @details This class scores centroid disulfide bonds
41  * It is intended to be a singleton with a single instance held by ScoringManager.
42  *
43  * The energy functions are derived from those present in Rosetta++
44  */
46 public:
49 
50  /**
51  * @brief Calculates scoring terms for the disulfide bond specified
52  */
53  void
55  core::conformation::Residue const & res2,
56  core::Energy & cbcb_distance_score,
57  core::Energy & centroid_distance_score,
58  core::Energy & cacbcb_angle_1_score,
59  core::Energy & cacbcb_angle_2_score,
60  core::Energy & cacbcbca_dihedral_score,
61  core::Energy & backbone_dihedral_score
62  ) const;
63 
64  /**
65  * @brief Calculates scoring terms and geometry
66  */
67  void score_disulfide(
68  core::conformation::Residue const & res1,
69  core::conformation::Residue const & res2,
70  core::Real & cbcb_distance_sq,
71  core::Real & centroid_distance_sq,
72  core::Real & cacbcb_angle_1,
73  core::Real & cacbcb_angle_2,
74  core::Real & cacbcbca_dihedral,
75  core::Real & backbone_dihedral,
76  core::Energy & cbcb_distance_score,
77  core::Energy & centroid_distance_score,
78  core::Energy & cacbcb_angle_1_score,
79  core::Energy & cacbcb_angle_2_score,
80  core::Energy & cacbcbca_dihedral_score,
81  core::Energy & backbone_dihedral_score,
82  core::Real & cb_score_factor
83  ) const;
84 
85  /**
86  * @brief Decide whether there is a disulfide bond between two residues.
87  *
88  * Does not require that the residues be cysteines, so if this is important
89  * you should check for CYS first. (The relaxed requirements are useful for
90  * design.)
91  */
92  bool is_disulfide(core::conformation::Residue const & res1,
93  core::conformation::Residue const & res2) const;
94 
95 
96 private:
97 
98  /**
99  * @brief calculates some degrees of freedom between two centroid cys residues
100  *
101  * @param cbcb_distance_sq The distance between Cbetas squared
102  * @param centroid_distance_sq The distance between centroids squared
103  * @param cacbcb_angle_1 The Ca1-Cb1-Cb2 planar angle, in degrees
104  * @param cacbcb_angle_2 The Ca2-Cb2-Cb1 planar angle, in degrees
105  * @param cacbcbca_dihedral The Ca1-Cb1-Cb2-Ca2 dihedral angle
106  * @param backbone_dihedral The N-Ca1-Ca2-C2 dihedral angle
107  */
108  static
109  void
111  core::conformation::Residue const& res1,
112  core::conformation::Residue const& res2,
113  core::Real & cbcb_distance_sq,
114  core::Real & centroid_distance_sq,
115  core::Real & cacbcb_angle_1,
116  core::Real & cacbcb_angle_2,
117  core::Real & cacbcbca_dihedral,
118  core::Real & backbone_dihedral);
119 
120 private: //Scoring functions
126 
127  ///@brief the Cysteines with cb dist scores less than this threshold are
128  /// very likely (99%) to be disulfide bonded.
130 
131 }; // CentroidDisulfidePotential
132 
133 
134 /**
135  * @brief Score based on the distance between Cb
136  *
137  * Based on the rosetta++ scores by Bill Schief in 2002.
138  *
139  * Uses a sum of three gaussians.
140  */
142 {
143 public:
145  virtual ~Cb_Distance_Func();
146  constraints::FuncOP clone() const { return new Cb_Distance_Func( *this ); }
147  virtual core::Real func( core::Real const ) const;
148  virtual core::Real dfunc( core::Real const ) const;
149 private:
150  //Parameters for the 3 gaussians
151  static const Real means_[3];
152  static const Real sds_[3];
153  //Weighting between the 3 gaussians
154  static const Real weights_[3];
155  //Score at infinity; The gaussians are subtracted from this base.
156  static const Real base_score_;
157 
158 };
159 
160 /**
161  * Score based on the distance between the two residues' centroids
162  */
164 {
165 public:
167  virtual ~Cen_Distance_Func();
168  constraints::FuncOP clone() const { return new Cen_Distance_Func( *this ); }
169  virtual core::Real func( core::Real const ) const;
170  virtual core::Real dfunc( core::Real const ) const;
171 private:
172  static numeric::interpolation::HistogramCOP<core::Real,core::Real>::Type centroid_dist_scores_;
173 };
174 
175 /**
176  * Score based on the angle Ca Cb Cb
177  */
179 {
180 public:
182  virtual ~CaCbCb_Angle_Func();
183  constraints::FuncOP clone() const { return new CaCbCb_Angle_Func( *this ); }
184  virtual core::Real func( core::Real const ) const;
185  virtual core::Real dfunc( core::Real const ) const;
186 private:
187  static numeric::interpolation::HistogramCOP<core::Real,core::Real>::Type CaCbCb_angle_scores_;
188 };
189 
190 /**
191  * Score based on the dihedral formed by the two Ca and Cb
192  */
194 {
195 public:
197  virtual ~NCaCaC_Dihedral_Func();
198  constraints::FuncOP clone() const { return new NCaCaC_Dihedral_Func( *this ); }
199  virtual core::Real func( core::Real const ) const;
200  virtual core::Real dfunc( core::Real const ) const;
201 private:
202  static numeric::interpolation::HistogramCOP<core::Real,core::Real>::Type backbone_dihedral_scores_;
203 };
204 
205 /**
206  * Score based on the dihedral formed by N Ca Ca C
207  */
209 {
210 public:
212  virtual ~CaCbCbCa_Dihedral_Func();
213  constraints::FuncOP clone() const { return new CaCbCbCa_Dihedral_Func( *this ); }
214  virtual core::Real func( core::Real const ) const;
215  virtual core::Real dfunc( core::Real const ) const;
216 private:
217  static numeric::interpolation::HistogramCOP<core::Real,core::Real>::Type CaCbCbCa_dihedral_scores_;
218 };
219 
220 } // disulfides
221 } // scoring
222 } // core
223 
224 #endif