Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SingleLigandRotamerLibrary.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/scoring/dunbrack/SingleLigandRotamerLibrary.hh
11 ///
12 /// @brief
13 /// @author Ian W. Davis
14 
15 
16 #ifndef INCLUDED_core_pack_dunbrack_SingleLigandRotamerLibrary_hh
17 #define INCLUDED_core_pack_dunbrack_SingleLigandRotamerLibrary_hh
18 
21 
22 #include <utility/vector1.hh>
23 
24 
25 namespace core {
26 namespace pack {
27 namespace dunbrack {
28 
29 
30 class SingleLigandRotamerLibrary; // fwd declaration
35 
36 ///@brief A fixed library of conformations for some residue type (doesn't have to be a ligand).
37 ///@details Reads residue conformations in PDB format separated by mandatory TER records.
38 /// "Included" from a residue .params file with the PDB_ROTAMERS keyword.
40 {
41  //typedef utility::vector1< core::Size > Fragment; // a list of atom indices (variable len)
42  //typedef utility::vector1< Fragment > Fragments;
43  //typedef utility::vector1< core::Size > Automorphism; // a remapping of atom indices (fixed len)
44  //typedef utility::vector1< Automorphism > Automorphisms;
45 
46 public:
47 
49 
51 
52  /// @brief explicit constructor
55  Real ref_E_in
56  );
57  /// @brief Reads conformers from PDB-format file (must be separated by TER records!)
58  virtual
59  void
61  std::string const & filename,
63  );
64 
65  /// @brief Adheres to the contract from SingleLigandRotamerLibrary
66  virtual
67  Real
69  conformation::Residue const & rsd,
71  ) const;
72 
73  /// @brief Adheres to the contract from SingleLigandRotamerLibrary
74  virtual
75  Real
77  conformation::Residue const & rsd,
79  ) const;
80 
81  virtual
82  Real
84  conformation::Residue const & rsd,
85  bool curr_rotamer_only,
87  ) const;
88 
89  virtual
90  void
92  conformation::Residue const &,// rsd,
93  RotamerLibraryScratchSpace &,// scratch,
94  numeric::random::RandomGenerator &,// RG,
95  ChiVector &,// new_chi_angles,
96  bool //perturb_from_rotamer_center
97  ) const {} // stubbed out for the moment.
98 
99  /// @brief Adheres to the contract from SingleLigandRotamerLibrary
100  virtual
101  void
103  pose::Pose const & pose,
104  scoring::ScoreFunction const & scorefxn,
105  pack::task::PackerTask const & task,
107  chemical::ResidueTypeCOP concrete_residue,
108  conformation::Residue const& existing_residue,
109  utility::vector1< utility::vector1< Real > > const & extra_chi_steps,
110  bool buried,
111  RotamerVector & rotamers
112  ) const;
113 
114  //XRW_B_T1
115  /*
116  /// @brief Adheres to the contract from SingleLigandRotamerLibrary
117  virtual
118  SingleResidueRotamerLibraryOP
119  coarsify(coarse::Translator const &map) const;
120  */
121  //XRW_E_T1
122 
123  /// @brief Adheres to the contract from SingleLigandRotamerLibrary
124  virtual
125  void
126  write_to_file( utility::io::ozstream &out ) const;
127 
128  Real
130  return ref_energy_;
131  }
132 
133  void set_reference_energy( Real ref_E_in){
134  ref_energy_ = ref_E_in;
135  }
136 
138  rotamers_ = rotamers_in;
139  }
140 
142  get_rotamers() const {
143  return rotamers_;
144  }
145 
146 
147 
148 private:
149 
150  /// @brief Fills in missing hydrogens/virtual atoms from library load
151  ///
152  /// @details "missing" is the vector for atoms missing for the current "rsd"
153  // "missed" is the vector annotating which atoms have already been filled (for diagnostic output tracking)
154  void
156 
157  // Breaking the ligand into rigid fragments that would supply (putative) pharamacophores
158  // to superimpose on was a nice idea, but it breaks the packer assumption that nbr_atom doesn't move.
159 
160  //void find_fragments(chemical::ResidueTypeCOP restype);
161  //void list_automorphisms(chemical::ResidueTypeCOP restype);
162  //void unique_auto_for_frags();
163 
164  //void superimpose(
165  // conformation::Residue const & existing,
166  // conformation::Residue & conformer,
167  // Fragment const & frag,
168  // Automorphism const & morph
169  //) const;
170 
171 private:
172 
174 
175  // A baseline reference energy applied to *all* conformers in this library,
176  // like amino acid reference energies.
178 
179  // Breaking the ligand into rigid fragments that would supply (putative) pharamacophores
180  // to superimpose on was a nice idea, but it breaks the packer assumption that nbr_atom doesn't move.
181 
182  /// A ligand with N torsions decomposes into N+1 rigid fragments,
183  /// or fewer if some consist of 2 atoms or less.
184  /// Each fragement can be used for superimposing on, possibly in multiple ways.
185  //Fragments rigid_frags_;
186  /// All the automorphisms for the ligand as a whole, shared among frags (below).
187  //Automorphisms automorphs_;
188  /// A subset of automorphs_ that reflects the *unique* automorphisms within
189  /// a particular rigid fragment. These represent different ways of
190  /// superimposing two structures using the atoms from that fragment.
191  //utility::vector1< utility::vector1 < Automorphism * > > frag_automorphs_;
192  /// Total number of automorphisms in frag_automorphs_ -- number of possible ways to superimpose
193  //Size total_superpos_;
194 
195 }; // SingleLigandRotamerLibrary
196 
197 
198 } // namespace dunbrack
199 } // namespace scoring
200 } // namespace core
201 
202 #endif // INCLUDED_core_pack_dunbrack_SingleLigandRotamerLibrary_HH