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 #ifndef OPENMS_FILTERING_TRANSFORMERS_MARKERMOWER_H
00028 #define OPENMS_FILTERING_TRANSFORMERS_MARKERMOWER_H
00029
00030 #include <OpenMS/FILTERING/TRANSFORMERS/PreprocessingFunctor.h>
00031 #include <OpenMS/FILTERING/TRANSFORMERS/PeakMarker.h>
00032
00033 #include <vector>
00034 #include <map>
00035
00036 namespace OpenMS
00037 {
00043 class MarkerMower : public PreprocessingFunctor
00044 {
00045 public:
00046
00047
00048
00050 MarkerMower();
00051
00053 MarkerMower(const MarkerMower& source);
00054
00056 virtual ~MarkerMower();
00057
00058
00059
00060
00062 MarkerMower& operator = (const MarkerMower& source);
00063
00064
00065
00066
00068 static PreprocessingFunctor* create() { return new MarkerMower(); }
00069
00071 template <typename SpectrumType> void filterSpectrum(SpectrumType& spectrum)
00072 {
00073 typedef typename SpectrumType::Iterator Iterator;
00074
00075 std::map<double, int> marks;
00076 for (std::vector<PeakMarker*>::const_iterator cvit = markers_.begin(); cvit != markers_.end(); ++cvit)
00077 {
00078 std::map<double, bool> marked;
00079 (*cvit)->apply(marked, spectrum);
00080 for (std::map<double, bool>::const_iterator cmit = marked.begin(); cmit != marked.end(); ++cmit)
00081 {
00082 if (cmit->second)
00083 {
00084 marks[cmit->first]++;
00085 }
00086 }
00087 }
00088
00089 for (Iterator it = spectrum.begin(); it != spectrum.end(); )
00090 {
00091 if (marks[it->getMZ()] > 0)
00092 {
00093 ++it;
00094 }
00095 else
00096 {
00097 it = spectrum.getContainer().erase(it);
00098 }
00099 }
00100 }
00101
00102 void filterPeakSpectrum(PeakSpectrum& spectrum);
00103
00104 void filterPeakMap(PeakMap& exp);
00105
00106 static const String getProductName()
00107 {
00108 return "MarkerMower";
00109 }
00110
00112 void insertmarker(PeakMarker* peak_marker);
00113
00114
00115 private:
00116
00118 std::vector<PeakMarker*> markers_;
00119 };
00120 }
00121 #endif // OPENMS_COMPARISON_CLUSTERING_MARKERMOWER_H