Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ResidualDipolarCoupling_Rohl.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 // This file is part of the Rosetta software suite and is made available under license.
5 // The Rosetta software is developed by the contributing members of the Rosetta Commons consortium.
6 // (C) 199x-2009 Rosetta Commons participating institutions and developers.
7 // For more information, see http://www.rosettacommons.org/.
8 
9 /// @file core/scoring/ResidualDipolarCoupling.hh
10 /// @brief Uses NMR RDC for scoring
11 /// @author Srivatsan Raman
12 
13 #ifndef INCLUDED_core_scoring_ResidualDipolarCoupling_Rohl_hh
14 #define INCLUDED_core_scoring_ResidualDipolarCoupling_Rohl_hh
15 
17 
18 #include <core/types.hh>
19 #include <basic/datacache/CacheableData.hh>
20 #include <numeric/numeric.functions.hh>
21 // AUTO-REMOVED #include <utility/vector1.hh>
22 #include <core/pose/Pose.fwd.hh>
23 
24 #include <utility/vector1.hh>
25 
26 
27 namespace core {
28 namespace scoring {
29 
33 
34 class ResidualDipolarCoupling_Rohl : public basic::datacache::CacheableData {
35 
36 public: // typedefs
37  typedef core::Real Real;
38  typedef core::Size Size;
40 
41 public:
42 
44  read_RDC_file();
45  }
46 
48 
49  // ResidualDipolarCoupling_Rohl( ResidualDipolarCoupling_Rohl const & src ){}
50 
51  basic::datacache::CacheableDataOP
52  clone() const
53  {
54  return new ResidualDipolarCoupling_Rohl( *this );
55  }
56 
57 
58 
59  void read_RDC_file();
60 
62  std::string const & atom1,
63  std::string const & atom2
64  );
65 
66  inline RDC_lines get_RDC_data() const
67  {
68  return All_RDC_lines;
69  }
70 
71 private:
73 
74 };
75 
76 /////////////////////////////////////////////////
77 //@brief short class that stores the RDC data lines
78 /////////////////////////////////////////////////
79 class RDC_Rohl {
80 
81 public:
83 
85  Size type,
86  Size res,
87  Real Jdipolar,
88  Real weight = 1.0//for alignment calculation
89  // core::Real Reduced_Jdipolar
90  ) :
91  type_( type ),
92  res_( res ),
93  Jdipolar_( Jdipolar ),
94  weight_( weight )
95  // Reduced_Jdipolar_( Reduced_Jdipolar )
96  {}
97 
98  inline Size type() const
99  {
100  return type_;
101  }
102 
103  inline Size res() const
104  {
105  return res_;
106  }
107 
108  inline Real Jdipolar() const
109  {
110  return Jdipolar_;
111  }
112 
113  /* inline core::Real Reduced_Jdipolar() const
114  {
115  return Reduced_Jdipolar_;
116  }
117  */
118 
119  inline Real fixed_dist() const
120  {
121  Real fixed_dist(0.0);
122  if ( type_ == 1 )
123  fixed_dist = 1.01;
124  else if ( type_ == 2 )
125  fixed_dist = 1.08;
126  else if ( type_ == 3 )
127  fixed_dist = 1.52325877;
128  //************* ADD MORE TYPES LATER !! ***************
129  return fixed_dist;
130 
131  }
132 
133  inline Real Reduced_Jdipolar() const
134  {
135  using namespace numeric;
136 
137  // Real invDcnst(0.0);
138 // if ( type_ == 1 )
139 // invDcnst = 0.0000821215;
140 // else if ( type_ == 2 )
141 // invDcnst = -0.0000331025;
142 // else if ( type_ == 3 )
143 // invDcnst = 0.000326533;
144  return Jdipolar_*invDcnst()*numeric::cube( fixed_dist() );
145 
146  }
147 
148  Real weight() const {
149  return weight_;
150  }
151 
152  void weight( Real w_in ) {
153  weight_ = w_in;
154  }
155 
156  inline Real invDcnst() const
157  {
158 
159  core::Real invDcnst(0.0);
160  if ( type_ == 1 )
161  invDcnst = 0.0000821215;
162  else if ( type_ == 2 )
163  invDcnst = -0.0000331025;
164  else if ( type_ == 3 )
165  invDcnst = 0.000326533;
166  return invDcnst;
167  }
168 
169 private:
173 };
174 
175 
176 } //scoring
177 } //core
178 
179 #endif