def _get_fit(self, errors=None): '''convenience''' errors = errors or [dict(axis='y', err_val=1.0)] _fit = XYFit(xy_data=self._ref_xy_data, model_function=simple_xy_model, cost_function=XYCostFunction_Chi2( axes_to_use='xy', errors_to_use='covariance'), minimizer=self.MINIMIZER) for _err in errors: _fit.add_error(**_err) return _fit
def _get_fit(self, model_function=None, cost_function=None, error=None): '''convenience''' model_function = model_function or simple_xy_model # TODO: fix default cost_function = cost_function or XYCostFunction_Chi2( axes_to_use='xy', errors_to_use='covariance') error = error or 1.0 _fit = XYFit(xy_data=self._ref_xy_data, model_function=model_function, cost_function=cost_function, minimizer=self.MINIMIZER) _fit.add_error(axis='y', err_val=error) return _fit
def _get_fit(self, errors=None): '''convenience''' errors = errors or [dict(axis='y', err_val=1.0)] _fit = XYFit( xy_data=self._ref_xy_data, model_function=line_xy_model, cost_function=self._default_cost_function, minimizer=self.MINIMIZER, #x_error_algorithm='nonlinear', # TODO: test other algorithms ) for _err in errors: _fit.add_error(**_err) _fit.set_all_parameter_values(self._ref_initial_pars) return _fit
def _get_fit(self, errors=None): '''convenience''' _fit = XYFit(xy_data=self._ref_xy_data, model_function=simple_xy_model, cost_function=XYCostFunction_Chi2( axes_to_use='xy', errors_to_use='covariance'), minimizer=self.MINIMIZER) if errors is None: _fit.add_matrix_error(axis='y', err_matrix=np.eye(self._n_points), matrix_type='cov') else: for _err in errors: if 'err_matrix' in _err: _fit.add_matrix_error(**_err) else: _fit.add_error(**_err) return _fit
def _get_fit(self, model_function=None, cost_function=None, errors=None, dynamic_error_algorithm=None): '''convenience''' model_function = model_function or simple_xy_model # TODO: fix default cost_function = cost_function or XYCostFunction_Chi2( axes_to_use='xy', errors_to_use='covariance') errors = errors or [dict(axis='y', err_val=1.0)] dynamic_error_algorithm = dynamic_error_algorithm or "nonlinear" _fit = XYFit(xy_data=self._ref_xy_data, model_function=model_function, cost_function=cost_function, minimizer=self.MINIMIZER, dynamic_error_algorithm=dynamic_error_algorithm) for _err in errors: _fit.add_error(**_err) return _fit
def _get_fit(self, errors=None, constraints=None, dynamic_error_algorithm=None): '''convenience''' errors = errors or [dict(axis='y', err_val=1.0)] constraints = constraints or [] dynamic_error_algorithm = dynamic_error_algorithm or "nonlinear" _fit = XYFit(xy_data=self._ref_xy_data, model_function=line_xy_model, cost_function=self._default_cost_function, minimizer=self.MINIMIZER, dynamic_error_algorithm=dynamic_error_algorithm) for _err in errors: _fit.add_error(**_err) for _constraint in constraints: _fit.add_parameter_constraint(**_constraint) _fit.set_all_parameter_values(self._ref_initial_pars) return _fit
import numpy as np import matplotlib.pyplot as plt KAFE_PLOT = False _x = [-1.0, 1.0] _y = [-1.0, 1.0] _x_err = np.sqrt(2.0) _y_err = np.sqrt(2.0) def model_function(x, a): return x * a _fit_iminuit = XYFit(xy_data=[_x, _y], model_function=model_function, minimizer='iminuit') _fit_iminuit.add_error('x', _x_err) _fit_iminuit.add_error('y', _y_err) _fit_iminuit.do_fit() #_plot = _fit_iminuit.generate_plot() #_plot.plot(with_fit_info=True) _profiler_iminuit = ContoursProfiler(_fit_iminuit) _a_profile_iminuit = _profiler_iminuit.get_profile('a') _fit_scipy = XYFit(xy_data=[_x, _y], model_function=model_function, minimizer='scipy') _fit_scipy.add_error('x', _x_err) _fit_scipy.add_error('y', _y_err)