Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PackerTask.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/pack/task/PackerTask.hh
11 /// @brief Task class to describe packer's behavior header
12 /// @author Andrew Leaver-Fay (leaverfa@email.unc.edu)
13 /// @author Steven Lewis
14 
15 #ifndef INCLUDED_core_pack_task_PackerTask_hh
16 #define INCLUDED_core_pack_task_PackerTask_hh
17 
18 // Unit Headers
20 
21 // Package Headers
27 
28 // Project Headers
32 #include <core/chemical/AA.hh>
33 #include <core/pose/Pose.fwd.hh>
35 
36 // Utility Headers
37 #include <utility/pointer/ReferenceCount.hh>
38 #include <utility/vector1.fwd.hh>
39 
40 // STL Headers
41 
42 #include <iosfwd>
43 
44 #include <utility/vector1.hh>
45 
46 #ifdef PYROSETTA
48 #endif
49 
50 
51 namespace core {
52 namespace pack {
53 namespace task {
54 
56 {
57 public:
58  typedef std::list< chemical::ResidueTypeCOP > ResidueTypeCOPList;
59  typedef std::list< chemical::ResidueTypeCOP >::iterator ResidueTypeCOPListIter;
60  typedef std::list< chemical::ResidueTypeCOP >::const_iterator ResidueTypeCOPListConstIter;
61 public:
62  virtual ~ResidueLevelTask();
63 
64  virtual
67  bool buried,
68  int chi,
69  chemical::ResidueTypeCOP concrete_residue
70  ) const = 0;
71 
72  virtual void initialize_from_command_line() = 0;
73 
75 
76  virtual void or_include_current( bool include_current ) = 0;
77  virtual bool include_current() const = 0;
78 
79  virtual void add_behavior( std::string const & behavior ) = 0;
80  virtual bool has_behavior( std::string const & behavior ) const = 0;
81  virtual bool has_behavior() const = 0;
82 
83  virtual void target_type( chemical::ResidueTypeCOP type ) = 0;
84  virtual void target_type( chemical::AA aa ) = 0;
85  virtual void target_type( std::string name ) = 0;
86 
87  virtual void or_adducts( bool setting ) = 0;
88  virtual bool adducts() const = 0;
89 
90  virtual void or_ex1( bool ex1 ) = 0;
91  virtual void or_ex2( bool ex2 ) = 0;
92  virtual void or_ex3( bool ex3 ) = 0;
93  virtual void or_ex4( bool ex4 ) = 0;
94 
99 
100  virtual void or_ex1aro( bool ex1aro ) = 0;
101  virtual void or_ex2aro( bool ex2aro ) = 0;
102  virtual void or_ex1aro_exposed( bool ex1aro_exposed ) = 0;
103  virtual void or_ex2aro_exposed( bool ex2aro_exposed ) = 0;
104 
106  virtual void or_ex2aro_sample_level( ExtraRotSample ex2aro_only_sample_level ) = 0;
109 
111 
112  virtual void or_operate_on_ex1( bool operate ) = 0;
113  virtual void or_operate_on_ex2( bool operate ) = 0;
114  virtual void or_operate_on_ex3( bool operate ) = 0;
115  virtual void or_operate_on_ex4( bool operate ) = 0;
116 
117  virtual bool ex1() const = 0;
118  virtual bool ex2() const = 0;
119  virtual bool ex3() const = 0;
120  virtual bool ex4() const = 0;
121 
122  virtual ExtraRotSample ex1_sample_level() const = 0;
123  virtual ExtraRotSample ex2_sample_level() const = 0;
124  virtual ExtraRotSample ex3_sample_level() const = 0;
125  virtual ExtraRotSample ex4_sample_level() const = 0;
126 
127  virtual bool ex1aro() const = 0;
128  virtual bool ex2aro() const = 0;
129  virtual bool ex1aro_exposed() const = 0;
130  virtual bool ex2aro_exposed() const = 0;
131 
132  virtual ExtraRotSample ex1aro_sample_level() const = 0;
133  virtual ExtraRotSample ex2aro_sample_level() const = 0;
134  virtual ExtraRotSample ex1aro_exposed_sample_level() const = 0;
135  virtual ExtraRotSample ex2aro_exposed_sample_level() const = 0;
136 
137  virtual ExtraRotSample exdna_sample_level() const = 0;
138 
139  virtual bool operate_on_ex1() const = 0;
140  virtual bool operate_on_ex2() const = 0;
141  virtual bool operate_on_ex3() const = 0;
142  virtual bool operate_on_ex4() const = 0;
143 
144  virtual void sample_proton_chi( bool setting ) = 0;
145  virtual bool sample_proton_chi() const = 0;
146 
147  virtual void sample_rna_chi( bool setting ) = 0;
148  virtual bool sample_rna_chi() const = 0;
149 
150  virtual void or_optimize_h( bool setting ) = 0;
151  virtual bool optimize_h() const = 0;
152  virtual void or_preserve_c_beta( bool setting ) = 0;
153  virtual bool preserve_c_beta() const = 0;
154  virtual void or_flip_HNQ( bool setting ) = 0;
155  virtual bool flip_HNQ() const = 0;
156  virtual void or_fix_his_tautomer( bool setting ) = 0;
157  virtual bool fix_his_tautomer() const = 0;
158 
159  virtual void and_extrachi_cutoff( Size num_neighbors_to_be_called_buried ) = 0;
160 
161  virtual Size extrachi_cutoff() const = 0;
162 
163  // remove all ResidueTypes from the list of allowed residue types
164  virtual void prevent_repacking() = 0;
165 
166  // contract (and) the list of available aas for canonical aa's
167  // if an amino acid is not present (false) in the boolean vector, then do not allow it at this position. The boolean vector is a 20-length vector in alphabetical order by one-letter code.
168  virtual void restrict_absent_canonical_aas( utility::vector1< bool > const & ) = 0;
169 
170  // if an amino acid is not present (false) in the boolean vector, then do not allow it at this position. The boolean vector is a 20-length vector in alphabetical order by one-letter code.
171  // If the mode tag is specified, use that it when outputing the task mode in the resfile format rather than PIKAA or NOTAA.
172  virtual void restrict_absent_canonical_aas( utility::vector1< bool > const & allowed_aas, std::string const & mode ) = 0;
173 
174  //Same behavior restrict_absent_canonical_aas except that it always allows the native aa at a position even if it is not included in the allowed residues
175  virtual void restrict_nonnative_canonical_aas( utility::vector1< bool > const & allowed_aas) = 0;
176 
177 
178  ///@brief disables designing to nucleic acid residues not in the passed list
179  virtual void restrict_absent_nas( utility::vector1< chemical::AA > const & keep_nas ) = 0;
180 
181  // only let this residue repack -- prevent redesign
182  virtual void restrict_to_repacking() = 0;
183 
184  ///@brief
185  virtual bool is_original_type( chemical::ResidueTypeCOP type ) const = 0;
186 
187  ///@brief
188  virtual chemical::ResidueTypeSet const & get_original_residue_set() const = 0;
189 
190  ///@brief
191  virtual chemical::AA const & get_original_residue() const = 0;
192 
193  // expand (or) the list of available aa's for non-cannonicals
194  virtual void allow_noncanonical_aa(
195  std::string const & aaname,
196  chemical::ResidueTypeSet const & residue_set // who gives this reference to the rlt?; maybe rlt holds a rts
197  ) = 0;
198 
199  //assumes same restypeset as original residue
200  virtual void allow_noncanonical_aa( std::string const & aaname ) = 0;
201 
202  ///@brief explicitly allow a NCAA; assumes same ResidueTypeSet as original_residue_type_
203  virtual void allow_noncanonical_aa( chemical::AA aa ) = 0;
204 
205  // expand (or) the list of rsdtypes by including types with this aa and which variant-match the original rsd
206  virtual
207  void
208  allow_aa( chemical::AA const & aa ) = 0;
209 
210  virtual ResidueTypeCOPList const & allowed_residue_types() const = 0;
213  virtual chemical::ResidueTypeCOP target_type() const = 0;
214 
215  virtual void print_allowed_types( std::ostream & os ) const = 0;
216 
217  virtual bool being_designed() const = 0; // is this residue up for design?
218  virtual bool being_packed() const = 0; // is this residue being modified at all by the packer
219 
220  virtual
222  rotamer_operations() const = 0;
223 
224  virtual
225  void
228  ) = 0;
229 
231  rotamer_set_operation_begin() const = 0;
232 
234  rotamer_set_operation_end() const = 0;
235 
236  virtual
237  void
240  ) = 0;
241 
242  virtual
244  command_string() const = 0;
245 
246 };
247 
248 /// @brief Task class that gives instructions to the packer
250 {
251 public:
252  typedef chemical::AA AA;
255 
256 
257 public:
258  virtual ~PackerTask() = 0;
259 
260  virtual PackerTaskOP clone() const = 0;
261 
262  virtual void clean_residue_task( conformation::Residue const & original_residue, Size const seqpos ) = 0;
263 
264  virtual Size total_residue() const = 0;
265 
266  virtual void temporarily_fix_everything() = 0;
267  virtual void temporarily_set_pack_residue( int resid, bool setting ) = 0;
268 
269  virtual bool pack_residue( int resid ) const = 0;
270  virtual bool being_packed( Size resid ) const = 0;
271 
272  virtual Size num_to_be_packed() const = 0;
273 
274  virtual bool design_residue( int resid ) const = 0;
275  virtual bool being_designed( Size resid ) const = 0;
276  virtual bool design_any() const = 0;
277 
278  virtual void set_bump_check( bool setting ) = 0;
279  virtual bool bump_check() const = 0;
280  virtual void and_max_rotbump_energy( Real setting ) = 0;
281  virtual Real max_rotbump_energy() const = 0;
282 
283 
284  virtual void or_include_current( bool setting ) = 0;
285  virtual void or_include_current( bool setting, Size resid ) = 0;
286  virtual bool include_current( Size resid ) const = 0;
287 
288  virtual void add_behavior( std::string const & behavior ) = 0;
289  virtual void add_behavior( std::string const & behavior, Size resid ) = 0;
290  virtual bool has_behavior( std::string const & behavior, Size resid ) const = 0;
291  virtual bool has_behavior( Size resid ) const = 0;
292 
293  virtual void or_adducts( bool setting ) = 0;
294  virtual void or_adducts( bool setting, Size resid ) = 0;
295  virtual bool adducts( Size resid ) const = 0;
296 
297  virtual void or_optimize_h_mode( bool setting ) = 0;
298 
299  virtual void or_preserve_c_beta( bool setting ) = 0;
300 
301  virtual void or_flip_HNQ( bool setting ) = 0;
302  virtual void or_fix_his_tautomer( utility::vector1<int> const & positions, bool setting ) = 0;
303 
304  /// @brief Activate a LinearMemoryInteraction graph that uses 95% less memory in design runs
305  /// and runs twice as fast. (Not faster for fixed-sequence repackings).
306  virtual void or_linmem_ig( bool setting ) = 0;
307  virtual bool linmem_ig() const = 0;
308 
309  /// @brief Activate a LazyInteractionGraph that computes rotamer pair energies at most once
310  virtual void or_lazy_ig( bool setting ) = 0;
311  virtual bool lazy_ig() const = 0;
312 
313  /// @brief Activates the DoubleLazyInteractionGraph, which computes rotamer pair energies at most once, and delays allocating memory to hold them until needed. Used for multistate design.
314  virtual void or_double_lazy_ig( bool setting ) = 0;
315  virtual bool double_lazy_ig() const = 0;
316  virtual void decrease_double_lazy_ig_memlimit( Size nbytes_for_rpes ) = 0;
317  virtual Size double_lazy_ig_memlimit() const = 0;
318 
319  virtual void or_multi_cool_annealer( bool setting ) = 0;
320  virtual bool multi_cool_annealer() const = 0;
321 
322  virtual void increase_multi_cool_annealer_history_size( Size setting ) = 0;
323  virtual Size multi_cool_annealer_history_size() const = 0;
324 
325  virtual void show( std::ostream & out ) const = 0;
326  virtual void show() const = 0;
327  virtual void show_residue_task( std::ostream & out, Size resid ) const = 0;
328  virtual void show_residue_task( Size resid ) const = 0;
329  virtual void show_all_residue_tasks( std::ostream & out ) const = 0;
330  virtual void show_all_residue_tasks() const = 0;
331 
332  virtual
333  PackerTask &
335 
336  virtual PackerTask &
338 
339  virtual
340  PackerTask &
341  restrict_to_residues( utility::vector1< bool > const & residues_allowed_to_be_packed ) = 0;
342 
343  virtual
344  PackerTask &
345  restrict_to_repacking() = 0;
346 
347  virtual
348  ResidueLevelTask const &
349  residue_task( Size resid ) const = 0;
350 
351  virtual
353  nonconst_residue_task( Size resid ) = 0;
354 
355  virtual
357  repacking_residues() const = 0;
358 
359  virtual
361  designing_residues() const = 0;
362 
363  virtual
364  bool
365  rotamer_couplings_exist() const = 0;
366 
367  virtual
369  rotamer_couplings() const = 0;
370 
371  virtual
372  void
373  rotamer_couplings( RotamerCouplingsCOP setting ) = 0;
374 
375  virtual
376  bool
377  rotamer_links_exist() const = 0;
378 
379  virtual
381  rotamer_links() const = 0;
382 
383  virtual
384  void
385  rotamer_links( RotamerLinksCOP setting ) = 0;
386 
387 
388  virtual
390  IGEdgeReweights() const = 0;
391 
392  virtual
394  set_IGEdgeReweights() = 0;
395 
396  virtual
397  void
400  ) = 0;
401 
402  virtual
403  void
406  ) = 0;
407 
408  //some get-set functions for annealer options
409  virtual
410  void
411  low_temp( Real const & low_temp ) = 0;
412 
413  virtual
414  void
415  high_temp( Real const & high_temp ) = 0;
416 
417  virtual
418  void
419  disallow_quench( bool const & disallow_quench ) = 0;
420 
421  virtual
422  Real
423  low_temp() const = 0;
424 
425  virtual
426  Real
427  high_temp() const = 0;
428 
429  virtual
430  bool
431  disallow_quench() const = 0;
432 
433  virtual
435  task_string( pose::Pose const & pose ) const = 0;
436 
437  virtual
440  core::pose::Pose const & pose
441  ) = 0;
442 
443  // stream (I)/O ////////////////////////////////////////////////////
444 
445  /// @brief output operator
446  friend std::ostream & operator <<(std::ostream & os, PackerTask const & t);
447 
448  virtual
449  void
451  PackerTask const & to_copy
452  ) = 0;
453 
454  virtual
455  void
457 
458  virtual
459  void
461 
462  virtual
463  bool
464  symmetrize_by_union() const = 0;
465 
466  virtual
467  bool
468  symmetrize_by_intersection() const = 0;
469 
470 private:
471 
472 #ifdef USEBOOSTSERIALIZE
473  friend class boost::serialization::access;
474 
475  template<class Archive>
476  void serialize(Archive & ar, const unsigned int version) { }
477 #endif
478 
479  virtual
480  PackerTask &
481  operator=(PackerTask const &) = 0;
482 
483 };
484 
485 //NOTE: parse_resfile is now an independent function in ResfileReader.hh, not a member function of the PackerTask hierarchy
486 
487 
488 } //namespace task
489 } //namespace pack
490 } //namespace core
491 
492 #endif