Skip to content

Commit

Permalink
Removed mpfit, replaced with nlopt
Browse files Browse the repository at this point in the history
  • Loading branch information
Arthur Glowacki committed Oct 3, 2024
1 parent 1a65881 commit 1fcd52a
Show file tree
Hide file tree
Showing 17 changed files with 92 additions and 4,365 deletions.
3 changes: 0 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,6 @@ ENDIF()
#--------------- start xrf lib -----------------
set(libxrf_fit_HEADERS
src/core/defines.h
src/support/cmpfit-1.3a/mpfit.hpp
src/support/nnls/nnls.hpp
src/data_struct/quantification_standard.h
src/data_struct/element_quant.h
Expand All @@ -243,7 +242,6 @@ set(libxrf_fit_HEADERS
src/fitting/routines/nnls_fit_routine.h
src/fitting/routines/hybrid_param_nnls_fit_routine.h
src/fitting/optimizers/optimizer.h
src/fitting/optimizers/mpfit_optimizer.h
src/fitting/optimizers/nlopt_optimizer.h
src/data_struct/detector.h
src/stats/correlation_coefficient.h
Expand All @@ -269,7 +267,6 @@ set(libxrf_fit_SOURCE
src/fitting/routines/nnls_fit_routine.cpp
src/fitting/routines/hybrid_param_nnls_fit_routine.cpp
src/fitting/optimizers/optimizer.cpp
src/fitting/optimizers/mpfit_optimizer.cpp
src/fitting/optimizers/nlopt_optimizer.cpp
src/data_struct/detector.cpp
src/data_struct/analysis_job.cpp
Expand Down
2 changes: 1 addition & 1 deletion src/core/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ void help()
logit_s<<"--optimize-fit-override-params : <int> Integrate the 8 largest mda datasets and fit with multiple params.\n"<<
" 0 = use override file\n 1 = matrix batch fit\n 2 = batch fit without tails\n 3 = batch fit with tails\n 4 = batch fit with free E, everything else fixed \n 5 = batch fit without tails, and fit energy quadratic\n";
logit_s<<"--optimize-fit-routine : <general,hybrid> General (default): passes elements amplitudes as fit parameters. Hybrid only passes fit parameters and fits element amplitudes using NNLS\n";
logit_s<<"--optimizer <lmfit, mpfit> : Choose which optimizer to use for --optimize-fit-override-params or matrix fit routine \n";
//logit_s<<"--optimizer <lmfit, mpfit> : Choose which optimizer to use for --optimize-fit-override-params or matrix fit routine \n";
// logit_s<<"--optimizer-fx-tols <tol_override_val> : F_TOL, X_TOL, Default is LM_FIT = " << DP_LM_USERTOL << " , MP_FIT = " << 1.192e-10 << "\n";
// logit_s<<"--optimizer-fxg-tols <tol_override_val> : F_TOL, X_TOL, G_TOL, Default is LM_FIT = " << DP_LM_USERTOL << " , MP_FIT = " << 1.192e-10 << "\n";
logit_s<<"--optimizer-use-weights : Calculate and use weights for residual error function.\n";
Expand Down
2 changes: 1 addition & 1 deletion src/core/process_whole.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,7 @@ bool perform_quantification(data_struct::Analysis_Job<double>* analysis_job, boo

logI << Fitting_Routine_To_Str.at(fit_itr.first) << " " << quant_itr.first << "\n";
Fit_Parameters<double> fit_params;
// min, and max values doen't matter because we are free fitting in mpfit and lmfit
// min, and max values doen't matter because we are free fitting amplitude only
fit_params.add_parameter(Fit_Param<double>("quantifier", 0.0, std::numeric_limits<double>::max()/2.0, 1.0, 0.0001, E_Bound_Type::FIT));
//initial guess: parinfo_value[0] = 100000.0 / factor
fit_params["quantifier"].value = (double)100000.0 / quant_itr.second;
Expand Down
7 changes: 4 additions & 3 deletions src/data_struct/analysis_job.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,16 +163,17 @@ void Analysis_Job<T_real>::init_fit_routines(size_t spectra_samples, bool force
template<typename T_real>
void Analysis_Job<T_real>::set_optimizer(std::string optimizer)
{
if(optimizer == "mpfit")
/* // todo change nlopt optimzier
if(optimizer == "")
{
logI << "Setting optimizer to MPFIT\n";
_optimizer = &_mpfit_optimizer;
logI << "Setting optimizer to \n";
}
else
{
logI << "Setting optimizer to NLOPT\n";
_optimizer = &_nlopt_optimizer;
}
*/
}

//-----------------------------------------------------------------------------
Expand Down
3 changes: 0 additions & 3 deletions src/data_struct/analysis_job.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ POSSIBILITY OF SUCH DAMAGE.
#include <thread>
#include "data_struct/quantification_standard.h"
#include "data_struct/params_override.h"
#include "fitting/optimizers/mpfit_optimizer.h"
#include "fitting/optimizers/nlopt_optimizer.h"

namespace data_struct
Expand Down Expand Up @@ -159,9 +158,7 @@ class DLL_EXPORT Analysis_Job
std::vector<Quantification_Standard<T_real>> standard_element_weights;

protected:

//Optimizers for fitting models
fitting::optimizers::MPFit_Optimizer<T_real> _mpfit_optimizer;
fitting::optimizers::NLOPT_Optimizer<T_real> _nlopt_optimizer;
fitting::optimizers::Optimizer<T_real>*_optimizer;

Expand Down
Loading

0 comments on commit 1fcd52a

Please sign in to comment.