Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DesignableResiduesFilter.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 sw=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 /// @author Sarel Fleishman (sarelf@uw.edu)
13 
14 #include <core/pose/Pose.hh>
15 #include <core/pose/PDBInfo.hh>
17 #include <utility/tag/Tag.hh>
19 // AUTO-REMOVED #include <protocols/moves/DataMap.hh>
20 #include <basic/Tracer.hh>
25 
26 #include <utility/vector0.hh>
27 #include <utility/vector1.hh>
28 
29 // JBB 120425
33 #include <ObjexxFCL/format.hh>
34 
35 
36 namespace protocols {
37 namespace protein_interface_design{
38 namespace filters {
39 
40 static basic::Tracer TR( "protocols.protein_interface_design.filters.DesignableResiduesFilter" );
41 
42 ///@brief default ctor
44  parent( "DesignableResidues" ),
45  task_factory_( NULL ),
46  lower_threshold_( 0 ),
47  upper_threshold_( 1000 ),
48  packable_( false ),
49  designable_( true )
50 {}
51 
54  return lower_threshold_;
55 }
56 
59  return upper_threshold_;
60 }
61 
62 bool
64  return packable_;
65 }
66 
67 bool
69  return designable_;
70 }
71 
72 void
74  lower_threshold_ = l;
75 }
76 
77 void
79  upper_threshold_ = u;
80 }
81 
82 void
84  designable_ = d;
85 }
86 
87 void
89  packable_ = p;
90 }
91 
94 {
95  return task_factory_;
96 }
97 
98 void
100 {
102 }
103 
104 bool
106 {
107  core::Size design_pos(compute( pose ));
108  if( (design_pos >= lower_threshold_) && (design_pos <= upper_threshold_) ){
109  TR<<"passing."<<std::endl;
110  return true;
111  }
112  else {
113  TR<<"failing."<<std::endl;
114  return false;
115  }
116 }
117 
120  runtime_assert( task_factory() );
121  runtime_assert( packable() || designable() );
122  core::pack::task::PackerTaskCOP packer_task( task_factory()->create_task_and_apply_taskoperations( pose ) );
123  core::Size total_residue;
126  total_residue = symm_info->num_independent_residues();
127  } else {
128  total_residue = pose.total_residue();
129  }
130  core::Size design_pos = 0;
131  if( designable() ){
132  std::string select_design_pos("select design_positions, resi ");
133  TR<<"Designable residues:"<<std::endl;
134  for( core::Size resi=1; resi<=total_residue; ++resi ){
135  if( packer_task->being_designed( resi ) ) {
136  TR<<pose.residue( resi ).name3()<<" "<< pose.pdb_info()->number( resi )<<pose.pdb_info()->chain( resi )<<std::endl;
137  design_pos++;
138  select_design_pos.append(ObjexxFCL::string_of(resi) + "+");
139  }
140  }
141  TR<<"Number of design positions: "<<design_pos<<std::endl;
142  TR<<select_design_pos<<std::endl;
143  }
144  core::Size packable_pos = 0;
145  if( packable() ){
146  std::string select_packable_pos("select repackable_positions, resi ");
147  TR<<"Repackable residues:"<<std::endl;
148  for( core::Size resi=1; resi<=total_residue; ++resi ){
149  if( packer_task->being_packed( resi ) ) {
150  TR<<pose.residue( resi ).name3()<<" "<<pose.pdb_info()->number( resi )<<std::endl;
151  packable_pos++;
152  select_packable_pos.append(ObjexxFCL::string_of(resi) + "+");
153  }
154  }
155  TR<<"Number of repackable positions: "<<packable_pos<<std::endl;
156  TR<<select_packable_pos<<std::endl;
157  }
158  if( designable() && !packable()) {
159  return( design_pos );
160  } else {
161  return( packable_pos);
162  }
163 }
164 
167 {
168  core::Size design_pos(compute( pose ));
169  return( design_pos );
170 }
171 
172 void
173 DesignableResiduesFilter::report( std::ostream & out, core::pose::Pose const & pose ) const
174 {
175  out<<"DesignableResiduesFilter returns "<<compute( pose )<<std::endl;
176 }
177 
178 void
183  core::pose::Pose const & )
184 {
185  TR << "DesignableResiduesFilter"<<std::endl;
187  lower_threshold( tag->getOption< core::Size >( "lower_cutoff", 0 ) );
188  upper_threshold( tag->getOption< core::Size >( "upper_cutoff", 1000 ) );
189  packable( tag->getOption< bool >( "packable", false ) );
190  designable( tag->getOption< bool >( "designable", true ) );
191  runtime_assert( designable() || packable() );
192  TR<<"with options designable: "<<designable()<<", repackable: "<<packable()<<", lower_cutoff: "<<lower_threshold()<<", and upper_cutoff: "<<upper_threshold()<<std::endl;
193 }
194 void DesignableResiduesFilter::parse_def( utility::lua::LuaObject const & def,
195  utility::lua::LuaObject const & ,
196  utility::lua::LuaObject const & tasks ) {
197  TR << "DesignableResiduesFilter"<<std::endl;
198  task_factory( protocols::elscripts::parse_taskdef( def["tasks"], tasks ));
199  lower_threshold( def["lower_cutoff"] ? def["lower_cutoff"].to<core::Size>() : 0 );
200  upper_threshold( def["upper_cutoff"] ? def["upper_cutoff"].to<core::Size>() : 1000 );
201  packable( def["packable"] ? def["packable"].to<bool>() : false );
202  designable( def["designable"] ? def["designable"].to<bool>() : true );
203  runtime_assert( designable() || packable() );
204  TR<<"with options designable: "<<designable()<<", repackable: "<<packable()<<", lower_cutoff: "<<lower_threshold()<<", and upper_cutoff: "<<upper_threshold()<<std::endl;
205 }
206 
209  return new DesignableResiduesFilter();
210 }
211 
213 
216  return new DesignableResiduesFilter( *this );
217 }
218 
221 
223 DesignableResiduesFilterCreator::keyname() const { return "DesignableResidues"; }
224 
225 } // filters
226 } // protein_interface_design
227 } // protocols