Rosetta 3.5
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
src
core
scoring
methods
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
15
#include <
core/scoring/methods/ReferenceEnergyNoncanonical.hh
>
16
#include <
core/scoring/methods/ReferenceEnergyNoncanonicalCreator.hh
>
17
18
// Package headers
19
#include <
core/scoring/EnergyMap.hh
>
20
#include <
core/scoring/methods/EnergyMethodOptions.hh
>
21
22
// Project headers
23
#include <
core/chemical/AA.hh
>
24
#include <
core/chemical/VariantType.hh
>
25
#include <
core/conformation/Residue.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
37
methods::EnergyMethodOP
38
ReferenceEnergyNoncanonicalCreator::create_energy_method
(
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
48
ScoreTypes
49
ReferenceEnergyNoncanonicalCreator::score_types_for_method
()
const
{
50
ScoreTypes
sts;
51
sts.push_back(
ref_nc
);
52
return
sts;
53
}
54
55
56
57
ReferenceEnergyNoncanonical::ReferenceEnergyNoncanonical
() :
58
parent
( new
ReferenceEnergyNoncanonicalCreator
)
59
{
60
init_res_list
();
61
}
62
63
ReferenceEnergyNoncanonical::ReferenceEnergyNoncanonical
(
utility::vector1< Real >
const
& weight_list ):
64
parent
( new
ReferenceEnergyNoncanonicalCreator
),
65
weights_( weight_list )
66
{
67
init_res_list
();
68
}
69
70
71
ReferenceEnergyNoncanonical::~ReferenceEnergyNoncanonical
() {}
72
73
EnergyMethodOP
74
ReferenceEnergyNoncanonical::clone
()
const
75
{
76
return
new
ReferenceEnergyNoncanonical
(
weights_
);
77
}
78
79
/// This is a terrible terrible terrible hack that will do for now.
80
void
81
ReferenceEnergyNoncanonical::residue_energy
(
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)
88
if
( rsd.
has_variant_type
(
core::chemical::REPLONLY
) ){
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
137
ReferenceEnergyNoncanonical::eval_dof_derivative
(
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
149
ReferenceEnergyNoncanonical::init_res_list
()
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
165
ReferenceEnergyNoncanonical::indicate_required_context_graphs
(
utility::vector1< bool >
& )
const
166
{}
167
core::Size
168
ReferenceEnergyNoncanonical::version
()
const
169
{
170
return
1;
// Initial versioning
171
}
172
173
174
}
// methods
175
}
// scoring
176
}
// core
177
Generated on Sat Jun 1 2013 11:38:49 for Rosetta 3.5 by
1.8.4