OpenMS
Loading...
Searching...
No Matches
LevMarqFitter1D.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Timo Sachsenberg $
6// $Authors: $
7// --------------------------------------------------------------------------
8
9#pragma once
10
13#include <algorithm>
14#include <vector>
15
16namespace OpenMS
17{
18
22 class OPENMS_DLLAPI LevMarqFitter1D : public Fitter1D
23 {
24 public:
25 typedef std::vector<double> ContainerType;
26
31 // TODO: This is copy and paste from TraceFitter.h. Make a generic wrapper for LM optimization
33 {
34 public:
35 int inputs() const
36 {
37 return m_inputs;
38 }
39 int values() const
40 {
41 return m_values;
42 }
43
44 GenericFunctor(int dimensions, int num_data_points) : m_inputs(dimensions), m_values(num_data_points)
45 {
46 }
47
49 {
50 }
51
53 virtual int operator()(const double* x, double* fvec) const = 0;
54
56 virtual int df(const double* x, double* J) const = 0;
57
58 protected:
59 const int m_inputs, m_values;
60 };
61
64 {
65 this->defaults_.setValue("max_iteration", 500, "Maximum number of iterations using by Levenberg-Marquardt algorithm.", {"advanced"});
66 }
67
69 LevMarqFitter1D(const LevMarqFitter1D& source) : Fitter1D(source), max_iteration_(source.max_iteration_)
70 {
71 }
72
75 {
76 }
77
80 {
81 if (&source == this)
82 return *this;
83
84 Fitter1D::operator=(source);
85 max_iteration_ = source.max_iteration_;
86
87 return *this;
88 }
89
90 protected:
95
101 void optimize_(std::vector<double>& x_init, GenericFunctor& functor) const;
102
103 void updateMembers_() override;
104 };
105} // namespace OpenMS
Abstract base class for all 1D-dimensional model fitter.
Definition Fitter1D.h:30
Definition LevMarqFitter1D.h:33
virtual ~GenericFunctor()
Definition LevMarqFitter1D.h:48
int values() const
Definition LevMarqFitter1D.h:39
GenericFunctor(int dimensions, int num_data_points)
Definition LevMarqFitter1D.h:44
virtual int df(const double *x, double *J) const =0
Compute Jacobian matrix. x has size inputs(), J is values() x inputs() (column-major)
virtual int operator()(const double *x, double *fvec) const =0
Compute residuals. x has size inputs(), fvec has size values()
const int m_inputs
Definition LevMarqFitter1D.h:59
int inputs() const
Definition LevMarqFitter1D.h:35
Abstract class for 1D-model fitter using Levenberg-Marquardt algorithm for parameter optimization.
Definition LevMarqFitter1D.h:23
LevMarqFitter1D()
Default constructor.
Definition LevMarqFitter1D.h:63
Int max_iteration_
Maximum number of iterations.
Definition LevMarqFitter1D.h:94
std::vector< double > ContainerType
Definition LevMarqFitter1D.h:25
void optimize_(std::vector< double > &x_init, GenericFunctor &functor) const
Optimize start parameter.
LevMarqFitter1D & operator=(const LevMarqFitter1D &source)
assignment operator
Definition LevMarqFitter1D.h:79
bool symmetric_
Parameter indicates symmetric peaks.
Definition LevMarqFitter1D.h:92
void updateMembers_() override
This method is used to update extra member variables at the end of the setParameters() method.
~LevMarqFitter1D() override
destructor
Definition LevMarqFitter1D.h:74
LevMarqFitter1D(const LevMarqFitter1D &source)
copy constructor
Definition LevMarqFitter1D.h:69
int Int
Signed integer type.
Definition Types.h:72
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19