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

« back to all changes in this revision

Viewing changes to include/OpenMS/ANALYSIS/MAPMATCHING/TransformationDescription.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 $
33
40
 
34
41
namespace OpenMS
35
42
{
36
 
        /**
37
 
        @brief Generic description of a coordinate transformation.
38
 
                
39
 
        This description primarily stores data points (coordinate pairs) from which a @ref TransformationModel "transformation model" can be estimated. Applying the transformation to a coordinate (via @p apply) then means evaluating the model at that coordinate.
40
 
 
41
 
        The following models are available:
42
 
        - @p none (TransformationModel): \f$ f(x) = x \f$ (identity)
43
 
        - @p identity: Same as @p none, but intended for reference files (used to indicate that no other model should be fit, because the identity is already optimal).
44
 
        - @p linear (TransformationModelLinear): \f$ f(x) = slope * x + intercept \f$
45
 
        - @p interpolated (TransformationModelInterpolated): Interpolation between pairs, extrapolation using first and last pair. Supports different interpolation types.
46
 
        - @p b_spline (TransformationModelBSpline): Smoothing cubic B-spline.
47
 
 
48
 
        @remark TransformationDescription stores data points, TransformationModel stores parameters. That way, data can be modeled using different models/parameters, and models can still keep a representation of the data in the format they need (if at all).
49
 
                
50
 
        @ingroup MapAlignment
51
 
        */
52
 
        class OPENMS_DLLAPI TransformationDescription
53
 
        {
54
 
                // friend class MapAlignmentAlgorithm;
55
 
 
56
 
         public:
57
 
                        
58
 
                /// Coordinate pair
59
 
                typedef TransformationModel::DataPoint DataPoint;
60
 
                /// Vector of coordinate pairs
61
 
                typedef TransformationModel::DataPoints DataPoints;
62
 
                        
63
 
                /// Default constructor
64
 
                TransformationDescription();
65
 
                /// Constructor from data
66
 
                TransformationDescription(const DataPoints& data);
67
 
                /// Destructor
68
 
                ~TransformationDescription();
69
 
                                
70
 
                /// Copy constructor 
71
 
                TransformationDescription(const TransformationDescription& rhs);
72
 
                /// Assignment operator
73
 
                TransformationDescription& operator=(const TransformationDescription& rhs);
74
 
                                
75
 
                /// Fits a model to the data
76
 
                void fitModel(const String& model_type, const Param& params=Param());
77
 
 
78
 
                /**
79
 
                         @brief Applies the transformation to @p value.
80
 
 
81
 
                         Returns the result of evaluating the fitted model at @p value.
82
 
                         Returns @p value unchanged if no model was fitted.
83
 
                */
84
 
                DoubleReal apply(DoubleReal value) const;
85
 
 
86
 
                /// Gets the type of the fitted model
87
 
                const String& getModelType() const;
88
 
 
89
 
                /// Gets the possible types of models
90
 
                static void getModelTypes(StringList& result);
91
 
 
92
 
                /**
93
 
                         @brief Sets the data points
94
 
                         
95
 
                         Removes the model that was previously fitted to the data (if any).
96
 
                */
97
 
                void setDataPoints(const DataPoints& data);
98
 
 
99
 
                /// Returns the data points
100
 
                const DataPoints& getDataPoints() const;
101
 
 
102
 
                /// Non-mutable access to the model parameters
103
 
                void getModelParameters(Param& params) const;
104
 
                        
105
 
                /// Computes an (approximate) inverse of the transformation
106
 
                void invert();
107
 
 
108
 
        protected:
109
 
                /// Data points
110
 
                DataPoints data_;
111
 
                /// Type of model
112
 
                String model_type_;
113
 
                /// Pointer to model
114
 
                TransformationModel* model_;
115
 
        };
116
 
        
 
43
  /**
 
44
  @brief Generic description of a coordinate transformation.
 
45
 
 
46
  This description primarily stores data points (coordinate pairs) from which a @ref TransformationModel "transformation model" can be estimated. Applying the transformation to a coordinate (via @p apply) then means evaluating the model at that coordinate.
 
47
 
 
48
  The following models are available:
 
49
  - @p none (TransformationModel): \f$ f(x) = x \f$ (identity)
 
50
  - @p identity: Same as @p none, but intended for reference files (used to indicate that no other model should be fit, because the identity is already optimal).
 
51
  - @p linear (TransformationModelLinear): \f$ f(x) = slope * x + intercept \f$
 
52
  - @p interpolated (TransformationModelInterpolated): Interpolation between pairs, extrapolation using first and last pair. Supports different interpolation types.
 
53
  - @p b_spline (TransformationModelBSpline): Smoothing cubic B-spline.
 
54
 
 
55
  @remark TransformationDescription stores data points, TransformationModel stores parameters. That way, data can be modeled using different models/parameters, and models can still keep a representation of the data in the format they need (if at all).
 
56
 
 
57
  @ingroup MapAlignment
 
58
  */
 
59
  class OPENMS_DLLAPI TransformationDescription
 
60
  {
 
61
    // friend class MapAlignmentAlgorithm;
 
62
 
 
63
public:
 
64
 
 
65
    /// Coordinate pair
 
66
    typedef TransformationModel::DataPoint DataPoint;
 
67
    /// Vector of coordinate pairs
 
68
    typedef TransformationModel::DataPoints DataPoints;
 
69
 
 
70
    /// Default constructor
 
71
    TransformationDescription();
 
72
    /// Constructor from data
 
73
    TransformationDescription(const DataPoints & data);
 
74
    /// Destructor
 
75
    ~TransformationDescription();
 
76
 
 
77
    /// Copy constructor
 
78
    TransformationDescription(const TransformationDescription & rhs);
 
79
    /// Assignment operator
 
80
    TransformationDescription & operator=(const TransformationDescription & rhs);
 
81
 
 
82
    /// Fits a model to the data
 
83
    void fitModel(const String & model_type, const Param & params = Param());
 
84
 
 
85
    /**
 
86
         @brief Applies the transformation to @p value.
 
87
 
 
88
         Returns the result of evaluating the fitted model at @p value.
 
89
         Returns @p value unchanged if no model was fitted.
 
90
    */
 
91
    DoubleReal apply(DoubleReal value) const;
 
92
 
 
93
    /// Gets the type of the fitted model
 
94
    const String & getModelType() const;
 
95
 
 
96
    /// Gets the possible types of models
 
97
    static void getModelTypes(StringList & result);
 
98
 
 
99
    /**
 
100
         @brief Sets the data points
 
101
 
 
102
         Removes the model that was previously fitted to the data (if any).
 
103
    */
 
104
    void setDataPoints(const DataPoints & data);
 
105
 
 
106
    /// Returns the data points
 
107
    const DataPoints & getDataPoints() const;
 
108
 
 
109
    /// Non-mutable access to the model parameters
 
110
    void getModelParameters(Param & params) const;
 
111
 
 
112
    /// Computes an (approximate) inverse of the transformation
 
113
    void invert();
 
114
 
 
115
protected:
 
116
    /// Data points
 
117
    DataPoints data_;
 
118
    /// Type of model
 
119
    String model_type_;
 
120
    /// Pointer to model
 
121
    TransformationModel * model_;
 
122
  };
 
123
 
117
124
} // end of namespace OpenMS
118
125
 
119
126
#endif  // OPENMS_ANALYSIS_MAPMATCHING_TRANSFORMATIONDESCRIPTION_H
120