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
fldsgn
filters
FragQualFilter.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 protocols/filters/FragQualFilter.cc
11
/// @brief filter structures by packstat score
12
/// @detailed
13
/// @author Nobuyasu Koga ( nobuyasu@uw.edu )
14
15
// Unit Headers
16
#include <
protocols/fldsgn/filters/FragQualFilter.hh
>
17
#include <
protocols/fldsgn/filters/FragQualFilterCreator.hh
>
18
19
// Project Headers
20
#include <
core/types.hh
>
21
#include <
core/pose/Pose.hh
>
22
#include <
core/pose/metrics/CalculatorFactory.hh
>
23
// AUTO-REMOVED #include <core/scoring/packstat/compute_sasa.hh>
24
#include <basic/MetricValue.hh>
25
// AUTO-REMOVED #include <protocols/moves/DataMap.hh>
26
#include <
protocols/toolbox/pose_metric_calculators/FragQualCalculator.hh
>
27
28
// Utility headers
29
#include <basic/Tracer.hh>
30
31
// Parser headers
32
#include <
protocols/filters/Filter.hh
>
33
#include <utility/tag/Tag.hh>
34
35
#include <utility/vector0.hh>
36
#include <utility/vector1.hh>
37
38
//// C++ headers
39
static
basic::Tracer
tr
(
"protocols.fldsgn.filters.FragQualFilter"
);
40
41
namespace
protocols {
42
namespace
fldsgn {
43
namespace
filters {
44
45
// @brief default constructor
46
FragQualFilter::FragQualFilter
():
47
Filter
(
"FragQual"
),
48
filtered_type_(
"num_goodfrag"
),
49
filtered_value_( 0.0 ),
50
rmsd_cutoff_( 1.0 )
51
{}
52
53
// @brief copy constructor
54
FragQualFilter::FragQualFilter
(
FragQualFilter
const
& rval ):
55
//utility::pointer::ReferenceCount(),
56
Super
( rval ),
57
filtered_type_( rval.filtered_type_ ),
58
filtered_value_( rval.filtered_value_ ),
59
rmsd_cutoff_( 1.0 )
60
{}
61
62
// @brief set filtered value
63
void
FragQualFilter::filtered_value
(
Real
const
& value )
64
{
65
filtered_value_
= value;
66
}
67
68
// @brief set report type
69
void
FragQualFilter::filtered_type
(
String
const
& value )
70
{
71
filtered_type_
= value;
72
}
73
74
/// @brief
75
FragQualFilter::Real
76
FragQualFilter::report_sm
(
Pose
const
& pose )
const
77
{
78
return
compute
( pose );
79
}
80
81
/// @brief
82
void
83
FragQualFilter::report
( std::ostream & out,
Pose
const
& pose )
const
84
{
85
out <<
"FragQual: "
<<
compute
( pose ) << std::endl;
86
}
87
88
/// @brief
89
FragQualFilter::Real
90
FragQualFilter::compute
(
Pose
const
& pose )
const
91
{
92
basic::MetricValue< Real >
score
;
93
pose.
metric
(
"FragQual"
,
filtered_type_
, score );
94
return
score.value();
95
}
96
97
// @brief returns true if the given pose passes the filter, false otherwise.
98
// In this case, the test is whether the give pose is the topology we want.
99
bool
FragQualFilter::apply
(
Pose
const
& pose )
const
100
{
101
Real
value =
compute
( pose );
102
if
( value >
filtered_value_
){
103
tr
<<
"Successfully filtered: "
<< value << std::endl;
104
return
true
;
105
}
else
{
106
tr
<<
"Filter failed current/threshold="
<< value <<
"/"
<<
filtered_value_
<< std::endl;
107
return
false
;
108
}
109
}
// apply_filter
110
111
/// @brief parse xml
112
void
113
FragQualFilter::parse_my_tag
(
114
TagPtr
const
tag,
115
DataMap
& data,
116
Filters_map
const
& filters,
117
Movers_map
const
& movers,
118
Pose
const
& pose )
119
{
120
using
core::pose::metrics::CalculatorFactory
;
121
using
protocols::toolbox::pose_metric_calculators::FragQualCalculator
;
122
123
// set filtered type
124
filtered_type_
= tag->getOption<
String
>(
"type"
,
"num_goodfrag"
);
125
if
(
filtered_type_
!=
"num_goodfrag"
&&
filtered_type_
!=
"coverage"
) {
126
tr
<<
"Filter type, "
<<
filtered_type_
<<
" is not defined."
<< std::endl;
127
runtime_assert(
false
);
128
}
129
130
// set threshold
131
filtered_value_
= tag->getOption<
Real
>(
"threshold"
, 0.0 );
132
tr
<<
"Structures with fragqual value, "
<<
filtered_type_
<<
" above "
<<
filtered_value_
<<
" will be filtred."
<< std::endl;
133
134
// set FragQual
135
CalculatorFactory::Instance().remove_calculator(
"FragQual"
);
136
FragQualCalculator calculator;
137
calculator.parse_my_tag( tag, data, filters, movers, pose );
138
CalculatorFactory::Instance().register_calculator(
"FragQual"
, calculator.clone() );
139
140
//calculator.begin( tag->getOption<Size>( "begin", 1 ) );
141
//calculator.end( tag->getOption<Size>( "end", pose.total_residue() ) );
142
//
143
//rmsd_cutoff_ = tag->getOption<Real>( "rmsd_cutoff", 1.0 );
144
//calculator.rmsd_cutoff( rmsd_cutoff_ );
145
146
}
147
148
protocols::filters::FilterOP
149
FragQualFilterCreator::create_filter
()
const
{
return
new
FragQualFilter
; }
150
151
std::string
152
FragQualFilterCreator::keyname
()
const
{
return
"FragQual"
; }
153
154
155
}
// filters
156
}
// fldsgn
157
}
// protocols
Generated on Sat Jun 1 2013 11:49:54 for Rosetta 3.5 by
1.8.4