Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages

PairMatcher.h (Maintainer: Marc Sturm)

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // --------------------------------------------------------------------------
00005 //                   OpenMS Mass Spectrometry Framework
00006 // --------------------------------------------------------------------------
00007 //  Copyright (C) 2003-2008 -- Oliver Kohlbacher, Knut Reinert
00008 //
00009 //  This library is free software; you can redistribute it and/or
00010 //  modify it under the terms of the GNU Lesser General Public
00011 //  License as published by the Free Software Foundation; either
00012 //  version 2.1 of the License, or (at your option) any later version.
00013 //
00014 //  This library is distributed in the hope that it will be useful,
00015 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 //  Lesser General Public License for more details.
00018 //
00019 //  You should have received a copy of the GNU Lesser General Public
00020 //  License along with this library; if not, write to the Free Software
00021 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 // --------------------------------------------------------------------------
00024 // $Maintainer: Marc Sturm $
00025 // --------------------------------------------------------------------------
00026 
00027 #ifndef OPENMS_ANALYSIS_MAPMATCHING_PAIRMATCHER_H
00028 #define OPENMS_ANALYSIS_MAPMATCHING_PAIRMATCHER_H
00029 
00030 #include <OpenMS/ANALYSIS/MAPMATCHING/ElementPair.h>
00031 #include <OpenMS/KERNEL/FeatureMap.h>
00032 #include <OpenMS/CONCEPT/FactoryProduct.h>
00033 
00034 #include <cmath>
00035 
00036 namespace OpenMS
00037 {
00045   class PairMatcher
00046     : public FactoryProduct
00047   {
00048     public:
00049       
00053 
00054       typedef Feature FeatureType;
00055       typedef FeatureMap<> FeatureMapType;
00056       typedef ElementPair<> PairType;
00057       typedef std::vector< PairType > PairVectorType;
00059       
00061       PairMatcher(FeatureMapType& features);
00062   
00064       PairMatcher(const PairMatcher& source);
00065   
00067       virtual PairMatcher& operator = (const PairMatcher& source);
00068   
00070       virtual ~PairMatcher();
00071   
00076       const PairVectorType& run();
00077   
00082       const PairVectorType& getBestPairs();
00083   
00089       static void printInfo(std::ostream& out, const PairVectorType& pairs);
00090   
00091       static const String getProductName()
00092       {
00093         return "PairMatcher";
00094       }
00095 
00096     protected:
00098       static const double sqrt2_;
00099   
00101       FeatureMapType& features_;
00102   
00104       PairVectorType pairs_;
00105   
00107       PairVectorType best_pairs_;
00108   
00110       struct Comparator
00111       {
00112         bool operator()(const PairType& a, const PairType& b)
00113         {
00114           return a.getQuality() > b.getQuality();
00115         }
00116       };
00117   
00120       inline double PValue_(double x, double m, double sig1, double sig2)
00121       {
00122         if (m<x)
00123         {
00124           return 1-erf((x-m)/sig2/sqrt2_);
00125         }
00126         else
00127         {
00128           return 1-erf((m-x)/sig1/sqrt2_);
00129         }
00130       }
00131 
00132   }; // end of class PairMatcher
00133 
00134 } // end of namespace OpenMS
00135 
00136 #endif  // OPENMS_ANALYSIS_MAPMATCHER_PAIRMATCHER_H

Generated Tue Apr 1 15:36:36 2008 -- using doxygen 1.5.4 OpenMS / TOPP 1.1