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

PeakTypeEstimator.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_FORMAT_PEAKTYPEESTIMATOR_H
00028 #define OPENMS_FORMAT_PEAKTYPEESTIMATOR_H
00029 
00030 #include <OpenMS/METADATA/SpectrumSettings.h>
00031 
00032 #include <cmath>
00033 #include <limits>
00034 
00035 namespace OpenMS
00036 {
00042   class PeakTypeEstimator
00043   {
00044     public:
00050       template <typename PeakConstIterator>
00051       SpectrumSettings::SpectrumType estimateType(const PeakConstIterator& begin, const PeakConstIterator& end) const
00052       {
00053         //abort if there are less than 5 peak in the iterator range
00054         if (end - begin < 5)
00055         {
00056           return SpectrumSettings::UNKNOWN;
00057         }
00058         
00059         DoubleReal min = std::numeric_limits<DoubleReal>::max();
00060         DoubleReal max = std::numeric_limits<DoubleReal>::min();
00061         DoubleReal left = std::numeric_limits<DoubleReal>::min();
00062         DoubleReal right = std::numeric_limits<DoubleReal>::min();
00063         
00064         PeakConstIterator it = begin;
00065         PeakConstIterator it2 = begin;
00066         ++it2;
00067         for (; it2!=end; ++it,++it2)
00068         {
00069           min = std::min(min,it2->getMZ()-it->getMZ());
00070           if (max < it2->getMZ()-it->getMZ())
00071           {
00072             left = it->getIntensity();
00073             right = it2->getIntensity();
00074             max = it2->getMZ()-it->getMZ();
00075           }
00076         }
00077   
00078         //std::cout << "Min  : " << min << std::endl;
00079         //std::cout << "Max  : " << max << std::endl;
00080         //std::cout << "Left : " << left << std::endl;
00081         //std::cout << "Right: " << right << std::endl;
00082         
00083         //raw data with zeros
00084         if ((max-min)<0.5)
00085         {
00086           return SpectrumSettings::RAWDATA;
00087         }
00088         //raw data without zeros
00089         else if (left < 2.0 && right < 2.0)
00090         {
00091           return SpectrumSettings::RAWDATA;
00092         }
00093         
00094         return SpectrumSettings::PEAKS;
00095       }
00096       
00097   };
00098 
00099 } // namespace OpenMS
00100 
00101 #endif // OPENMS_FORMAT_PEAKTYPEESTIMATOR_H

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