Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ReferenceEnergyNoncanonical.cc
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/ReferenceEnergyNoncanonical.cc
11 /// @brief Reference energy method implementation
12 /// @author Fang-Chieh Chou (fcchou@stanford.edu)
13 
14 // Unit headers
17 
18 // Package headers
21 
22 // Project headers
23 #include <core/chemical/AA.hh>
26 
27 #include <utility/vector1.hh>
28 
29 
30 namespace core {
31 namespace scoring {
32 namespace methods {
33 
34 
35 /// @details This must return a fresh instance of the ReferenceEnergy class,
36 /// never an instance already in use
39  methods::EnergyMethodOptions const & options
40 ) const {
41  if ( options.has_method_weights( ref_nc ) ) {
42  return new ReferenceEnergyNoncanonical( options.method_weights( ref_nc ) );
43  } else {
44  return new ReferenceEnergyNoncanonical;
45  }
46 }
47 
50  ScoreTypes sts;
51  sts.push_back( ref_nc );
52  return sts;
53 }
54 
55 
56 
59 {
60  init_res_list();
61 }
62 
65  weights_( weight_list )
66 {
67  init_res_list();
68 }
69 
70 
72 
75 {
77 }
78 
79 /// This is a terrible terrible terrible hack that will do for now.
80 void
82  conformation::Residue const & rsd,
83  pose::Pose const &,
84  EnergyMap & emap
85 ) const
86 {
87  // ignore scoring residues which have been marked as "REPLONLY" residues (only the repulsive energy will be calculated)
89  return;
90  }
91 
92  std::string const res_name = rsd.name3();
93  Size index_find = 0;
94  for (Size i = 1; i <= res_list_.size(); ++i) {
95  if ( res_name == res_list_[i] ) {
96  index_find = i;
97  break;
98  }
99  }
100 
101  if ( index_find == 0 ) return;
102 
103  if ( ( ! weights_.empty() ) && index_find <= weights_.size() ) {
104  emap[ ref_nc ] += weights_[ index_find ];
105  return;
106  }
107 
108  switch ( index_find ) {
109  case 1: emap[ ref_nc ] += 0.16; break;
110  case 2: emap[ ref_nc ] += 1.70; break;
111  case 3: emap[ ref_nc ] += -0.67; break;
112  case 4: emap[ ref_nc ] += -0.81; break;
113  case 5: emap[ ref_nc ] += 0.63; break;
114  case 6: emap[ ref_nc ] += -0.17; break;
115  case 7: emap[ ref_nc ] += 0.56; break;
116  case 8: emap[ ref_nc ] += 0.24; break;
117  case 9: emap[ ref_nc ] += -0.65; break;
118  case 10: emap[ ref_nc ] += -0.10; break;
119  case 11: emap[ ref_nc ] += -0.34; break;
120  case 12: emap[ ref_nc ] += -0.89; break;
121  case 13: emap[ ref_nc ] += 0.02; break;
122  case 14: emap[ ref_nc ] += -0.97; break;
123  case 15: emap[ ref_nc ] += -0.98; break;
124  case 16: emap[ ref_nc ] += -0.37; break;
125  case 17: emap[ ref_nc ] += -0.27; break;
126  case 18: emap[ ref_nc ] += 0.29; break;
127  case 19: emap[ ref_nc ] += 0.91; break;
128  case 20: emap[ ref_nc ] += 0.51; break;
129  default:
130  return;
131  break;
132  }
133 }
134 
135 
136 Real
138  id::DOF_ID const &,
139  id::TorsionID const &,
140  pose::Pose const &,
141  ScoreFunction const &,
142  EnergyMap const &
143 ) const
144 {
145  return 0.0;
146 }
147 
148 void
150 {
151  if ( !res_list_.empty() ) return;
152  //Must all be 3-character string!
153  std::string const res_list [] = {"B3A", "B3C", "B3D", "B3E", "B3F", "B3G", "B3H", "B3I", "B3K", "B3L", "B3M", "B3N",
154  "B3P", "B3Q", "B3R", "B3S", "B3T", "B3V", "B3W", "B3Y"};
155  Size const res_list_size = sizeof( res_list ) / sizeof( res_list [0] );
156  for (Size i = 0; i != res_list_size; ++i) {
157  res_list_.push_back(res_list[i]);
158  }
159 }
160 
161 
162 /// @brief ReferenceEnergy is context independent; indicates that no
163 /// context graphs are required
164 void
166 {}
169 {
170  return 1; // Initial versioning
171 }
172 
173 
174 } // methods
175 } // scoring
176 } // core
177