IMP  2.3.0
The Integrative Modeling Platform
LinearFit.h
Go to the documentation of this file.
1 /**
2  * \file IMP/algebra/LinearFit.h
3  * \brief Linear fit of data points
4  *
5  * Copyright 2007-2014 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPALGEBRA_LINEAR_FIT_H
10 #define IMPALGEBRA_LINEAR_FIT_H
11 
12 #include "Vector2D.h"
13 #include "GeometricPrimitiveD.h"
14 #include <vector>
15 
16 IMPALGEBRA_BEGIN_NAMESPACE
17 
18 //! Calculate line that fits best the input data points (Linear least squares)
19 class IMPALGEBRAEXPORT LinearFit2D : public GeometricPrimitiveD<2> {
20  public:
21  //! Constructor
22  /**
23  \param[in] data vector of pairs (VectorD<2>) with x and their
24  corresponding y values (linear least squares)
25  \param[in] error_bars vector of pairs (VectorD<3>) with x,
26  corresponding y values and y errors (weighted linear least squares)
27  */
28  LinearFit2D(const Vector2Ds& data, const Floats& error_bars = Floats());
29 
30  //! fit error
31  double get_fit_error() const { return error_; }
32 
33  //! get a value (a*x)
34  double get_a() const { return a_; }
35 
36  //! get b value (constant)
37  double get_b() const { return b_; }
38 
39  //! show equation
41  out << "y = " << a_ << "x + " << b_ << std::endl;
42  out << "Error = " << error_ << std::endl;
43  });
44 
45  private:
46  void find_regression(const Vector2Ds& data, const Floats& errors);
47  void evaluate_error(const Vector2Ds& data, const Floats& errors);
48  double a_, b_;
49  double error_;
50 };
51 
53 
54 #ifndef IMP_DOXYGEN
55 // backwards compat
56 typedef LinearFit2D LinearFit;
57 #endif
58 
59 IMPALGEBRA_END_NAMESPACE
60 
61 #endif /* IMPALGEBRA_LINEAR_FIT_H */
Basic types used by IMP.
#define IMP_SHOWABLE_INLINE(Name, how_to_show)
Declare the methods needed by an object that can be printed.
Simple 2D vector class.
base::Vector< VectorD< 2 > > Vector2Ds
Definition: VectorD.h:393
double get_b() const
get b value (constant)
Definition: LinearFit.h:37
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
Definition: value_macros.h:23
Base class for geometric types.
double get_a() const
get a value (a*x)
Definition: LinearFit.h:34
Calculate line that fits best the input data points (Linear least squares)
Definition: LinearFit.h:19
double get_fit_error() const
fit error
Definition: LinearFit.h:31
IMP::base::Vector< Float > Floats
Standard way to pass a bunch of Float values.
Definition: types.h:47