Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BBConRotMover.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 
11 /// @notes Monte Carlo backbone sampling for polypeptides with variable bond angles
12 /// and dihedral angles using concerted rotations and a Gaussian bias
13 /// Jakob P. Ulmschneider, JCP, VOl 118, 9
14 
15 #ifndef INCLUDED_protocols_simple_moves_BBConRotMover_hh
16 #define INCLUDED_protocols_simple_moves_BBConRotMover_hh
17 
19 //core
20 #include <core/types.hh>
21 #include <core/pose/Pose.fwd.hh>
23 // AUTO-REMOVED #include <core/chemical/ResidueType.fwd.hh>
24 
25 //protocols
26 #include <protocols/moves/Mover.hh>
28 //movemap
30 //
31 #include <utility/vector1.hh>
32 
33 //std
34 #include <string>
35 
36 using namespace std;
37 
38 namespace protocols {
39 namespace simple_moves {
40 
42 {
43 public:
44  //typedef core::Vector Vector;
45  //typedef core::Real Real;
46  //typedef core::Size Size;
47  //typedef core::pose::Pose Pose;
48  //typedef core::pose::PoseOP PoseOP;
49  //typedef core::pose::PoseCOP PoseCOP;
50  //typedef core::conformation::Residue Residue;
51  //typedef utility::vector1< Vector > VdRdPhi;
52  //typedef utility::vector1< VdRdPhi > VMatrix;
53  //typedef utility::vector1< utility::vector1<Real> > Matrix;
54  //typedef numeric::xyzMatrix<Real> xyzMatrix;
56 
57 public:
58  BBConRotMover();
59  ~BBConRotMover();
60 
61  void apply(Pose &);
62  virtual std::string get_name() const;
63  void factorA( core::Real const fA );
64  void factorB( core::Real const fB );
65  void factorC( core::Real const fC );
66 
67 protected:
68  bool make_move(Pose &);
69  void get_VdRdPhi(Pose const &);
70  void get_G();
71  void get_A();
72  Real get_L_move(Pose &);
73  Real get_L_prime();
74 
75 private:
76  /// @brief get xyz of d, given reference atoms a,b,c (a-b-c-d)
77  /// and
78  /// distance of c-d
79  /// bond angle theta of d-c-b
80  /// dihedral angle phi of d-c-b-a
81  void get_xyz(Vector const &a, Vector const &b, Vector const &c, Vector &d,
82  Real distance, Real theta, Real phi);
83 
84  //key function, from Jakob
85  Real calc_jacobian_cartesians(Vector const &, Vector const &,
86  Vector const &, Vector const &, Vector const &);
87 
88  bool get_determinant(double a[5][5], int n, double &det);
89 
90  bool closure(
91  //before closure
92  Vector &r0,
93  Vector &r1,
94  Vector &r2,
95  Vector &r3,
96  Vector &r4,
97  Vector &r5,
98  Vector &r6,
99  //after closure
100  Vector &p1,
101  Vector &p2,
102  Vector &p3,
103  //old angle/dih
104  Real const theta1_old,
105  Real const theta2_old,
106  Real const theta3_old,
107  Real const theta4_old,
108  Real const alpha1_old,
109  Real const alpha2_old,
110  Real const alpha3_old,
111  //new angle/dih
112  Real &theta1,
113  Real &theta2,
114  Real &theta3,
115  Real &theta4,
116  Real &alpha1,
117  Real &alpha2,
118  Real &alpha3
119  );
120 
121 private:
127 
128  //no sidechain and branch atom
129  //core::chemical::ResidueType const &cen_gly_restyp;
130 };
131 
132 }//moves
133 }//protocols
134 
135 #endif
136 
137 
138 
139