~ubuntu-branches/ubuntu/wily/openms/wily

« back to all changes in this revision

Viewing changes to include/OpenMS/TRANSFORMATIONS/FEATUREFINDER/IsotopeModel.h

  • Committer: Package Import Robot
  • Author(s): Filippo Rusconi
  • Date: 2013-12-20 11:30:16 UTC
  • mfrom: (5.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20131220113016-wre5g9bteeheq6he
Tags: 1.11.1-3
* remove version number from libbost development package names;
* ensure that AUTHORS is correctly shipped in all packages.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// -*- mode: C++; tab-width: 2; -*-
2
 
// vi: set ts=2:
3
 
//
4
 
// --------------------------------------------------------------------------
5
 
//                   OpenMS Mass Spectrometry Framework
6
 
// --------------------------------------------------------------------------
7
 
//  Copyright (C) 2003-2011 -- Oliver Kohlbacher, Knut Reinert
8
 
//
9
 
//  This library is free software; you can redistribute it and/or
10
 
//  modify it under the terms of the GNU Lesser General Public
11
 
//  License as published by the Free Software Foundation; either
12
 
//  version 2.1 of the License, or (at your option) any later version.
13
 
//
14
 
//  This library is distributed in the hope that it will be useful,
15
 
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
 
//  Lesser General Public License for more details.
18
 
//
19
 
//  You should have received a copy of the GNU Lesser General Public
20
 
//  License along with this library; if not, write to the Free Software
21
 
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
1
// --------------------------------------------------------------------------
 
2
//                   OpenMS -- Open-Source Mass Spectrometry
 
3
// --------------------------------------------------------------------------
 
4
// Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
 
5
// ETH Zurich, and Freie Universitaet Berlin 2002-2013.
 
6
//
 
7
// This software is released under a three-clause BSD license:
 
8
//  * Redistributions of source code must retain the above copyright
 
9
//    notice, this list of conditions and the following disclaimer.
 
10
//  * Redistributions in binary form must reproduce the above copyright
 
11
//    notice, this list of conditions and the following disclaimer in the
 
12
//    documentation and/or other materials provided with the distribution.
 
13
//  * Neither the name of any author or any participating institution
 
14
//    may be used to endorse or promote products derived from this software
 
15
//    without specific prior written permission.
 
16
// For a full list of authors, refer to the file AUTHORS.
 
17
// --------------------------------------------------------------------------
 
18
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 
19
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
20
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
21
// ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
 
22
// INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 
23
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 
24
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 
25
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 
26
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 
27
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 
28
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
29
//
23
30
// --------------------------------------------------------------------------
24
31
// $Maintainer: Clemens Groepl $
36
43
{
37
44
  class EmpiricalFormula;
38
45
 
39
 
  /** 
40
 
                @brief Isotope distribution approximated using linear interpolation.
 
46
  /**
 
47
        @brief Isotope distribution approximated using linear interpolation.
41
48
 
42
49
    This models a smoothed (widened) distribution, i.e. can be used to sample actual raw peaks (depending on the points you query).
43
50
    If you only want the distribution (no widening), use either
47
54
 
48
55
    Peak widening is achieved by either a Gaussian or Lorentzian shape.
49
56
 
50
 
                @htmlinclude OpenMS_IsotopeModel.parameters
51
 
        */
52
 
        class OPENMS_DLLAPI IsotopeModel
53
 
  : public InterpolationModel
 
57
        @htmlinclude OpenMS_IsotopeModel.parameters
 
58
    */
 
59
  class OPENMS_DLLAPI IsotopeModel :
 
60
    public InterpolationModel
54
61
  {
55
62
 
56
 
                public:
57
 
                typedef InterpolationModel::CoordinateType CoordinateType;
58
 
                typedef InterpolationModel::CoordinateType IntensityType;
 
63
public:
 
64
    typedef InterpolationModel::CoordinateType CoordinateType;
 
65
    typedef InterpolationModel::CoordinateType IntensityType;
59
66
 
60
 
                enum Averagines{C=0,H,N,O,S,AVERAGINE_NUM};
 
67
    enum Averagines {C = 0, H, N, O, S, AVERAGINE_NUM};
61
68
 
62
69
    /// Default constructor
63
70
    IsotopeModel();
64
71
 
65
72
    ///  copy constructor
66
 
        IsotopeModel(const IsotopeModel& source);
 
73
    IsotopeModel(const IsotopeModel & source);
67
74
 
68
75
    /// destructor
69
76
    virtual ~IsotopeModel();
70
77
 
71
78
    /// assignment operator
72
 
    virtual IsotopeModel& operator = (const IsotopeModel& source);
73
 
 
74
 
                UInt getCharge();
75
 
 
76
 
                /// create new IsotopeModel object (needed by Factory)
77
 
                static BaseModel<1>* create()
 
79
    virtual IsotopeModel & operator=(const IsotopeModel & source);
 
80
 
 
81
    UInt getCharge();
 
82
 
 
83
    /// create new IsotopeModel object (needed by Factory)
 
84
    static BaseModel<1> * create()
78
85
    {
79
 
             return new IsotopeModel();
80
 
        }
 
86
      return new IsotopeModel();
 
87
    }
81
88
 
82
 
                /// name of the model (needed by Factory)
 
89
    /// name of the model (needed by Factory)
83
90
    static const String getProductName()
84
91
    {
85
 
             return "IsotopeModel";
86
 
        }
87
 
 
88
 
                /** @brief set the offset of the model
89
 
 
90
 
                        The whole model will be shifted to the new offset without being computing all over.
91
 
                        This leaves a discrepancy which is minor in small shifts (i.e. shifting by one or two
92
 
                        standard deviations) but can get significant otherwise. In that case use setParameters()
93
 
                        which enforces a recomputation of the model.
94
 
                */
95
 
                void setOffset(CoordinateType offset);
96
 
 
97
 
                CoordinateType getOffset();
 
92
      return "IsotopeModel";
 
93
    }
 
94
 
 
95
    /** @brief set the offset of the model
 
96
 
 
97
        The whole model will be shifted to the new offset without being computing all over.
 
98
        This leaves a discrepancy which is minor in small shifts (i.e. shifting by one or two
 
99
        standard deviations) but can get significant otherwise. In that case use setParameters()
 
100
        which enforces a recomputation of the model.
 
101
    */
 
102
    void setOffset(CoordinateType offset);
 
103
 
 
104
    CoordinateType getOffset();
98
105
 
99
106
    /// return the Averagine peptide formula (mass calculated from mean mass and charge -- use .setParameters() to set them)
100
107
    EmpiricalFormula getFormula();
101
108
 
102
 
                /// set sample/supporting points of interpolation
103
 
                void setSamples(const EmpiricalFormula& formula);
104
 
 
105
 
                /** @brief get the center of the Isotope model
106
 
 
107
 
                         This is a m/z-value not necessarily the monoisotopic mass.
108
 
                */
109
 
                CoordinateType getCenter() const;
 
109
    /// set sample/supporting points of interpolation
 
110
    void setSamples(const EmpiricalFormula & formula);
 
111
 
 
112
    /** @brief get the center of the Isotope model
 
113
 
 
114
         This is a m/z-value not necessarily the monoisotopic mass.
 
115
    */
 
116
    CoordinateType getCenter() const;
110
117
 
111
118
    /** @brief the Isotope distribution (without widening) from the last setSamples() call
112
119
 
113
120
      Useful to determine the number of isotopes that the model contains and their position
114
121
 
115
122
    */
116
 
    const IsotopeDistribution& getIsotopeDistribution() const;
117
 
 
118
 
 
119
 
                protected:
120
 
                        CoordinateType isotope_stdev_;
121
 
      CoordinateType isotope_lorentz_fwhm_;
122
 
 
123
 
                        UInt charge_;
124
 
                        CoordinateType mean_;
125
 
                        CoordinateType monoisotopic_mz_;
126
 
                        DoubleReal averagine_[AVERAGINE_NUM];
127
 
                        Int max_isotope_;
128
 
                        DoubleReal trim_right_cutoff_;
129
 
                        DoubleReal isotope_distance_;
130
 
      IsotopeDistribution isotope_distribution_;
131
 
 
132
 
                void updateMembers_();
 
123
    const IsotopeDistribution & getIsotopeDistribution() const;
 
124
 
 
125
 
 
126
protected:
 
127
    CoordinateType isotope_stdev_;
 
128
    CoordinateType isotope_lorentz_fwhm_;
 
129
 
 
130
    UInt charge_;
 
131
    CoordinateType mean_;
 
132
    CoordinateType monoisotopic_mz_;
 
133
    DoubleReal averagine_[AVERAGINE_NUM];
 
134
    Int max_isotope_;
 
135
    DoubleReal trim_right_cutoff_;
 
136
    DoubleReal isotope_distance_;
 
137
    IsotopeDistribution isotope_distribution_;
 
138
 
 
139
    void updateMembers_();
133
140
 
134
141
  };
135
142
}