Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
InvrotTree.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 // :noTabs=false:tabSize=4:indentSize=4:
4 //
5 // (c) Copyright Rosetta Commons Member Institutions.
6 // (c) This file is part of the Rosetta software suite and is made available under license.
7 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
8 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
9 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
10 
11 /// @file protocols/toolbox/match_enzdes_util/InvrotTree.hh
12 /// @brief class to hold inverse rotamers associated with theozyme / cstfile
13 /// @author Florian Richter, flosopher@gmail.com, march 2012
14 
15 #ifndef INCLUDED_protocols_toolbox_match_enzdes_util_InvrotTree_hh
16 #define INCLUDED_protocols_toolbox_match_enzdes_util_InvrotTree_hh
17 
18 // Unit headers
20 
21 // package headers
25 
26 // Project headers
27 #include <core/types.hh>
28 #include <core/pose/Pose.fwd.hh>
30 
31 // Utility headers
32 #include <utility/pointer/ReferenceCount.hh>
33 
34 // C++ headers
35 
36 #include <utility/vector1.fwd.hh>
37 
38 
39 #if defined PYROSETTA || defined WIN32
42 #endif
43 
44 
45 namespace protocols {
46 namespace toolbox {
47 namespace match_enzdes_util {
48 
49 
50 ///abstract base class for the inverse rotamer tree
51 ///is abstract so that in the future inverse rots could
52 ///be generated in different ways than throug the enz cst machinery
54 
55 public:
56  typedef core::Size Size;
57 
58  InvrotTree();
59 
60  virtual ~InvrotTree();
61 
63  get_constraint_for_target_state( Size target_state ) const;
64 
65  /// @brief the main function, generate the constraints
66  void
68  core::pose::Pose const & pose,
69  AllowedSeqposForGeomCstCOP geomcst_seqpos
70  );
71 
72  /// @brief convenience access function
73  /// to the inverse rotamers in the tree
74  /// note: the returned invrots can contain
75  /// duplications, as every unique definition
76  /// of the tree is returned
79 
80 
81  /// @brief visualization
82  /// this can lead to several files
83  /// being written, depending on the
84  /// ambiguities in the tree
85  void
87 
88 
89  /// @brief important function 1:
90  /// populate the tree
91  /// should be called before folding a chain
92  /// obviously
93  /// see TheozymeInvrotTree below for example
94  virtual
95  void
97 
98 
99  /// @brief important function 2:
100  /// after a chain/pose has been generated,
101  /// check whether it's compatible with
102  /// the inverse rotamers in the tree
103  /// this can change the pose again
104  virtual
105  bool
107  core::pose::Pose & pose ) const = 0;
108 
109  Size
111  return invrot_targets_.size(); }
112 
113 protected:
114 
115  void
117 
118  void
119  add_to_targets( InvrotTargetOP invrot_target );
120 
121 private:
122 
123  // there can be multiple possible targets, i.e. different rotamers
124  // for a ligand
127 
128 };
129 
130 /// @brief This class takes an EnzConstraintIO object
131 /// and generates a 3D model of the theozyme in it,
132 /// where inverse rotamers are generated for every block
133 /// in the cstfile. Shit gets complicated when ambiguous
134 /// interactions are specified and other residues are
135 /// interacting (possibly in ambiguous fashion) with
136 /// these ambiguous residues...
138 public:
139 
140  TheozymeInvrotTree( EnzConstraintIOCOP enzcst_io ); //initialize from enz constraint object, all the inverse rotamers are built
141 
143 
144 public:
145 
146 
147  /// @brief
148  /// this function generates the 'target' for the inverse rotamers,
149  /// i.e. in the case of enzdes, simply the coordinates for the ligand
150  /// if in the future somebody wants to use this to build inverse rotamers
151  /// against a protein, this function can be reimplemented.
152  /// called from the constructor, is this really the best idea?
153  virtual
154  void
156 
157  bool
159  core::pose::Pose & pose ) const;
160 
161 private:
162 
164 
165  //maybe this also needs access to all the nodes?
166 
167 }; // class TheozymeInvrotTree
168 
169 
170 }
171 }
172 }
173 
174 #endif