Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MembraneEnvSmoothEnergy.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/MembraneEnvSmoothEnergy.hh
11 /// @brief Statistically derived smooth membrane environment potential class declaration
12 /// @brief and based on EnvSmoothEnergy.hh developed by Andrew Leaver-Fay, Mike Tyka and Phil Bradley
13 /// @author Vladimir Yarov-Yarovoy
14 
15 #ifndef INCLUDED_core_scoring_methods_MembraneEnvSmoothEnergy_hh
16 #define INCLUDED_core_scoring_methods_MembraneEnvSmoothEnergy_hh
17 
18 // Unit Headers
20 
21 // Package headers
23 // AUTO-REMOVED #include <core/scoring/MembranePotential.fwd.hh>
24 
25 // Project headers
26 #include <core/chemical/AA.hh>
28 #include <core/pose/Pose.fwd.hh>
30 
31 // Utility headers
32 #include <ObjexxFCL/FArray3D.hh>
33 
34 #include <utility/vector1.hh>
35 
36 
37 
38 namespace core {
39 namespace scoring {
40 namespace methods {
41 
42 ///
44 public:
46 
47 public:
48 
49  ///
51 
52  /// clone
53  virtual
55  clone() const;
56 
57  /////////////////////////////////////////////////////////////////////////////
58  // scoring
59  /////////////////////////////////////////////////////////////////////////////
60 
61  /// @brief computes dScore/dNumNeighbors for all residues for rapid use in later
62  /// atom derivate calculations
63  virtual
64  void
65  setup_for_scoring( pose::Pose & pose, ScoreFunction const & ) const;
66 
67  /// @brief causes a neighbor graph update
68  virtual
69  void
70  setup_for_derivatives( pose::Pose & pose, ScoreFunction const & sf) const;
71 
72  /// @brief evaluates the one-body energy for a residue
73  virtual
74  void
76  conformation::Residue const & rsd,
77  pose::Pose const &,// pose,
78  EnergyMap &// emap
79  ) const;
80 
81  /// @brief increments the F1 and F2 derivative vectors for an atom
82  virtual
83  void
85  id::AtomID const & atom_id,
86  pose::Pose const & pose,
87  kinematics::DomainMap const &,
88  ScoreFunction const &,
89  EnergyMap const & weights,
90  Vector & F1,
91  Vector & F2
92  ) const;
93 
94  /// @brief unused by the MembraneEnvSmoothEnergy class, returns 0
95  Distance
97 
98  /// @brief Tells the scoring function to maintain the TwelveANeighborGraph
99  virtual
100  void indicate_required_context_graphs( utility::vector1< bool > & context_graphs_required ) const;
101 
102 private:
103 
104  /// @brief returns the atom name for the atom used to represent the sidechain for
105  /// a particular amino acid; this atom was used to derive the statistics this potential
106  /// is based on.
107  std::string const &
108  representative_atom_name( chemical::AA const aa ) const;
109 
110  /// @brief convert the neighbor counts for a residue and its aa type into
111  /// a score and a score derivative.
112  void
113  calc_energy(
114  conformation::Residue const & rsd,
115  pose::Pose const & pose,
116  Real const neighbor_count,
117  chemical::AA const aa,
118  Real & score,
119  Real & dscore_dneighbor_count
120  ) const;
121 
122  /// @brief given the square distance between a representative atom and a neighbor atom,
123  /// return the neighborlyness. Ramps from 1 down to 0 over a range.
124  Real
125  sigmoidish_neighbor( DistanceSquared const sqdist ) const;
126 
127  /// @brief given a pair of atoms, one of which is a neighbor atom and the other of which
128  /// is a representative atom, and given the weighted score derivative, increments
129  /// the F1 and F2 derivatives.
130  void
132  conformation::Atom const & atom1,
133  conformation::Atom const & atom2,
134  Real weighted_dScore_dN,
135  Vector & F1,
136  Vector & F2
137  ) const;
138 
139  /////////////////////////////////////////////////////////////////////////////
140  // data
141  /////////////////////////////////////////////////////////////////////////////
142 
143 private:
144 
148 
149  ObjexxFCL::FArray3D< Real > mem_env_log10_;
150 virtual
151 core::Size version() const;
152 
153 };
154 
155 
156 }
157 }
158 }
159 
160 #endif