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
00036 #ifndef OPENMS_DATASTRUCTURES_SUFFIXARRAYTRYPTICCOMPRESSED_H
00037 #define OPENMS_DATASTRUCTURES_SUFFIXARRAYTRYPTICCOMPRESSED_H
00038
00039 #include <OpenMS/CONCEPT/Exception.h>
00040 #include <OpenMS/DATASTRUCTURES/SuffixArray.h>
00041 #include <OpenMS/CHEMISTRY/WeightWrapper.h>
00042
00043 namespace OpenMS
00044 {
00045 class String;
00046
00054 class OPENMS_DLLAPI SuffixArrayTrypticCompressed :
00055 public SuffixArray
00056 , public WeightWrapper
00057 {
00058
00059 public:
00060
00071 SuffixArrayTrypticCompressed(const String & st, const String & filename, const WeightWrapper::WEIGHTMODE weight_mode = WeightWrapper::MONO);
00072
00076 SuffixArrayTrypticCompressed(const SuffixArrayTrypticCompressed & sa);
00077
00081 virtual ~SuffixArrayTrypticCompressed();
00082
00086 String toString();
00087
00097 void findSpec(std::vector<std::vector<std::pair<std::pair<SignedSize, SignedSize>, DoubleReal> > > & candidates, const std::vector<DoubleReal> & spec);
00098
00105 bool save(const String & file_name);
00112 bool open(const String & file_name);
00113
00119 void setTolerance(DoubleReal t);
00120
00125 DoubleReal getTolerance() const;
00126
00133 bool isDigestingEnd(const char aa1, const char aa2) const;
00134
00140 void setTags(const std::vector<String> & tags);
00141
00146 const std::vector<String> & getTags();
00147
00152 void setUseTags(bool use_tags);
00153
00158 bool getUseTags();
00159
00164 void setNumberOfModifications(Size number_of_mods);
00165
00170 Size getNumberOfModifications();
00171
00175 void printStatistic();
00176
00177 protected:
00178
00182 SuffixArrayTrypticCompressed();
00183
00189 SignedSize getNextSep_(const SignedSize p) const;
00190
00197 SignedSize getLCP_(const std::pair<SignedSize, SignedSize> & last_point, const std::pair<SignedSize, SignedSize> & current_point);
00198
00206 SignedSize findFirst_(const std::vector<DoubleReal> & spec, DoubleReal & m);
00207
00217 SignedSize findFirst_(const std::vector<DoubleReal> & spec, DoubleReal & m, SignedSize start, SignedSize end);
00218
00231 void parseTree_(SignedSize start_index, SignedSize stop_index, SignedSize depth, SignedSize walked_in, SignedSize edge_len, std::vector<std::pair<SignedSize, SignedSize> > & out_number, std::vector<std::pair<SignedSize, SignedSize> > & edge_length, std::vector<SignedSize> & leafe_depth);
00232
00239 bool hasMoreOutgoings_(SignedSize start_index, SignedSize stop_index, SignedSize walked_in);
00240
00241 const String & s_;
00242
00243 DoubleReal tol_;
00244
00245 std::vector<std::pair<SignedSize, SignedSize> > indices_;
00246
00247 std::vector<SignedSize> lcp_;
00248
00249 std::vector<SignedSize> skip_;
00250
00251
00252
00253 DoubleReal masse_[256];
00254
00255 Size number_of_modifications_;
00256
00257 std::vector<String> tags_;
00258
00259 bool use_tags_;
00260
00261 SignedSize progress_;
00262 };
00263 }
00264
00265 #endif //OPENMS_DATASTRUCTURES_SUFFIXARRAYTRYPTICCOMPRESSED_H