ProteoWizard
ParameterEstimator.hpp
Go to the documentation of this file.
1//
2// $Id$
3//
4//
5// Original author: Darren Kessner <darren@proteowizard.org>
6//
7// Copyright 2006 Louis Warschaw Prostate Cancer Center
8// Cedars Sinai Medical Center, Los Angeles, California 90048
9//
10// Licensed under the Apache License, Version 2.0 (the "License");
11// you may not use this file except in compliance with the License.
12// You may obtain a copy of the License at
13//
14// http://www.apache.org/licenses/LICENSE-2.0
15//
16// Unless required by applicable law or agreed to in writing, software
17// distributed under the License is distributed on an "AS IS" BASIS,
18// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19// See the License for the specific language governing permissions and
20// limitations under the License.
21//
22
23
24#ifndef _PARAMETERESTIMATOR_HPP_
25#define _PARAMETERESTIMATOR_HPP_
26
27
30#include <memory>
31#include <vector>
32#include <iosfwd>
33
34
35namespace pwiz {
36namespace frequency {
37
38
40{
41 public:
42
45 typedef std::vector<Datum> Data;
46 typedef ublas::vector<double> Parameters;
47
48 // instantiation
49 static std::auto_ptr<ParameterEstimator> create(const Function& function,
50 const Data& data,
51 const Parameters& initialEstimate);
53
54 // get/set current parameter estimate
55 virtual const Parameters& estimate() const = 0;
56 virtual void estimate(const Parameters& p) = 0;
57
58 // return error, based on current parameter estimate
59 virtual double error() const = 0;
60
61 // update current parameters via Newton iteration, returns change in error,
62 // with optional output to log
63 virtual double iterate(std::ostream* log = 0) = 0;
64};
65
66
67} // namespace frequency
68} // namespace pwiz
69
70
71#endif // _PARAMETERESTIMATOR_HPP_
72
ParametrizedFunction< std::complex< double > > Function
data::SampleDatum< double, std::complex< double > > Datum
virtual double error() const =0
static std::auto_ptr< ParameterEstimator > create(const Function &function, const Data &data, const Parameters &initialEstimate)
virtual const Parameters & estimate() const =0
virtual double iterate(std::ostream *log=0)=0
virtual void estimate(const Parameters &p)=0