Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RotamerSetBase.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/conformation/RotamerSetBase.hh
11 /// @brief Abstract base class for a class that holds disembodied Residues (ie not contained within a Pose) as Rotamers
12 /// @author Andrew Leaver-Fay (aleaverfay@gmail.com)
13 
14 
15 #ifndef INCLUDED_core_conformation_RotamerSetBase_hh
16 #define INCLUDED_core_conformation_RotamerSetBase_hh
17 
18 // Unit Headers
20 
21 // Package Headers
22 #include <core/types.hh>
25 
26 #ifdef WIN32
27 #include <core/conformation/AbstractRotamerTrie.hh> // WIN32 INCLUDE
28 #include <core/conformation/Residue.hh> // WIN32 INCLUDE
29 #endif
30 
31 #include <basic/datacache/BasicDataCache.fwd.hh>
32 
33 // Utility headers
34 #include <utility/pointer/ReferenceCount.hh>
35 #include <utility/vector1.fwd.hh>
36 
37 namespace core {
38 namespace conformation {
39 
41 {
42 private: // typedefs
44 
45 public: // typedefs
46  typedef basic::datacache::BasicDataCache BasicDataCache;
47  typedef basic::datacache::BasicDataCacheOP BasicDataCacheOP;
48 
49 public:
51  virtual ~RotamerSetBase();
52 
53  virtual
54  Size
55  get_n_residue_types() const = 0;
56 
57  virtual
58  Size
59  get_residue_type_begin( Size which_restype ) const = 0;
60 
61  virtual
62  Size
63  get_n_rotamers_for_residue_type( Size which_restype ) const = 0;
64 
65 
66  /// @brief Rotamers i to i+j of all the same residue type are grouped together.
67  /// This function returns the index of the residue type in a contiguous block
68  /// of rotamers. E.g. rotamers 100 to 120 might all be lysine rotamers, and might
69  /// be the 8th residue type, with the first 7 residue types spanning rotamers 1 to 99.
70  /// If new lysine rotamers are appended to the end of the rotamer set, they are
71  /// considered to be in a separate residue type block. Lysine rotamers 200 to 210 might
72  /// be block 15 while lysine rotamers 100 to 120 are still block 7.
73  virtual
74  Size
75  get_residue_type_index_for_rotamer( Size which_rotamer ) const = 0;
76 
77  virtual
78  Size
79  num_rotamers() const = 0;
80 
81  virtual
82  Size resid() const = 0;
83 
84  virtual
86  rotamer( Size rot_id ) const = 0;
87 
88  /// @brief mutatable access to a single rotamer in the set.
89  virtual
91  nonconst_rotamer( Size rot_id ) = 0;
92 
93  virtual
94  void
95  store_trie( Size method_enum_id, AbstractRotamerTrieOP trie ) = 0;
96 
97  virtual
99  get_trie( Size method_enum_id ) const = 0;
100 
101  /// @brief BasicDataCache indexed by enum in core/pack/rotamer_set/RotamerSetCacheableDataType.hh
103  data();
104 
105  /// @brief BasicDataCache indexed by enum in core/pack/rotamer_set/RotamerSetCacheableDataType.hh
106  BasicDataCache const &
107  data() const;
108 
109 
110 private:
111  // deny use of the copy constructor (no pass-by-value)
112  RotamerSetBase( RotamerSetBase const & );
113 
114  /// @brief BasicDataCache indexed by enum in core/pack/rotamer_set/RotamerSetCacheableDataType.hh
115  /// @warning DataCache must always be initialized with the number of cacheable
116  /// data types -- see the last enum entry.
118 
119 };
120 
121 
122 } // namespace conformation
123 } // namespace core
124 
125 #endif