Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Rotate.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/ResfileReader.hh
11 /// @brief header of classes for resfile options
12 /// @author Gordon Lemmon
13 
14 #ifndef INCLUDED_protocols_ligand_docking_Rotate_hh
15 #define INCLUDED_protocols_ligand_docking_Rotate_hh
16 
17 // Unit Headers
20 #include <protocols/moves/Mover.hh>
21 
22 //// Scripter Headers
23 #include <utility/tag/Tag.fwd.hh>
26 
27 //// Scoring grid headers
28 // AUTO-REMOVED #include <protocols/qsar/scoring_grid/GridManager.fwd.hh>
29 
30 //// Project Headers
31 #include <core/kinematics/Jump.hh>
32 // AUTO-REMOVED #include <core/pose/Pose.hh>
34 
36 #include <utility/vector1.hh>
37 
38 
39 
40 ///////////////////////////////////////////////////////////////////////
41 
42 namespace protocols {
43 namespace ligand_docking {
44 
45 struct Rotate_info{ // including default values
47  core::Size chain_id;// looking this up from chain is slow so we store it
48  core::Size jump_id; // looking this up from chain is slow so we store it
52  utility::vector1<core::Size> tag_along_chains; // must be one residue per chain, eg water, metal
55 };
56 
57 struct Ligand_info{
58  core::conformation::ResidueCOPs residues; // multiple per main ligand
60  int atr;
61  int rep;
63  Ligand_info();
66  bool operator<(Ligand_info const ligand_info) const;
67  bool operator<(std::pair<int,int> const scores) const;
69 };
70 
72 {
73 public:
74  Rotate();
75  Rotate(Rotate_info rotate_info);
76  virtual ~Rotate();
77  Rotate(Rotate const & that);
78 
79  virtual protocols::moves::MoverOP clone() const;
81  virtual std::string get_name() const;
82 
83  void parse_my_tag(
84  utility::tag::TagPtr const tag,
88  core::pose::Pose const &
89  );
90 
91  void apply(core::pose::Pose & pose);
92 
93 private:
94  void rotate_ligand(
96  core::pose::Pose & pose
97  );
98 
99  void rotate_ligand(core::pose::Pose & pose);
100 
101  ///@brief These should have repulsive and attractive scores under the threshold
105  core::pose::Pose & pose,
106  core::Size chain_begin
107  )const;
108 
109 // utility::vector1<Ligand_info> create_random_rotations(
110 // protocols::rigid::RigidBodyMoverOP const ,
111 // core::Size const begin,
112 // core::pose::Pose & pose) const;
113 
117  core::Vector const center,
118  core::Size const begin,
119  core::Size const end,
120  core::pose::Pose & local_pose
121  ) const;
122 /*
123  Ligand_info create_random_rotation(
124  protocols::rigid::RigidBodyMoverOP const mover,
125  core::Vector const center,
126  core::Size const begin,
127  core::Size const end,
128  core::pose::Pose & local_pose) const;
129 */
131 }; // class Rotate
132 
133 /// Convenience Functions for use with Rotate
134 
135 bool check_score(
136  Ligand_info const ligand,
137  core::Size const heavy_atom_number
138 );
139 
140 bool check_RMSD(
141  Ligand_info const ligand,
142  core::Size const heavy_atom_number,
143  utility::vector1< Ligand_info> const & ligands
144 );
145 
146 void apply_rotate(
148  core::pose::Pose & pose,
149  core::Vector const & center,
150  core::Size jump_id,
151  utility::vector1<core::Size> tag_along_chains
152 );
153 
155  Ligand_info const & ligand_info,
157  core::Size const heavy_atom_number
158 );
159 
160 } //namespace ligand_docking
161 } //namespace protocols
162 
163 #endif