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
LK_hack.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/LK_hack.hh
11
/// @brief LK Solvation using hemisphere culling class declaration
12
/// @author David Baker
13
/// @author Andrew Leaver-Fay
14
15
16
#ifndef INCLUDED_core_scoring_methods_LK_hack_hh
17
#define INCLUDED_core_scoring_methods_LK_hack_hh
18
19
// Unit Headers
20
#include <
core/scoring/methods/LK_hack.fwd.hh
>
21
22
// Package headers
23
#include <
core/conformation/Atom.fwd.hh
>
24
#include <
core/scoring/methods/ContextIndependentTwoBodyEnergy.hh
>
25
#include <
core/scoring/etable/Etable.fwd.hh
>
26
#include <
core/scoring/ScoreFunction.fwd.hh
>
27
28
// Project headers
29
#include <
core/pose/Pose.fwd.hh
>
30
31
// Utility headers
32
// AUTO-REMOVED #include <utility/vector1.hh>
33
34
#include <utility/vector1.hh>
35
#include <ObjexxFCL/FArray3D.fwd.hh>
36
37
38
namespace
core {
39
namespace
scoring {
40
namespace
methods {
41
42
///
43
class
LK_hack
:
public
ContextIndependentTwoBodyEnergy
{
44
public
:
45
typedef
ContextIndependentTwoBodyEnergy
parent
;
46
public
:
47
48
LK_hack
(
etable::Etable
const
& etable_in );
49
50
51
/// clone
52
virtual
53
EnergyMethodOP
54
clone
()
const
;
55
56
LK_hack
(
LK_hack
const
& src );
57
58
virtual
59
void
60
setup_for_derivatives
(
61
pose::Pose
& pose,
62
ScoreFunction
const
& scfxn
63
)
const
;
64
65
/// called during gradient-based minimization inside dfunc
66
/**
67
F1 and F2 are not zeroed -- contributions from this atom are
68
just summed in
69
**/
70
virtual
71
void
72
eval_atom_derivative
(
73
id::AtomID
const
&
id
,
74
pose::Pose
const
& pose,
75
kinematics::DomainMap
const
& domain_map,
76
ScoreFunction
const
& sfxn,
77
EnergyMap
const
& weights,
78
Vector
& F1,
79
Vector
& F2
80
)
const
;
81
82
83
virtual
84
void
85
residue_pair_energy
(
86
conformation::Residue
const
& rsd1,
87
conformation::Residue
const
& rsd2,
88
pose::Pose
const
& pose,
89
ScoreFunction
const
&,
90
EnergyMap
& emap
91
)
const
;
92
93
94
virtual
95
bool
96
defines_intrares_energy
(
EnergyMap
const
&
/*weights*/
)
const
{
return
false
; }
97
98
virtual
99
void
100
eval_intrares_energy
(
101
conformation::Residue
const
&,
102
pose::Pose
const
&,
103
ScoreFunction
const
&,
104
EnergyMap
&
105
)
const
{}
106
107
virtual
108
Distance
109
atomic_interaction_cutoff
()
const
;
110
111
112
void
indicate_required_context_graphs
(
utility::vector1< bool >
& context_graphs_required )
const
;
113
114
private
:
115
116
void
117
allocate_appropriate_memory
(
pose::Pose
const
& pose )
const
;
118
119
void
120
calculate_orientation_vectors_and_pseudo_base_atoms
(
pose::Pose
const
& pose )
const
;
121
122
void
123
calculate_derivatives_for_atoms_and_pseudo_base_atoms
(
pose::Pose
const
& pose )
const
;
124
125
void
126
calculate_derivatives_for_residue_pair
127
(
128
pose::Pose
const
& pose,
129
Size
lower_res_id,
130
Size
upper_res_id
131
)
const
;
132
133
Real
134
eval_dE_dR_over_r
(
135
conformation::Atom
const
& atom1,
136
conformation::Atom
const
& atom2,
137
Distance
const
one_over_d,
138
DistanceSquared
const
d2,
139
Vector
& f1_1,
140
Vector
& f2_1,
141
Vector
& f1_2,
142
Vector
& f2_2
143
)
const
;
144
145
void
146
distribute_pseudo_base_atom_derivatives
(
pose::Pose
const
& pose )
const
;
147
148
/////////////////////////////////////////////////////////////////////////////
149
// data
150
/////////////////////////////////////////////////////////////////////////////
151
152
private
:
153
etable::Etable
const
&
etable_
;
// shouldn't this be a pointer? Reference count information is (dangerously) lost when
154
//a reference is taken, instead of a smart pointer. There's the potential for a dangling reference with this.
155
156
157
/// these guys are taken from the etable
158
ObjexxFCL::FArray3D< Real >
const
&
solv1_
;
159
ObjexxFCL::FArray3D< Real >
const
&
solv2_
;
160
161
ObjexxFCL::FArray3D< Real >
const
&
dsolv1_
;
162
163
Real
const
safe_max_dis2_
;
164
Real
const
get_bins_per_A2_
;
165
166
/// Used soley when calculating derivatives
167
/// Could/should be moved into the Pose's cachable data.
168
mutable
utility::vector1< utility::vector1< Size >
>
nneighbs_
;
169
mutable
utility::vector1< utility::vector1< Vector >
>
orientation_vectors_
;
170
mutable
utility::vector1< utility::vector1< Vector >
>
base_pseudo_atom_centers_
;
171
mutable
utility::vector1< utility::vector1< std::pair< Vector, Vector >
> >
atom_f1_f2s_
;
172
mutable
utility::vector1< utility::vector1< std::pair< Vector, Vector >
> >
base_pseudo_atom_f1_f2s_
;
173
mutable
Real
lk_hack_weight_
;
// hold this while calculating derivatives.
174
virtual
175
core::Size
version
()
const
;
176
};
177
178
}
179
}
180
}
181
182
#endif // INCLUDED_core_scoring_methods_LK_hack_HH
Generated on Sat Jun 1 2013 11:38:13 for Rosetta 3.5 by
1.8.4