31 #include <basic/Tracer.hh>
34 #include <utility/tag/Tag.hh>
36 #include <utility/vector0.hh>
37 #include <utility/vector1.hh>
40 static basic::Tracer
TR(
"protocols.fldsgn.filters.HSSTripletFilter");
51 filter_min_dist_( 7.5 ),
52 filter_max_dist_( 13.0 ),
53 filter_min_angle_( -12.5 ),
54 filter_max_angle_( 90.0 ),
56 output_type_(
"dist" ),
57 output_value_( -990.0 )
65 filter_min_dist_( 7.5 ),
66 filter_max_dist_( 13.0 ),
67 filter_min_angle_( -12.5 ),
68 filter_max_angle_( 90.0 ),
70 output_type_(
"dist" ),
71 output_value_( -990.0 )
79 filter_min_dist_( 7.5 ),
80 filter_max_dist_( 13.0 ),
81 filter_min_angle_( -2.5 ),
82 filter_max_angle_( 90.0 ),
84 output_type_(
"dist" ),
85 output_value_( -990.0 )
92 hss3set_( rval.hss3set_ ),
93 secstruct_( rval.secstruct_ ),
94 filter_min_dist_( rval.filter_min_dist_ ),
95 filter_max_dist_( rval.filter_max_dist_ ),
96 filter_min_angle_( rval.filter_min_angle_ ),
97 filter_max_angle_( rval.filter_max_angle_ ),
98 output_id_( rval.output_id_ ),
99 output_type_( rval.output_type_ ),
100 output_value_( rval.output_value_ )
188 Helices const & helices( ss_info->helices() );
189 Strands const & strands( ss_info->strands() );
193 Size current_id( 0 );
194 for( HSSTriplets::const_iterator
195 it=
hss3set_->hss_triplets().begin(), ite=
hss3set_->hss_triplets().end(); it != ite; ++it ) {
200 if( ! helices.size() >= hssop->helix() || helices[ hssop->helix() ]->length() < 5 ) {
201 TR <<
"Helix " << hssop->helix() <<
" dones not exist, or is too short. " << std::endl;
204 if( ! strands.size() >= hssop->strand1() || strands[ hssop->strand1() ]->length() < 2 ) {
205 TR <<
"Strand1 " << hssop->strand1() <<
" dones not exist, or is too short. " << std::endl;
208 if( ! strands.size() >= hssop->strand2() || strands[ hssop->strand2() ]->length() < 2 ) {
209 TR <<
"Strand2 " << hssop->strand2() <<
" dones not exist, or is too short. " << std::endl;
214 hssop->calc_geometry( ss_info );
216 TR <<
"hsheet_dist=" << hssop->hsheet_dist() <<
", hs_angle=" << hssop->hs_angle()
217 <<
", hs_dist1=" << hssop->hs1_dist() <<
", hs_dist2=" << hssop->hs2_dist() << std::endl;
237 TR <<
" Filter success ! " << std::endl;
239 TR <<
" Filter failed ! " << std::endl;
266 String const hss3s = tag->getOption<
String>(
"hsstriplets",
"" );
271 TR <<
"[ERROR] no input of hsstriplets in xml " << std::endl;
272 runtime_assert(
false );
276 String const blueprint = tag->getOption<
String>(
"blueprint",
"" );
277 if( blueprint !=
"" ) {
278 BluePrint blue( blueprint );
290 if( output_type_ !=
"dist" && output_type_ !=
"angle" ) {
292 TR <<
"Invalid type of output_type, choose either dist or angle. " << std::endl;
296 if( output_id_ >
hss3set_->hss_triplets().size() ) {
297 TR <<
"[ERROR] The value of output_id is more than the number of input hsstriplets " << std::endl;
298 runtime_assert(
false );
301 TR <<
"HSSTriplet " <<
hss3set_->hss_triplet( output_id_ ) <<
", "
302 << output_type_ <<
" is used for output value. " << std::endl;