Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BackrubSegment.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 protocols/backrub/BackrubSegment.hh
11 /// @brief definition/implmentation of BackrubSegment class
12 /// @author Colin A. Smith (colin.smith@ucsf.edu)
13 
14 
15 #ifndef INCLUDED_protocols_backrub_BackrubSegment_hh
16 #define INCLUDED_protocols_backrub_BackrubSegment_hh
17 
18 // Core Headers
20 #include <core/pose/Pose.fwd.hh>
21 #include <core/id/AtomID.hh>
22 #include <core/types.hh>
23 
24 // Protocols Headers
25 
26 // Utility Headers
27 #include <utility/keys/Key3Vector.fwd.hh>
28 
29 #include <utility/vector1.hh>
30 
31 
32 // C++ Headers
33 
34 namespace protocols {
35 namespace backrub {
36 
37 /// @brief a class for holind information about individual backrub segments
39 
40 public:
41 
42  typedef utility::keys::Key3Vector<core::id::AtomID> BondAngleKey;
43 
51  ):
52  start_atomid_(start_atomid),
53  start_atomid1_(start_atomid1),
54  start_atomid2_(start_atomid2),
55  end_atomid_(end_atomid),
56  size_(size),
57  max_angle_disp_(max_angle_disp),
58  angle_disp_(0)
59  {}
60 
61  /// @brief get AtomID of starting atom
63  start_atomid() const
64  {
65  return start_atomid_;
66  }
67 
68  /// @brief get AtomID of first atom along the path from start to end
70  start_atomid1() const
71  {
72  return start_atomid1_;
73  }
74 
75  /// @brief get AtomID of second atom along the path from start to end
77  start_atomid2() const
78  {
79  return start_atomid2_;
80  }
81 
82  /// @brief get AtomID of starting atom
84  end_atomid() const
85  {
86  return end_atomid_;
87  }
88 
89  /// @brief get the segment size
91  size() const
92  {
93  return size_;
94  }
95 
96  /// @brief get mainchain atom tree atoms 1 bond away from the start pivot
97  void
99  core::pose::Pose const & pose,
100  core::kinematics::tree::AtomCOP & start_atom_m1,
101  core::kinematics::tree::AtomCOP & start_atom,
102  core::kinematics::tree::AtomCOP & start_atom_p1
103  ) const;
104 
105  /// @brief get mainchain atom tree atoms 2 bonds away from the start pivot
106  void
107  start_atoms2(
108  core::pose::Pose const & pose,
109  core::kinematics::tree::AtomCOP & start_atom_m2,
110  core::kinematics::tree::AtomCOP & start_atom_m1,
111  core::kinematics::tree::AtomCOP & start_atom,
112  core::kinematics::tree::AtomCOP & start_atom_p1,
113  core::kinematics::tree::AtomCOP & start_atom_p2
114  ) const;
115 
116  /// @brief get a key representing the starting mainchain bond angle atoms
119  core::pose::Pose const & pose
120  );
121 
122  /// @brief get mainchain atom tree atoms 1 bond away from the end pivot
123  void
124  end_atoms1(
125  core::pose::Pose const & pose,
126  core::kinematics::tree::AtomCOP & end_atom_m1,
128  core::kinematics::tree::AtomCOP & end_atom_p1
129  ) const;
130 
131  /// @brief get mainchain atom tree atoms 2 bonds away from the end pivot
132  void
133  end_atoms2(
134  core::pose::Pose const & pose,
135  core::kinematics::tree::AtomCOP & end_atom_m2,
136  core::kinematics::tree::AtomCOP & end_atom_m1,
138  core::kinematics::tree::AtomCOP & end_atom_p1,
139  core::kinematics::tree::AtomCOP & end_atom_p2
140  ) const;
141 
142  /// @brief get a key representing the ending mainchain bond angle atoms
145  core::pose::Pose const & pose
146  );
147 
148  /// @brief get the current bond angle atoms referred to by a key
149  static
150  void
152  core::pose::Pose const & pose,
153  BackrubSegment::BondAngleKey bond_angle_key,
157  );
158 
159  /// @brief get maximum angular displacement
160  core::Real
162  {
163  return max_angle_disp_;
164  }
165 
166  /// @brief get overall angular displacement
167  core::Real
168  angle_disp() const
169  {
170  return angle_disp_;
171  }
172 
173 private:
174 
182  // to be implemented
183  //utility::histogram<float> > attempted_moves_;
184  //utility::histogram<float> > accepted_moves_;
185 };
186 
187 } // moves
188 } // protocols
189 
190 #endif