Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MMTorsionLibrary.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/mm/MMTorsionLibrary.hh
11 /// @brief Molecular mechanics torsion library class
12 /// @author P. Douglas Renfrew (renfrew@unc.edu)
13 
14 
15 #ifndef INCLUDED_core_scoring_mm_MMTorsionLibrary_hh
16 #define INCLUDED_core_scoring_mm_MMTorsionLibrary_hh
17 
18 // Unit headers
20 
21 // Project headers
23 
24 // Utility header
25 #include <utility/pointer/access_ptr.hh>
26 #include <utility/pointer/owning_ptr.hh>
27 #include <utility/pointer/ReferenceCount.hh>
28 
29 // C++ headers
30 #include <map>
31 
32 #include <utility/keys/Key3Tuple.fwd.hh>
33 #include <utility/keys/Key4Tuple.fwd.hh>
34 
35 
36 namespace core {
37 namespace scoring {
38 namespace mm {
39 
40 // all ints for now
41 typedef utility::keys::Key4Tuple< int, int, int, int > mm_torsion_atom_quad;
42 typedef utility::keys::Key3Tuple< double, int, double > mm_torsion_param_set;
43 typedef std::multimap< mm_torsion_atom_quad, mm_torsion_param_set > mm_torsion_library;
44 typedef std::multimap< mm_torsion_atom_quad, mm_torsion_param_set >::const_iterator mm_torsion_library_citer;
45 typedef std::pair< mm_torsion_library_citer, mm_torsion_library_citer > mm_torsion_library_citer_pair;
46 
47 /// @brief A class to maintain a set of MM torsion paramaters.
48 ///
49 /// @details The MMTorsionLibrary class contains functions and data structures to initialize, store, and provide lookups
50 /// for molecular mechanics torsional paramaters. The sets of 4 atom types that make up a dihedral angle are stored in an
51 /// mm_torsion_atom_quad . The sets 3 parameters that act as values for the actual MM torsion potential are stored in an
52 /// mm_torsion_param_set . The class maintains 2 libraries; one for set of torsion parameter for which all 4 atom types in
53 /// the dihedral at defined ( fully_assigned_mm_torsion_library_ ), and a library that is only dependant on the two central
54 /// atom types ( wildcard_mm_torsion_library_ ). Wildcar atom types are designated by 'X'. Lookups are done with MMAtomType
55 /// indicies or strings that are converted to MMAtomType indicies. Lookup functions return pairs of iterators to the map.
56 /// The same set of 4 atom types can corespond to multiple paramter sets with different multiplicities to more accuratly
57 /// define the potential and is the reason multimaps are used instead of just maps.
58 ///
60 {
61 
62 public:
63  /// @brief ctor
65  virtual ~MMTorsionLibrary();
66 
67  /// @brief lookup by atom type ints
69  lookup( int atom1, int atom2, int atom3, int atom4 ) const;
70 
71  /// @brief lookup by atom type strings
73  lookup( std::string atom1, std::string atom2,
74  std::string atom3, std::string atom4 ) const;
75 
76 private:
77 
78  /// @brief library that contains torsion params for sets in which all mm atom types
79  /// are specified for all 4 positions
81 
82  /// @brief library that contains torsion params for sets in which all mm atom types
83  /// are NOT specified for all 4 positions
85 
86  /// @brief the MMAtomTypeSet associated with the library
88 
89 };
90 
91 
92 } // namespace mm
93 } // namespace scoring
94 } // namespace core
95 
96 
97 #endif // INCLUDED_core_mm_mm_torsion_library_HH