00001
00002
00003
00004
00005 #ifndef BALL_STRUCTURE_ROTAMERLIBRARY_H
00006 #define BALL_STRUCTURE_ROTAMERLIBRARY_H
00007
00008 #ifndef BALL_STRUCTURE_FRAGMENT_DB_H
00009 # include <BALL/STRUCTURE/fragmentDB.h>
00010 #endif
00011
00012 #ifndef BALL_STRUCTURE_RESIDUEROTAMERSET_H
00013 #include <BALL/STRUCTURE/residueRotamerSet.h>
00014 #endif
00015
00016 #ifndef BALL_DATATYPE_HASHMAP_H
00017 #include <BALL/DATATYPE/hasMap.h>
00018 #endif
00019
00020
00021
00022 namespace BALL
00023 {
00024 class FragmentDB;
00025 class String;
00026
00033 class BALL_EXPORT RotamerLibrary
00034 {
00035 public:
00036
00037 BALL_CREATE(RotamerLibrary)
00038
00039
00042
00044 static const String DEFAULT_LIBRARY;
00045
00047 static const String DEFAULT_FRAGMENT_DB;
00049
00057 RotamerLibrary() ;
00058
00060 RotamerLibrary(const String& filename, const FragmentDB& fragment_db) ;
00061
00063 RotamerLibrary(const FragmentDB& fragment_db) ;
00064
00066 RotamerLibrary(const RotamerLibrary& library) ;
00067
00069 virtual ~RotamerLibrary();
00071
00075
00076 RotamerLibrary& operator = (const RotamerLibrary& rhs);
00078
00079
00083
00084 ResidueRotamerSet* getRotamerSet(const String& name);
00085
00087 ResidueRotamerSet* getRotamerSet(const String& name, float phi, float psi);
00088
00090 ResidueRotamerSet* getRotamerSet(const Residue& residue);
00091
00093 Size getNumberOfRotamers() const;
00094
00096 Size getNumberOfRotamers(const String& name) const;
00097
00099 Size getNumberOfRotamerSets() const;
00100
00102 void addRotamer(const String& name, const Rotamer& rotamer, Size number_of_torsions, Index phi, Index psi);
00103
00105 void addRotamer(const String& name, const Rotamer& rotamer, Size number_of_torsions);
00106
00108 bool isBackboneDependent() const;
00109
00111 void setBackboneDependent(bool dependent);
00112
00114 bool hasRotamers(const String& name) const;
00115
00117 bool validate();
00118
00120 void sort();
00121
00125 void clear();
00127
00128 protected:
00129
00133
00134 HashMap<Index, HashMap<Index, HashMap<String, ResidueRotamerSet> > > bb_dep_sets_;
00135
00137 HashMap<String, ResidueRotamerSet> bb_indep_sets_;
00138
00140 Index getNearestBackboneTorsion_(double angle) const;
00141
00143 Size step_width_;
00144
00146 FragmentDB fragment_db_;
00147
00149 bool backbone_dependent_;
00151 };
00152
00153 }
00154
00155 #endif // BALL_STRUCTURE_ROTAMERLIBRARY_H