SciDAVis
1.D4
|
#include <Fit.h>
Public Types | |
enum | Algorithm { ScaledLevenbergMarquardt, UnscaledLevenbergMarquardt, NelderMeadSimplex } |
enum | ErrorSource { UnknownErrors, AssociatedErrors, PoissonErrors, CustomErrors } |
typedef int(* | fit_function )(const gsl_vector *, void *, gsl_vector *) |
typedef int(* | fit_function_df )(const gsl_vector *, void *, gsl_matrix *) |
typedef int(* | fit_function_fdf )(const gsl_vector *, void *, gsl_vector *, gsl_matrix *) |
typedef double(* | fit_function_simplex )(const gsl_vector *, void *) |
Public Member Functions | |
double | chiSquare () |
Returns the sum of squares of the residuals from the best-fit line. | |
Matrix * | covarianceMatrix (const QString &matrixName) |
double * | errors () |
Returns a vector with the standard deviations of the results. | |
double | evaluate_d (const gsl_vector *x) |
int | evaluate_df (const gsl_vector *x, gsl_matrix *J) |
int | evaluate_f (const gsl_vector *x, gsl_vector *f) |
Fit (ApplicationWindow *parent, Graph *g=0, const char *name=0) | |
virtual void | fit () |
Actually does the fit. Should be reimplemented in derived classes. | |
QString | formula () |
void | generateFunction (bool yes, int points=100) |
Specifies weather the result of the fit is a function curve. | |
virtual void | guessInitialValues () |
virtual QString | legendInfo () |
Output string added to the plot as a new legend. | |
int | numParameters () |
Table * | parametersTable (const QString &tableName) |
double * | results () |
Returns a vector with the fit results. | |
double | rSquare () |
Returns the coefficient of determination, R^2. | |
void | scaleErrors (bool yes=true) |
Specifies wheather the errors must be scaled with sqrt(chi_2/dof) | |
void | setAlgorithm (Algorithm s) |
void | setDataCurve (int curve, double start, double end) |
void | setInitialGuess (int parIndex, double val) |
void | setInitialGuesses (double *x_init) |
bool | setYErrorSource (ErrorSource err, const QString &colName=QString::null, bool fail_silently=false) |
Sets the data set to be used as source of Y errors. | |
~Fit () | |
Public Member Functions inherited from Filter | |
int | dataSize () |
Returns the size of the fitted data set. | |
bool | error () |
Filter (ApplicationWindow *parent, Table *t=0, const char *name=0) | |
Filter (ApplicationWindow *parent, Graph *g=0, const char *name=0) | |
virtual bool | run () |
Actually does the job. Should be reimplemented in derived classes. | |
void | setColor (int colorId) |
Sets the color of the output fit curve. | |
void | setColor (const QString &colorName) |
Sets the color of the output fit curve. Provided for convenience. To be used in scripts only! | |
bool | setDataFromCurve (const QString &curveTitle, Graph *g=0) |
bool | setDataFromCurve (const QString &curveTitle, double from, double to, Graph *g=0) |
void | setInterval (double from, double to) |
Changes the data range if the source curve was already assigned. Provided for convenience. | |
void | setMaximumIterations (int iter) |
Sets the maximum number of iterations to be performed during an iterative session. | |
void | setOutputPoints (int points) |
Sets the number of points in the output curve. | |
void | setOutputPrecision (int digits) |
Sets the precision used for the output. | |
void | setTolerance (double eps) |
Sets the tolerance used by the GSL routines. | |
virtual void | showLegend () |
Adds a new legend to the plot. Calls virtual legendInfo() | |
~Filter () | |
Public Member Functions inherited from scripted | |
scripted (ScriptingEnv *env) | |
void | scriptingChangeEvent (ScriptingChangeEvent *) |
~scripted () |
Static Public Member Functions | |
static double | evaluate_df_helper (double x, void *param) |
Protected Slots | |
void | scriptError (const QString &message, const QString &script_name, int line_number) |
Protected Member Functions | |
virtual void | calculateFitCurveData (double *par, double *X, double *Y) |
Calculates the data for the output fit curve and store itin the X an Y vectors. | |
virtual void | generateFitCurve (double *par) |
Adds the result curve to the plot. | |
void | insertFitFunctionCurve (const QString &name, double *x, double *y, int penWidth=1) |
Adds the result curve as a FunctionCurve to the plot, if d_gen_function = true. | |
virtual QString | logFitInfo (double *par, int iterations, int status, const QString &plotName) |
Output string added to the result log. | |
Protected Member Functions inherited from Filter | |
QwtPlotCurve * | addResultCurve (double *x, double *y) |
Adds the result curve to the target output plot window. Creates a hidden table and frees the input data from memory. | |
virtual void | calculateOutputData (double *X, double *Y) |
Calculates the data for the output curve and store it in the X an Y vectors. | |
int | curveIndex (const QString &curveTitle, Graph *g) |
Performs checks and returns the index of the source data curve if OK, -1 otherwise. | |
virtual bool | isDataAcceptable () |
virtual QString | logInfo () |
Output string added to the log pannel of the application. | |
virtual void | output () |
Performs the data analysis and takes care of the output. |
Protected Attributes | |
double | chi_2 |
The sum of squares of the residuals from the best-fit line. | |
gsl_matrix * | covar |
Covariance matrix. | |
fit_function_df | d_df |
fit_function | d_f |
fit_function_fdf | d_fdf |
QString | d_formula |
The fit formula. | |
fit_function_simplex | d_fsimplex |
bool | d_gen_function |
Specifies weather the result curve is a FunctionCurve or a normal curve with the same x values as the fit data. | |
int | d_p |
Number of fit parameters. | |
QStringList | d_param_explain |
Stores a list of short explanations for the significance of the fit parameters. | |
gsl_vector * | d_param_init |
Initial guesses for the fit parameters. | |
QStringList | d_param_names |
Names of the fit parameters. | |
double * | d_result_errors |
Stores standard deviations of the result parameters. | |
double * | d_results |
Stores the result parameters. | |
bool | d_scale_errors |
Specifies wheather the errors must be scaled with sqrt(chi_2/dof) | |
Script * | d_script |
Script used to evaluate user-defined functions. | |
Algorithm | d_solver |
Algorithm type. | |
QString | d_y_error_dataset |
The name of the dataset containing Y standard errors (if applicable). | |
ErrorSource | d_y_error_source |
Where standard errors of the input data are taken from. | |
double * | d_y_errors |
Standard deviations of Y input data. | |
bool | is_non_linear |
Tells whether the fitter uses non-linear/simplex fitting with an initial parameters set, that must be freed in the destructor. | |
Protected Attributes inherited from Filter | |
QwtPlotCurve * | d_curve |
The curve to be analysed. | |
int | d_curveColorIndex |
Color index of the result curve. | |
QString | d_explanation |
String explaining the operation in the comment of the result table and in the project explorer. | |
double | d_from |
Data interval. | |
Graph * | d_graph |
The graph where the result curve should be displayed. | |
bool | d_init_err |
Error flag telling if something went wrong during the initialization phase. | |
int | d_max_iterations |
Maximum number of iterations per fit. | |
int | d_min_points |
Minimum number of data points necessary to perform the operation. | |
int | d_n |
Size of the data arrays. | |
int | d_points |
Number of result points to de calculated and displayed in the output curve. | |
int | d_prec |
Precision (number of significant digits) used for the results output. | |
bool | d_sort_data |
Specifies if the filter needs sorted data as input. | |
Table * | d_table |
A table source of data. | |
double | d_to |
double | d_tolerance |
GSL Tolerance, if ever needed... | |
double * | d_x |
x data set to be analysed | |
double * | d_y |
y data set to be analysed | |
Protected Attributes inherited from scripted | |
ScriptingEnv * | scriptEnv |
Private Member Functions | |
double * | fitGslMultifit (int &iterations, int &status) |
Execute the fit using GSL non-linear least-squares fitting (Levenberg-Marquardt). | |
double * | fitGslMultimin (int &iterations, int &status) |
Execute the fit using GSL multidimensional minimization (Nelder-Mead Simplex). | |
virtual void | storeCustomFitResults (double *par) |
Customs and stores the fit results according to the derived class specifications. Used by exponential fits. |
Fit base class.
typedef int(* Fit::fit_function)(const gsl_vector *, void *, gsl_vector *) |
typedef int(* Fit::fit_function_df)(const gsl_vector *, void *, gsl_matrix *) |
typedef int(* Fit::fit_function_fdf)(const gsl_vector *, void *, gsl_vector *, gsl_matrix *) |
typedef double(* Fit::fit_function_simplex)(const gsl_vector *, void *) |
enum Fit::Algorithm |
enum Fit::ErrorSource |
Fit::Fit | ( | ApplicationWindow * | parent, |
Graph * | g = 0 , |
||
const char * | name = 0 |
||
) |
References chi_2, Filter::d_curve, Filter::d_curveColorIndex, Filter::d_explanation, d_formula, d_gen_function, Filter::d_init_err, Filter::d_max_iterations, Filter::d_n, d_p, Filter::d_points, Filter::d_prec, d_result_errors, d_results, d_scale_errors, d_solver, Filter::d_sort_data, Filter::d_tolerance, d_y_error_dataset, d_y_error_source, ApplicationWindow::fit_output_precision, is_non_linear, ScaledLevenbergMarquardt, and UnknownErrors.
Fit::~Fit | ( | ) |
References covar, d_p, d_param_init, d_result_errors, d_results, and is_non_linear.
|
inlineprotectedvirtual |
Calculates the data for the output fit curve and store itin the X an Y vectors.
Reimplemented in GaussAmpFit, ThreeExpFit, LinearFit, TwoExpFit, PolynomialFit, PluginFit, ExponentialFit, NonLinearFit, and SigmoidalFit.
Referenced by generateFitCurve().
|
inline |
Returns the sum of squares of the residuals from the best-fit line.
References chi_2.
Matrix * Fit::covarianceMatrix | ( | const QString & | matrixName | ) |
References covar, d_p, Filter::d_prec, ApplicationWindow::newMatrix(), and Matrix::setText().
Referenced by FitDialog::showCovarianceMatrix().
double * Fit::errors | ( | ) |
Returns a vector with the standard deviations of the results.
References chi_2, covar, Filter::d_n, d_p, d_result_errors, and d_scale_errors.
double Fit::evaluate_d | ( | const gsl_vector * | x | ) |
References Filter::d_n, d_p, d_param_names, d_script, Filter::d_x, Filter::d_y, d_y_errors, Script::eval(), and Script::setDouble().
Referenced by user_d().
int Fit::evaluate_df | ( | const gsl_vector * | x, |
gsl_matrix * | J | ||
) |
References Filter::d_n, d_p, d_param_names, d_script, Filter::d_x, d_y_errors, evaluate_df_helper(), DiffData::param, DiffData::script, Script::setDouble(), and DiffData::success.
Referenced by user_df().
|
static |
References Filter::error(), Script::eval(), DiffData::param, DiffData::script, Script::setDouble(), and DiffData::success.
Referenced by evaluate_df().
int Fit::evaluate_f | ( | const gsl_vector * | x, |
gsl_vector * | f | ||
) |
References Filter::d_n, d_p, d_param_names, d_script, Filter::d_x, Filter::d_y, d_y_errors, Script::eval(), and Script::setDouble().
Referenced by user_f().
|
virtual |
Actually does the fit. Should be reimplemented in derived classes.
Reimplemented in LinearFit, and PolynomialFit.
References d_formula, Filter::d_graph, Filter::d_init_err, Filter::d_n, d_p, d_results, d_script, d_solver, Filter::error(), fitGslMultifit(), fitGslMultimin(), generateFitCurve(), logFitInfo(), NelderMeadSimplex, ScriptingEnv::newScript(), Graph::parentPlotName(), scripted::scriptEnv, scriptError(), storeCustomFitResults(), ApplicationWindow::updateLog(), and ApplicationWindow::writeFitResultsToLog.
Referenced by FitDialog::accept(), ApplicationWindow::analyzeCurve(), MultiPeakFitTool::finalize(), and ExpDecayDialog::fit().
|
private |
Execute the fit using GSL non-linear least-squares fitting (Levenberg-Marquardt).
References chi_2, covar, d_df, d_f, d_fdf, Filter::d_max_iterations, Filter::d_n, d_p, d_param_init, d_solver, Filter::d_tolerance, Filter::d_x, Filter::d_y, d_y_error_source, d_y_errors, ScaledLevenbergMarquardt, UnknownErrors, and UnscaledLevenbergMarquardt.
Referenced by fit().
|
private |
Execute the fit using GSL multidimensional minimization (Nelder-Mead Simplex).
References chi_2, covar, d_df, d_fsimplex, Filter::d_max_iterations, Filter::d_n, d_p, d_param_init, Filter::d_tolerance, Filter::d_x, Filter::d_y, d_y_error_source, d_y_errors, and UnknownErrors.
Referenced by fit().
|
inline |
|
protectedvirtual |
Adds the result curve to the plot.
Reimplemented in MultiPeakFit.
References Graph::addFitCurve(), Filter::addResultCurve(), calculateFitCurveData(), d_gen_function, Filter::d_graph, Filter::d_n, Filter::d_points, insertFitFunctionCurve(), and Graph::replot().
Referenced by PolynomialFit::fit(), fit(), and LinearFit::fit().
void Fit::generateFunction | ( | bool | yes, |
int | points = 100 |
||
) |
Specifies weather the result of the fit is a function curve.
References d_gen_function, and Filter::d_points.
Referenced by FitDialog::accept(), ApplicationWindow::analyzeCurve(), PolynomFitDialog::fit(), ExpDecayDialog::fit(), and MultiPeakFitTool::MultiPeakFitTool().
|
inlinevirtual |
Reimplemented in MultiPeakFit, and SigmoidalFit.
Referenced by ApplicationWindow::analyzeCurve().
|
protected |
Adds the result curve as a FunctionCurve to the plot, if d_gen_function = true.
References Graph::addFitCurve(), ColorBox::color(), Filter::d_curveColorIndex, d_formula, Filter::d_graph, Filter::d_n, d_p, d_param_names, Filter::d_points, Filter::d_prec, d_results, Filter::d_x, formula(), Graph::generateFunctionName(), Graph::insertPlotItem(), Graph::Line, FunctionCurve::Normal, FunctionCurve::setFormula(), and FunctionCurve::setRange().
Referenced by MultiPeakFit::generateFitCurve(), and generateFitCurve().
|
virtual |
Output string added to the plot as a new legend.
Reimplemented from Filter.
Reimplemented in PolynomialFit.
References chi_2, covar, Filter::d_curve, d_formula, Filter::d_n, d_p, d_param_names, Filter::d_prec, d_results, d_scale_errors, and rSquare().
|
protectedvirtual |
Output string added to the result log.
Reimplemented in MultiPeakFit.
References AssociatedErrors, chi_2, covar, CustomErrors, Filter::d_curve, Filter::d_explanation, d_formula, Filter::d_n, d_p, d_param_explain, d_param_names, Filter::d_prec, d_scale_errors, d_solver, Filter::d_tolerance, Filter::d_x, d_y_error_dataset, d_y_error_source, is_non_linear, NelderMeadSimplex, PoissonErrors, rSquare(), UnknownErrors, and UnscaledLevenbergMarquardt.
Referenced by PolynomialFit::fit(), fit(), and LinearFit::fit().
|
inline |
References d_p.
Table * Fit::parametersTable | ( | const QString & | tableName | ) |
References Table::column(), covar, d_p, d_param_names, d_results, ApplicationWindow::newTable(), SciDAVis::Numeric, Column::setColumnMode(), Table::setHeader(), Column::setPlotDesignation(), Column::setTextAt(), Column::setValueAt(), SciDAVis::Text, and SciDAVis::yErr.
Referenced by FitDialog::showParametersTable().
|
inline |
Returns a vector with the fit results.
References d_results.
Referenced by FitDialog::accept(), and ExpDecayDialog::fit().
double Fit::rSquare | ( | ) |
Returns the coefficient of determination, R^2.
References chi_2, Filter::d_n, Filter::d_y, d_y_error_source, d_y_errors, and UnknownErrors.
Referenced by legendInfo(), and logFitInfo().
|
inline |
Specifies wheather the errors must be scaled with sqrt(chi_2/dof)
References d_scale_errors.
Referenced by FitDialog::accept(), ApplicationWindow::analyzeCurve(), PolynomFitDialog::fit(), and ExpDecayDialog::fit().
|
protectedslot |
Referenced by fit().
|
inline |
References d_solver.
Referenced by FitDialog::accept().
|
virtual |
Reimplemented from Filter.
References AssociatedErrors, Filter::d_n, d_y_errors, setYErrorSource(), and UnknownErrors.
|
inline |
References d_param_init.
Referenced by MultiPeakFitTool::selectPeak().
void Fit::setInitialGuesses | ( | double * | x_init | ) |
References d_p, and d_param_init.
Referenced by FitDialog::accept(), ExpDecayDialog::fit(), and FitDialog::fitBuiltInFunction().
bool Fit::setYErrorSource | ( | ErrorSource | err, |
const QString & | colName = QString::null , |
||
bool | fail_silently = false |
||
) |
Sets the data set to be used as source of Y errors.
References AssociatedErrors, Table::cell(), Table::colIndex(), CustomErrors, Filter::d_curve, Filter::d_n, Filter::d_y, d_y_error_dataset, d_y_error_source, d_y_errors, Filter::error(), DataCurve::errorBarsList(), QwtErrorPlotCurve::errorValue(), Graph::Function, Table::numRows(), PoissonErrors, UnknownErrors, and QwtErrorPlotCurve::xErrors().
Referenced by FitDialog::accept(), and setDataCurve().
|
privatevirtual |
Customs and stores the fit results according to the derived class specifications. Used by exponential fits.
Reimplemented in ThreeExpFit, TwoExpFit, MultiPeakFit, and ExponentialFit.
References d_p, and d_results.
Referenced by fit().
|
protected |
The sum of squares of the residuals from the best-fit line.
Referenced by chiSquare(), errors(), PolynomialFit::fit(), Fit(), LinearFit::fit(), fitGslMultifit(), fitGslMultimin(), legendInfo(), logFitInfo(), and rSquare().
|
protected |
Covariance matrix.
Referenced by covarianceMatrix(), errors(), PolynomialFit::fit(), LinearFit::fit(), fitGslMultifit(), fitGslMultimin(), SigmoidalFit::init(), ExponentialFit::init(), PolynomialFit::init(), TwoExpFit::init(), LinearFit::init(), ThreeExpFit::init(), GaussAmpFit::init(), legendInfo(), PluginFit::load(), logFitInfo(), MultiPeakFit::MultiPeakFit(), parametersTable(), MultiPeakFit::setNumPeaks(), NonLinearFit::setParametersList(), and ~Fit().
|
protected |
|
protected |
|
protected |
|
protected |
The fit formula.
Referenced by Fit(), fit(), formula(), ExponentialFit::init(), SigmoidalFit::init(), NonLinearFit::init(), PolynomialFit::init(), TwoExpFit::init(), LinearFit::init(), ThreeExpFit::init(), GaussAmpFit::init(), insertFitFunctionCurve(), legendInfo(), PluginFit::load(), logFitInfo(), NonLinearFit::setFormula(), and MultiPeakFit::setNumPeaks().
|
protected |
|
protected |
Specifies weather the result curve is a FunctionCurve or a normal curve with the same x values as the fit data.
Referenced by SigmoidalFit::calculateFitCurveData(), NonLinearFit::calculateFitCurveData(), ExponentialFit::calculateFitCurveData(), PluginFit::calculateFitCurveData(), PolynomialFit::calculateFitCurveData(), TwoExpFit::calculateFitCurveData(), LinearFit::calculateFitCurveData(), ThreeExpFit::calculateFitCurveData(), GaussAmpFit::calculateFitCurveData(), Fit(), MultiPeakFit::generateFitCurve(), generateFitCurve(), and generateFunction().
|
protected |
Number of fit parameters.
Referenced by NonLinearFit::calculateFitCurveData(), PolynomialFit::calculateFitCurveData(), covarianceMatrix(), errors(), evaluate_d(), evaluate_df(), evaluate_f(), PolynomialFit::fit(), Fit(), fit(), LinearFit::fit(), fitGslMultifit(), fitGslMultimin(), MultiPeakFit::generateFitCurve(), SigmoidalFit::init(), ExponentialFit::init(), PolynomialFit::init(), TwoExpFit::init(), LinearFit::init(), ThreeExpFit::init(), GaussAmpFit::init(), insertFitFunctionCurve(), MultiPeakFit::insertPeakFunctionCurve(), PolynomialFit::legendInfo(), legendInfo(), PluginFit::load(), logFitInfo(), numParameters(), parametersTable(), setInitialGuesses(), MultiPeakFit::setNumPeaks(), NonLinearFit::setParametersList(), ExponentialFit::storeCustomFitResults(), MultiPeakFit::storeCustomFitResults(), TwoExpFit::storeCustomFitResults(), ThreeExpFit::storeCustomFitResults(), storeCustomFitResults(), and ~Fit().
|
protected |
Stores a list of short explanations for the significance of the fit parameters.
Referenced by GaussFit::GaussFit(), ExponentialFit::init(), SigmoidalFit::init(), PolynomialFit::init(), TwoExpFit::init(), LinearFit::init(), ThreeExpFit::init(), LorentzFit::init(), GaussFit::init(), GaussAmpFit::init(), PluginFit::load(), logFitInfo(), MultiPeakFit::setNumPeaks(), and NonLinearFit::setParametersList().
|
protected |
Initial guesses for the fit parameters.
Referenced by fitGslMultifit(), fitGslMultimin(), SigmoidalFit::guessInitialValues(), MultiPeakFit::guessInitialValues(), ExponentialFit::init(), SigmoidalFit::init(), TwoExpFit::init(), ThreeExpFit::init(), GaussAmpFit::init(), PluginFit::load(), MultiPeakFit::MultiPeakFit(), setInitialGuess(), setInitialGuesses(), MultiPeakFit::setNumPeaks(), NonLinearFit::setParametersList(), and ~Fit().
|
protected |
Names of the fit parameters.
Referenced by NonLinearFit::calculateFitCurveData(), evaluate_d(), evaluate_df(), evaluate_f(), SigmoidalFit::init(), ExponentialFit::init(), PolynomialFit::init(), TwoExpFit::init(), LinearFit::init(), ThreeExpFit::init(), GaussAmpFit::init(), insertFitFunctionCurve(), MultiPeakFit::insertPeakFunctionCurve(), legendInfo(), PluginFit::load(), logFitInfo(), parametersTable(), MultiPeakFit::setNumPeaks(), and NonLinearFit::setParametersList().
|
protected |
|
protected |
Stores the result parameters.
Referenced by PolynomialFit::fit(), Fit(), fit(), LinearFit::fit(), ExponentialFit::init(), SigmoidalFit::init(), PolynomialFit::init(), TwoExpFit::init(), LinearFit::init(), ThreeExpFit::init(), GaussAmpFit::init(), insertFitFunctionCurve(), MultiPeakFit::insertPeakFunctionCurve(), PolynomialFit::legendInfo(), legendInfo(), PluginFit::load(), MultiPeakFit::MultiPeakFit(), parametersTable(), results(), MultiPeakFit::setNumPeaks(), NonLinearFit::setParametersList(), ExponentialFit::storeCustomFitResults(), MultiPeakFit::storeCustomFitResults(), TwoExpFit::storeCustomFitResults(), ThreeExpFit::storeCustomFitResults(), storeCustomFitResults(), and ~Fit().
|
protected |
Specifies wheather the errors must be scaled with sqrt(chi_2/dof)
Referenced by errors(), Fit(), legendInfo(), logFitInfo(), and scaleErrors().
|
protected |
Script used to evaluate user-defined functions.
Referenced by NonLinearFit::calculateFitCurveData(), evaluate_d(), evaluate_df(), evaluate_f(), and fit().
|
protected |
Algorithm type.
Referenced by Fit(), fit(), fitGslMultifit(), logFitInfo(), and setAlgorithm().
|
protected |
The name of the dataset containing Y standard errors (if applicable).
Referenced by Fit(), logFitInfo(), and setYErrorSource().
|
protected |
Where standard errors of the input data are taken from.
Referenced by PolynomialFit::fit(), Fit(), LinearFit::fit(), fitGslMultifit(), fitGslMultimin(), logFitInfo(), rSquare(), and setYErrorSource().
|
protected |
Standard deviations of Y input data.
Referenced by evaluate_d(), evaluate_df(), evaluate_f(), PolynomialFit::fit(), LinearFit::fit(), fitGslMultifit(), fitGslMultimin(), rSquare(), setDataCurve(), and setYErrorSource().
|
protected |
Tells whether the fitter uses non-linear/simplex fitting with an initial parameters set, that must be freed in the destructor.
Referenced by Fit(), PolynomialFit::init(), LinearFit::init(), logFitInfo(), and ~Fit().