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
protocols
evaluation
PoseEvaluator.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 relax_initialization_protocols
11
/// @brief initialization protocols for relax
12
/// @detailed
13
/// Contains currently: Classic Abinitio
14
///
15
///
16
/// @author Oliver Lange
17
18
19
20
#ifndef INCLUDED_protocols_evaluation_PoseEvaluator_hh
21
#define INCLUDED_protocols_evaluation_PoseEvaluator_hh
22
23
24
// Unit Headers
25
#include <
protocols/evaluation/PoseEvaluator.fwd.hh
>
26
27
// Package Headers
28
29
// Project Headers
30
#include <
core/io/silent/silent.fwd.hh
>
31
#include <
core/pose/Pose.fwd.hh
>
32
33
// ObjexxFCL Headers
34
35
// Utility headers
36
#include <utility/pointer/ReferenceCount.hh>
37
// AUTO-REMOVED #include <utility/vector1.hh>
38
//// C++ headers
39
40
// due to template function
41
#include <
core/io/silent/SilentStruct.hh
>
42
43
#include <utility/vector1.hh>
44
45
46
47
namespace
protocols {
48
namespace
evaluation {
49
50
class
PoseEvaluator
:
public
utility::pointer::ReferenceCount
{
51
public
:
52
PoseEvaluator
() {};
53
virtual
~PoseEvaluator
() {};
54
// we may put a cache for user values into the pose, then it will just return a pose
55
// or return just the Map from strings to values...
56
57
///@brief evaluate pose and store values in Silent_Struct
58
virtual
void
apply
(
core::pose::Pose
&,
std::string
tag,
core::io::silent::SilentStruct
&pss)
const
= 0;
59
60
///@brief direct application to SilentStruct...
61
/// default implementation makes pose and calls "apply", you can overload if you don't need the pose-step
62
virtual
void
apply
(
core::io::silent::SilentStruct
&pss)
const
;
63
virtual
bool
applicable
(
core::pose::Pose
const
& )
const
{
return
true
; }
64
65
virtual
core::Size
size
()
const
= 0;
66
virtual
std::string
name
(
core::Size
)
const
= 0;
67
68
};
69
70
template
<
class
T >
71
class
SingleValuePoseEvaluator :
public
PoseEvaluator {
72
public
:
73
SingleValuePoseEvaluator
(
std::string
name
) :
name_
( name ) {};
74
75
///@brief evaluate pose and store values in Silent_Struct
76
/// why is this specific to a specific type of SilentStruct? that seems needlessly pointless and overly constraining.
77
virtual
void
apply
(
core::pose::Pose
&,
std::string
tag,
core::io::silent::SilentStruct
&pss)
const
;
78
// void apply( core::pose::Pose&, std::string tag, core::io::silent::SilentStruct &pss) const;
79
80
using
PoseEvaluator::apply
;
81
82
///@brief evaluate pose
83
virtual
T
apply
(
core::pose::Pose
& )
const
= 0;
84
virtual
bool
applicable
(
core::pose::Pose
const
& )
const
{
return
true
; }
85
86
// void apply( core::pose::Pose&, std::string tag, core::io::silent::SilentStruct &pss) const;
87
88
virtual
core::Size
size
()
const
{
return
1; }
89
virtual
std::string
name
(
core::Size
)
const
{
90
return
name_
;
91
}
92
93
private
:
94
std::string
name_
;
95
96
};
97
98
//now also named PoseEvaluators ( see typedef below )
99
//typedef MetaPoseEvaluator PoseEvaluators; //moved to .fwd.hh, SML 09/09/2009
100
101
class
MetaPoseEvaluator
:
public
PoseEvaluator
{
102
public
:
103
typedef
PoseEvaluator
Parent
;
104
typedef
utility::vector1< PoseEvaluatorOP >
EvaluatorList
;
105
106
MetaPoseEvaluator
() {};
107
108
virtual
void
109
apply
(
core::pose::Pose
& pose,
std::string
tag,
core::io::silent::SilentStruct
&pss)
const
;
110
111
void
112
add_evaluation
(
PoseEvaluatorOP
pe) {
113
evaluators_
.push_back( pe );
114
}
115
116
/// @brief clear the list of evaluators
117
void
118
clear
() {
119
evaluators_
.clear();
120
}
121
122
//removes last element
123
void
124
pop_back
() {
125
evaluators_
.pop_back();
126
}
127
128
MetaPoseEvaluator
&
operator<<
(
PoseEvaluatorOP
pe) {
129
add_evaluation
( pe );
130
return
*
this
;
131
}
132
133
Size
size
()
const
{
134
Size
s( 0 );
135
for
( EvaluatorList::const_iterator it =
evaluators_
.begin(); it !=
evaluators_
.end(); ++it ) {
136
s += (*it)->size();
137
}
138
return
s;
139
}
140
141
virtual
std::string
name
(
core::Size
ind )
const
;
142
143
EvaluatorList
const
&
evaluators
() {
return
evaluators_
; }
144
145
private
:
146
EvaluatorList
evaluators_
;
147
};
148
149
150
//@brief evaluate pose and store values in Silent_Struct
151
template
<
class
T >
152
void
SingleValuePoseEvaluator< T >::apply
(
core::pose::Pose
&pose,
std::string
,
core::io::silent::SilentStruct
&pss)
const
{
153
if
( applicable( pose ) ) pss.
add_energy
( name_, apply( pose ) );
154
}
155
156
}
157
}
158
#endif
Generated on Sat Jun 1 2013 11:48:53 for Rosetta 3.5 by
1.8.4