Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef OPENMS_CHEMISTRY_RESIDUEDB_H
00036 #define OPENMS_CHEMISTRY_RESIDUEDB_H
00037
00038 #include <OpenMS/DATASTRUCTURES/Map.h>
00039 #include <OpenMS/DATASTRUCTURES/String.h>
00040
00041 #include <set>
00042
00043 namespace OpenMS
00044 {
00045
00046 class ResidueModification;
00047 class Residue;
00048
00060 class OPENMS_DLLAPI ResidueDB
00061 {
00062 public:
00063
00067 typedef std::set<Residue *>::iterator ResidueIterator;
00068 typedef std::set<const Residue *>::const_iterator ResidueConstIterator;
00070
00072 inline static ResidueDB * getInstance()
00073 {
00074 static ResidueDB * db_ = 0;
00075 if (db_ == 0)
00076 {
00077 db_ = new ResidueDB;
00078 }
00079 return db_;
00080 }
00081
00085
00086 virtual ~ResidueDB();
00088
00092
00093 Size getNumberOfResidues() const;
00094
00095 Size getNumberOfModifiedResidues() const;
00096
00098 const Residue * getResidue(const String & name) const;
00099
00101 const Residue * getModifiedResidue(const String & name);
00102
00104 const Residue * getModifiedResidue(const Residue * residue, const String & name);
00105
00122 const std::set<const Residue *> getResidues(const String & residue_set = "All") const;
00123
00125 const std::set<String> & getResidueSets() const;
00126
00128 void setResidues(const String & filename);
00129
00131 void addResidue(const Residue & residue);
00133
00137
00138 bool hasResidue(const String & name) const;
00139
00141 bool hasResidue(const Residue * residue) const;
00143
00147 inline ResidueIterator beginResidue() { return residues_.begin(); }
00148
00149 inline ResidueIterator endResidue() { return residues_.end(); }
00150
00151 inline ResidueConstIterator beginResidue() const { return const_residues_.begin(); }
00152
00153 inline ResidueConstIterator endResidue() const { return const_residues_.end(); }
00155
00156 protected:
00157
00161
00162 ResidueDB();
00163
00165 ResidueDB(const ResidueDB & residue_db);
00167
00171
00172 ResidueDB & operator=(const ResidueDB & aa);
00174
00176 void readResiduesFromFile_(const String & filename);
00177
00179 Residue * parseResidue_(Map<String, String> & values);
00180
00182 void clear_();
00183
00185 void clearResidues_();
00186
00188 void buildResidueNames_();
00189
00190 void addResidue_(Residue * residue);
00191
00192 Map<String, Residue *> residue_names_;
00193
00194 Map<String, Map<String, Residue *> > residue_mod_names_;
00195
00196 std::set<Residue *> residues_;
00197
00198 std::set<const Residue *> const_residues_;
00199
00200 std::set<Residue *> modified_residues_;
00201
00202 std::set<const Residue *> const_modified_residues_;
00203
00204 Map<String, std::set<const Residue *> > residues_by_set_;
00205
00206 std::set<String> residue_sets_;
00207 };
00208 }
00209 #endif