FitBenchmarking 1.3.0__tar.gz → 1.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/PKG-INFO +17 -15
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/README.md +8 -8
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cli/checkpoint_handler.py +15 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cli/main.py +17 -4
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/base_controller.py +11 -17
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/galahad_controller.py +15 -4
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/gradient_free_controller.py +2 -2
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/mantid_controller.py +10 -6
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/theseus_controller.py +9 -5
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/core/fitting_benchmarking.py +18 -8
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/core/results_output.py +23 -17
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/base_cost_func.py +2 -2
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/nlls_base_cost_func.py +2 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/base_parser.py +3 -1
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/fitbenchmark_parser.py +13 -8
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/fitting_problem.py +11 -6
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/horace_parser.py +37 -26
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/mantid_parser.py +1 -2
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/mantiddev_parser.py +4 -2
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/parser_factory.py +10 -4
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/sasview_parser.py +2 -0
- fitbenchmarking-1.5.0/fitbenchmarking/parsing/sscanss_parser.py +144 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/base_table.py +123 -30
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/compare_table.py +2 -1
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/energy_usage_table.py +5 -1
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/plots.py +307 -128
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/problem_summary_page.py +94 -74
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/tables.py +4 -16
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/problem_index_page.html +1 -2
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/problem_summary_page_template.html +150 -148
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/table_template.html +1 -2
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/checkpoint.py +7 -4
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/fitbm_result.py +27 -20
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/misc.py +13 -2
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/options.py +11 -2
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/pyproject.toml +8 -6
- fitbenchmarking-1.3.0/fitbenchmarking/templates/js/plotly.js +0 -3879
- fitbenchmarking-1.3.0/fitbenchmarking/templates/js/tex-mml-chtml.js +0 -1
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/.gitignore +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/LICENSE.txt +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/__main__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/ENSO.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Gauss3.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Hahn1.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Kirby2.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos1.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos2.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/META.txt +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/MGH17.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1c.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1d.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Bennett5.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/BoxBOD.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Eckerle4.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/META.txt +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH09.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH10.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat42.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat43.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Thurber.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut1.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut2.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/DanWood.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss1.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss2.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Lanczos3.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/META.txt +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1a.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1b.dat +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.hes +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.jac +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cli/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cli/exception_handler.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/bumps_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/ceres_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/controller_factory.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/dfo_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/gofit_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/gsl_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/horace_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/levmar_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/lmfit_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/matlab_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/matlab_curve_controller/eval_r.m +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/matlab_curve_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/matlab_mixin.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/matlab_opt_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/matlab_stats_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/minuit_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/nlopt_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/paramonte_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/ralfit_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/scipy_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/scipy_go_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/scipy_leastsq_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/scipy_ls_controller.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/core/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/cost_func_factory.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/hellinger_nlls_cost_func.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/loglike_nlls_cost_func.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/nlls_cost_func.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/poisson_cost_func.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/cost_func/weighted_nlls_cost_func.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Bold.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-BoldItalic.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Italic.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Light.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-LightItalic.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Medium.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-MediumItalic.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Regular.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Bold.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-BoldItalic.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Italic.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Light.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-LightItalic.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Medium.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-MediumItalic.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Regular.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Bold.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-BoldItalic.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Italic.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Light.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-LightItalic.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Medium.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-MediumItalic.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Regular.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Bold.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-BoldItalic.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Italic.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Light.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-LightItalic.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Medium.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-MediumItalic.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Regular.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.eot +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.svg +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.ttf +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff2 +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/hessian/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/hessian/analytic_hessian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/hessian/base_hessian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/hessian/best_available_hessian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/hessian/hessian_factory.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/hessian/numdifftools_hessian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/hessian/scipy_hessian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/analytic_jacobian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/base_jacobian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/best_available_jacobian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/default_jacobian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/jacobian_factory.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/numdifftools_jacobian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/scipy_jacobian.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/jacobian/scripts/NIST-Jacobians.nb +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/bal_parser.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/hogben_parser.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/ivp_parser.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/nist_data_functions.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/parsing/nist_parser.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/acc_table.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/fitting_report.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/local_min_table.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/performance_profiler.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/results_processing/runtime_table.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/css/custom_style.css +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/css/dropdown_style.css +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/css/main_style.css +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/css/math_style.css +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/css/table_style.css +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/fitting_report_template.html +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/images/accuracy.png +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/images/compare.png +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/images/energy.png +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/images/fitbenchmarking_logo.png +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/images/local_min.png +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/images/runtime.png +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/index_page.html +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/js/dropdown.js +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/js/table.js +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/templates/style_sheet.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/__init__.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/create_dirs.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/debug.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/exceptions.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/log.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/matlab_engine.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/output_grabber.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/timer.py +0 -0
- {fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/utils/write_files.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: FitBenchmarking
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.0
|
|
4
4
|
Summary: FitBenchmarking: A tool for comparing fitting software
|
|
5
5
|
Project-URL: Homepage, https://fitbenchmarking.github.io
|
|
6
6
|
Project-URL: Documentation, https://fitbenchmarking.readthedocs.io/en/stable
|
|
@@ -13,8 +13,8 @@ Keywords: benchmark,comparison,fitting,least squares,optimisation
|
|
|
13
13
|
Classifier: License :: OSI Approved :: BSD License
|
|
14
14
|
Classifier: Operating System :: OS Independent
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Requires-Python: >=3.
|
|
17
|
-
Requires-Dist: codecarbon
|
|
16
|
+
Requires-Python: >=3.10.1
|
|
17
|
+
Requires-Dist: codecarbon>=3.2.6
|
|
18
18
|
Requires-Dist: configparser
|
|
19
19
|
Requires-Dist: dash
|
|
20
20
|
Requires-Dist: docutils
|
|
@@ -23,11 +23,11 @@ Requires-Dist: lxml
|
|
|
23
23
|
Requires-Dist: matplotlib>=2.0
|
|
24
24
|
Requires-Dist: numpy
|
|
25
25
|
Requires-Dist: pandas>=1.3
|
|
26
|
-
Requires-Dist: plotly>=
|
|
27
|
-
Requires-Dist: scipy
|
|
26
|
+
Requires-Dist: plotly>=6.6.0
|
|
27
|
+
Requires-Dist: scipy<1.16.0,>=0.18
|
|
28
28
|
Requires-Dist: tqdm>=4.60
|
|
29
29
|
Provides-Extra: bumps
|
|
30
|
-
Requires-Dist: bumps
|
|
30
|
+
Requires-Dist: bumps<1.0.0; extra == 'bumps'
|
|
31
31
|
Provides-Extra: dev
|
|
32
32
|
Requires-Dist: coverage[toml]>=6.3; extra == 'dev'
|
|
33
33
|
Requires-Dist: coveralls; extra == 'dev'
|
|
@@ -40,10 +40,12 @@ Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
|
40
40
|
Requires-Dist: ruff; extra == 'dev'
|
|
41
41
|
Provides-Extra: dfo
|
|
42
42
|
Requires-Dist: dfo-ls; extra == 'dfo'
|
|
43
|
+
Provides-Extra: galahad
|
|
44
|
+
Requires-Dist: galahad-optrove; extra == 'galahad'
|
|
43
45
|
Provides-Extra: gofit
|
|
44
46
|
Requires-Dist: gofit; extra == 'gofit'
|
|
45
47
|
Provides-Extra: gradient-free
|
|
46
|
-
Requires-Dist: gradient-free-optimizers; extra == 'gradient-free'
|
|
48
|
+
Requires-Dist: gradient-free-optimizers[sklearn]; extra == 'gradient-free'
|
|
47
49
|
Provides-Extra: hogben
|
|
48
50
|
Requires-Dist: hogben; extra == 'hogben'
|
|
49
51
|
Provides-Extra: levmar
|
|
@@ -69,22 +71,22 @@ Requires-Dist: sasmodels; extra == 'sas'
|
|
|
69
71
|
Requires-Dist: tinycc; (platform_system == 'Windows') and extra == 'sas'
|
|
70
72
|
Description-Content-Type: text/markdown
|
|
71
73
|
|
|
72
|
-
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.
|
|
73
|
-
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.
|
|
74
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.5.0)
|
|
75
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.5.0)
|
|
74
76
|
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
|
|
75
|
-
[](https://fitbenchmarking.readthedocs.io/en/v1.5.0)
|
|
76
78
|
[](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
|
|
77
79
|
[](https://slack.com/)
|
|
78
|
-
[](https://zenodo.org/records/15546207)
|
|
79
81
|
[](https://doi.org/10.21105/joss.03127)
|
|
80
82
|
# FitBenchmarking
|
|
81
83
|
|
|
82
84
|
FitBenchmarking is an open source tool for comparing different minimizers/fitting frameworks. FitBenchmarking is cross platform and we support Windows, Linux and Mac OS. For questions, feature requests or any other inquiries, please open an issue on GitHub.
|
|
83
85
|
|
|
84
|
-
- **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
85
|
-
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
86
|
-
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
87
|
-
- **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.
|
|
86
|
+
- **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.5.0/users/install_instructions/index.html
|
|
87
|
+
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.5.0/users/index.html
|
|
88
|
+
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.5.0/contributors/guidelines.html
|
|
89
|
+
- **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.5.0/users/tests.html
|
|
88
90
|
|
|
89
91
|
The package is the result of a collaboration between STFC’s Scientific Computing Department and ISIS Neutron and Muon Facility and the Diamond Light Source. We also would like to acknowledge support from:
|
|
90
92
|
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.
|
|
2
|
-
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.
|
|
1
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.5.0)
|
|
2
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.5.0)
|
|
3
3
|
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
|
|
4
|
-
[](https://fitbenchmarking.readthedocs.io/en/v1.5.0)
|
|
5
5
|
[](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
|
|
6
6
|
[](https://slack.com/)
|
|
7
|
-
[](https://zenodo.org/records/15546207)
|
|
8
8
|
[](https://doi.org/10.21105/joss.03127)
|
|
9
9
|
# FitBenchmarking
|
|
10
10
|
|
|
11
11
|
FitBenchmarking is an open source tool for comparing different minimizers/fitting frameworks. FitBenchmarking is cross platform and we support Windows, Linux and Mac OS. For questions, feature requests or any other inquiries, please open an issue on GitHub.
|
|
12
12
|
|
|
13
|
-
- **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
14
|
-
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
15
|
-
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
16
|
-
- **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.
|
|
13
|
+
- **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.5.0/users/install_instructions/index.html
|
|
14
|
+
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.5.0/users/index.html
|
|
15
|
+
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.5.0/contributors/guidelines.html
|
|
16
|
+
- **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.5.0/users/tests.html
|
|
17
17
|
|
|
18
18
|
The package is the result of a collaboration between STFC’s Scientific Computing Department and ISIS Neutron and Muon Facility and the Diamond Light Source. We also would like to acknowledge support from:
|
|
19
19
|
|
|
@@ -11,6 +11,7 @@ import os
|
|
|
11
11
|
import sys
|
|
12
12
|
import textwrap
|
|
13
13
|
from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
|
14
|
+
from collections import defaultdict
|
|
14
15
|
|
|
15
16
|
from fitbenchmarking.cli.exception_handler import exception_handler
|
|
16
17
|
from fitbenchmarking.core.results_output import (
|
|
@@ -155,6 +156,20 @@ def generate_report(options_file="", additional_options=None, debug=False):
|
|
|
155
156
|
checkpoint = Checkpoint(options=options)
|
|
156
157
|
results, unselected_minimizers, failed_problems, config = checkpoint.load()
|
|
157
158
|
|
|
159
|
+
# Update options.software and options.minimizers
|
|
160
|
+
# so that they hold the correct values rather than
|
|
161
|
+
# the default. This update is necessary for processing
|
|
162
|
+
# the multstart plots.
|
|
163
|
+
set_minimizers = defaultdict(set)
|
|
164
|
+
for results_list in results.values():
|
|
165
|
+
for r in results_list:
|
|
166
|
+
set_minimizers[r.software].add(r.minimizer)
|
|
167
|
+
minimizers = defaultdict(
|
|
168
|
+
list, {k: list(v) for k, v in set_minimizers.items()}
|
|
169
|
+
)
|
|
170
|
+
options.software = list(minimizers.keys())
|
|
171
|
+
options.minimizers = minimizers
|
|
172
|
+
|
|
158
173
|
all_dirs = []
|
|
159
174
|
pp_dfs_all_prob_sets = {}
|
|
160
175
|
for label in results:
|
|
@@ -178,6 +178,14 @@ of the Fitbenchmarking docs. """
|
|
|
178
178
|
help="Set the port for Dash.",
|
|
179
179
|
)
|
|
180
180
|
|
|
181
|
+
parser.add_argument(
|
|
182
|
+
"--ip_address",
|
|
183
|
+
metavar="IP_ADDRESS",
|
|
184
|
+
type=str,
|
|
185
|
+
default="",
|
|
186
|
+
help="Set the ip address for Dash.",
|
|
187
|
+
)
|
|
188
|
+
|
|
181
189
|
make_plots_group = parser.add_mutually_exclusive_group()
|
|
182
190
|
make_plots_group.add_argument(
|
|
183
191
|
"--make_plots",
|
|
@@ -296,7 +304,8 @@ of the Fitbenchmarking docs. """
|
|
|
296
304
|
default="",
|
|
297
305
|
help=(
|
|
298
306
|
"Specify the minimum level of logging to display "
|
|
299
|
-
"on console during runtime."
|
|
307
|
+
"on console during runtime. Can be any of: "
|
|
308
|
+
"NOTSET, DEBUG, INFO, WARNING, ERROR, CRITICAL ."
|
|
300
309
|
),
|
|
301
310
|
)
|
|
302
311
|
parser.add_argument(
|
|
@@ -304,7 +313,10 @@ of the Fitbenchmarking docs. """
|
|
|
304
313
|
"--external_output",
|
|
305
314
|
metavar="EXTERNAL_OUTPUT",
|
|
306
315
|
default="",
|
|
307
|
-
help=
|
|
316
|
+
help=(
|
|
317
|
+
"Select the amount of information displayed from third-parties. "
|
|
318
|
+
"Can be any of: display, log_only, debug."
|
|
319
|
+
),
|
|
308
320
|
)
|
|
309
321
|
|
|
310
322
|
parser.add_argument(
|
|
@@ -312,7 +324,7 @@ of the Fitbenchmarking docs. """
|
|
|
312
324
|
default=False,
|
|
313
325
|
action="store_true",
|
|
314
326
|
help=(
|
|
315
|
-
"Load results from the checkpoint and generate"
|
|
327
|
+
"Load results from the checkpoint and generate "
|
|
316
328
|
"reports. Will not run any new tests."
|
|
317
329
|
),
|
|
318
330
|
)
|
|
@@ -340,7 +352,7 @@ of the Fitbenchmarking docs. """
|
|
|
340
352
|
"--check_jacobian",
|
|
341
353
|
action="store_true",
|
|
342
354
|
help=(
|
|
343
|
-
"Use this option to check the jacobian against"
|
|
355
|
+
"Use this option to check the jacobian against "
|
|
344
356
|
"a finite difference approximation."
|
|
345
357
|
),
|
|
346
358
|
)
|
|
@@ -541,6 +553,7 @@ def main():
|
|
|
541
553
|
"run_name": args.run_name,
|
|
542
554
|
"runtime_metric": args.runtime_metric,
|
|
543
555
|
"port": args.port,
|
|
556
|
+
"ip_address": args.ip_address,
|
|
544
557
|
}
|
|
545
558
|
|
|
546
559
|
# Check if make_plots in options.py should be overridden, and if so,
|
{fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/base_controller.py
RENAMED
|
@@ -17,6 +17,7 @@ from fitbenchmarking.utils.exceptions import (
|
|
|
17
17
|
MissingBoundsError,
|
|
18
18
|
UnknownMinimizerError,
|
|
19
19
|
)
|
|
20
|
+
from fitbenchmarking.utils.misc import ERROR_FLAG_MAPPINGS
|
|
20
21
|
|
|
21
22
|
if TYPE_CHECKING:
|
|
22
23
|
from fitbenchmarking.cost_func.base_cost_func import CostFunc
|
|
@@ -32,8 +33,6 @@ class Controller:
|
|
|
32
33
|
|
|
33
34
|
__metaclass__ = ABCMeta
|
|
34
35
|
|
|
35
|
-
VALID_FLAGS = [0, 1, 2, 3, 4, 5, 6, 7, 8]
|
|
36
|
-
|
|
37
36
|
#: Within the controller class, you must
|
|
38
37
|
#: initialize a dictionary, ``algorithm_check``,
|
|
39
38
|
#: such that the **keys** are given by:
|
|
@@ -46,7 +45,7 @@ class Controller:
|
|
|
46
45
|
#: - ``general`` - minimizers which solve a generic `min f(x)`
|
|
47
46
|
#: - ``simplex`` - derivative free simplex based algorithms
|
|
48
47
|
#: e.g. Nelder-Mead
|
|
49
|
-
#: - ``trust_region`` - algorithms which
|
|
48
|
+
#: - ``trust_region`` - algorithms which employ a trust region approach
|
|
50
49
|
#: - ``levenberg-marquardt`` - minimizers that use the
|
|
51
50
|
#: Levenberg-Marquardt algorithm
|
|
52
51
|
#: - ``gauss_newton`` - minimizers that use the Gauss Newton algorithm
|
|
@@ -62,7 +61,7 @@ class Controller:
|
|
|
62
61
|
#:
|
|
63
62
|
#: The ``algorithm_check`` dictionary is used to determine which minimizers
|
|
64
63
|
#: to run given the ``algorithm_type`` selected in Fitting Options.
|
|
65
|
-
#: For guidance on how to
|
|
64
|
+
#: For guidance on how to categorise minimizers, see the Optimization
|
|
66
65
|
#: Algorithms section of the FitBenchmarking docs.
|
|
67
66
|
algorithm_check = {
|
|
68
67
|
"all": [],
|
|
@@ -195,28 +194,23 @@ class Controller:
|
|
|
195
194
|
|
|
196
195
|
@property
|
|
197
196
|
def flag(self):
|
|
198
|
-
"""
|
|
199
|
-
| 0: `Successfully converged`
|
|
200
|
-
| 1: `Software reported maximum number of iterations exceeded`
|
|
201
|
-
| 2: `Software run but didn't converge to solution`
|
|
202
|
-
| 3: `Software raised an exception`
|
|
203
|
-
| 4: `Solver doesn't support bounded problems`
|
|
204
|
-
| 5: `Solution doesn't respect parameter bounds`
|
|
205
|
-
| 6: `Solver has exceeded maximum allowed runtime`
|
|
206
|
-
| 7: `Validation of the provided options failed`
|
|
207
|
-
| 8: `Confidence in fit could not be calculated`
|
|
208
|
-
"""
|
|
209
197
|
return self._flag
|
|
210
198
|
|
|
211
199
|
@flag.setter
|
|
212
200
|
def flag(self, value):
|
|
213
|
-
if value not in
|
|
201
|
+
if value not in ERROR_FLAG_MAPPINGS:
|
|
214
202
|
raise ControllerAttributeError(
|
|
215
203
|
"controller.flag must be one of "
|
|
216
|
-
f"{list(
|
|
204
|
+
f"{list(ERROR_FLAG_MAPPINGS.keys())}. Got: {value}."
|
|
217
205
|
)
|
|
218
206
|
self._flag = int(value)
|
|
219
207
|
|
|
208
|
+
_flag_docstring = "\n" + "\n".join(
|
|
209
|
+
f"""\t :{key}: {value}""" for key, value in ERROR_FLAG_MAPPINGS.items()
|
|
210
|
+
)
|
|
211
|
+
flag.__doc__ = f"""Valid flags:
|
|
212
|
+
{_flag_docstring}"""
|
|
213
|
+
|
|
220
214
|
@property
|
|
221
215
|
def software(self):
|
|
222
216
|
"""
|
{fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/galahad_controller.py
RENAMED
|
@@ -3,7 +3,7 @@ Implements a controller for the GALAHAD fitting software.
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from contextlib import suppress
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import TYPE_CHECKING, Any
|
|
7
7
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
from galahad import arc, bgo, dgo, nls, trb, tru
|
|
@@ -11,6 +11,9 @@ from galahad import arc, bgo, dgo, nls, trb, tru
|
|
|
11
11
|
from fitbenchmarking.controllers.base_controller import Controller
|
|
12
12
|
from fitbenchmarking.utils.exceptions import IncompatibleMinimizerError
|
|
13
13
|
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from collections.abc import Callable
|
|
16
|
+
|
|
14
17
|
|
|
15
18
|
class GalahadController(Controller):
|
|
16
19
|
"""
|
|
@@ -94,15 +97,23 @@ class GalahadController(Controller):
|
|
|
94
97
|
x_u = np.array(x_u)
|
|
95
98
|
|
|
96
99
|
opts = self._module.initialize()
|
|
100
|
+
|
|
101
|
+
if minimizer in ["arc", "nls"]:
|
|
102
|
+
opts["glrt_options"]["impose_descent"] = False
|
|
103
|
+
|
|
97
104
|
kwargs: dict[str, Any] = {
|
|
98
105
|
"options": opts,
|
|
99
106
|
}
|
|
100
107
|
|
|
101
108
|
if minimizer in ["arc", "tru"]:
|
|
109
|
+
if not has_hessian:
|
|
110
|
+
raise IncompatibleMinimizerError(
|
|
111
|
+
"Requires hessian information (for now)"
|
|
112
|
+
)
|
|
102
113
|
kwargs.update(
|
|
103
114
|
{
|
|
104
115
|
"n": self._num_vars,
|
|
105
|
-
"H_type": "dense"
|
|
116
|
+
"H_type": "dense",
|
|
106
117
|
"H_ne": 10,
|
|
107
118
|
"H_row": None,
|
|
108
119
|
"H_col": None,
|
|
@@ -123,7 +134,7 @@ class GalahadController(Controller):
|
|
|
123
134
|
}
|
|
124
135
|
)
|
|
125
136
|
|
|
126
|
-
elif minimizer
|
|
137
|
+
elif minimizer == "nls":
|
|
127
138
|
if not has_hessian:
|
|
128
139
|
raise IncompatibleMinimizerError(
|
|
129
140
|
"Requires hessian information (for now)"
|
|
@@ -178,7 +189,7 @@ class GalahadController(Controller):
|
|
|
178
189
|
"eval_g": self._jacobian,
|
|
179
190
|
"eval_h": self._hessian,
|
|
180
191
|
}
|
|
181
|
-
elif self._minimizer
|
|
192
|
+
elif self._minimizer == "nls":
|
|
182
193
|
m = self.data_x.shape[0]
|
|
183
194
|
kwargs = {
|
|
184
195
|
"n": self._num_vars,
|
|
@@ -125,7 +125,7 @@ class GradientFreeController(Controller):
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
self.iteration_count = 1000
|
|
128
|
-
self.initialize = {"warm_start": param_dict}
|
|
128
|
+
self.initialize = {"warm_start": [param_dict]}
|
|
129
129
|
|
|
130
130
|
def _feval(self, p):
|
|
131
131
|
"""
|
|
@@ -152,7 +152,7 @@ class GradientFreeController(Controller):
|
|
|
152
152
|
|
|
153
153
|
method_to_call = getattr(gfo, self.minimizer)
|
|
154
154
|
|
|
155
|
-
opt = method_to_call(self.search_space)
|
|
155
|
+
opt = method_to_call(self.search_space, initialize=self.initialize)
|
|
156
156
|
opt.search(self._feval, n_iter=self.iteration_count, verbosity=False)
|
|
157
157
|
self.results = opt.best_para
|
|
158
158
|
self._status = 0 if self.results is not None else 1
|
{fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/mantid_controller.py
RENAMED
|
@@ -3,7 +3,6 @@ Implements a controller for the Mantid fitting software.
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from itertools import repeat
|
|
6
|
-
from typing import Union
|
|
7
6
|
|
|
8
7
|
import numpy as np
|
|
9
8
|
from mantid import simpleapi as msapi
|
|
@@ -85,6 +84,7 @@ class MantidController(Controller):
|
|
|
85
84
|
]
|
|
86
85
|
|
|
87
86
|
support_for_bounds = True
|
|
87
|
+
incompatible_problems = ["sscanss"]
|
|
88
88
|
|
|
89
89
|
def __init__(self, cost_func):
|
|
90
90
|
"""
|
|
@@ -125,6 +125,8 @@ class MantidController(Controller):
|
|
|
125
125
|
)
|
|
126
126
|
|
|
127
127
|
if self.problem.multifit:
|
|
128
|
+
if self.data_x[0].dtype not in [float, int]:
|
|
129
|
+
self.data_x = [np.array(range(len(d))) for d in self.data_x]
|
|
128
130
|
# len(data_obj) will be equal to dataset count
|
|
129
131
|
data_obj = [
|
|
130
132
|
msapi.CreateWorkspace(
|
|
@@ -142,6 +144,8 @@ class MantidController(Controller):
|
|
|
142
144
|
for i, v in enumerate(data_obj[1:])
|
|
143
145
|
}
|
|
144
146
|
else:
|
|
147
|
+
if self.data_x.dtype not in [float, int]:
|
|
148
|
+
self.data_x = np.array(range(len(self.data_x)))
|
|
145
149
|
data_obj = msapi.CreateWorkspace(
|
|
146
150
|
DataX=self.data_x, DataY=self.data_y, DataE=self.data_e
|
|
147
151
|
)
|
|
@@ -405,11 +409,11 @@ class MantidController(Controller):
|
|
|
405
409
|
# =====================
|
|
406
410
|
def eval_chisq(
|
|
407
411
|
self,
|
|
408
|
-
params:
|
|
409
|
-
x:
|
|
410
|
-
y:
|
|
411
|
-
e:
|
|
412
|
-
) ->
|
|
412
|
+
params: float | list[float],
|
|
413
|
+
x: np.ndarray | list[np.ndarray] | None = None,
|
|
414
|
+
y: np.ndarray | list[np.ndarray] | None = None,
|
|
415
|
+
e: np.ndarray | list[np.ndarray] | None = None,
|
|
416
|
+
) -> np.ndarray | list[np.ndarray]:
|
|
413
417
|
"""
|
|
414
418
|
Computes the chisq value.
|
|
415
419
|
If multi-fit inputs will be lists and this will return a list of chi
|
{fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/controllers/theseus_controller.py
RENAMED
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
Implements a controller for the Theseus fitting software.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from
|
|
6
|
-
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import TYPE_CHECKING
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from collections.abc import Sequence
|
|
7
11
|
|
|
8
12
|
import numpy as np
|
|
9
13
|
import theseus as th
|
|
@@ -24,8 +28,8 @@ class TheseusCostFunction(th.CostFunction):
|
|
|
24
28
|
var: list[th.Vector],
|
|
25
29
|
auxvar: Sequence[th.Variable],
|
|
26
30
|
dim: int,
|
|
27
|
-
cost_weight:
|
|
28
|
-
name:
|
|
31
|
+
cost_weight: th.CostWeight | None = None,
|
|
32
|
+
name: str | None = None,
|
|
29
33
|
):
|
|
30
34
|
if cost_weight is None:
|
|
31
35
|
cost_weight = th.ScaleCostWeight(1.0)
|
|
@@ -79,7 +83,7 @@ class TheseusCostFunction(th.CostFunction):
|
|
|
79
83
|
"""
|
|
80
84
|
return self._dim
|
|
81
85
|
|
|
82
|
-
def _copy_impl(self, new_name:
|
|
86
|
+
def _copy_impl(self, new_name: str | None = None):
|
|
83
87
|
return TheseusCostFunction( # type: ignore
|
|
84
88
|
var=[v.copy() for v in self.var],
|
|
85
89
|
auxvar=[v.copy() for v in self.auxvar],
|
{fitbenchmarking-1.3.0 → fitbenchmarking-1.5.0}/fitbenchmarking/core/fitting_benchmarking.py
RENAMED
|
@@ -5,6 +5,7 @@ fitting software.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import os
|
|
8
|
+
import platform
|
|
8
9
|
import timeit
|
|
9
10
|
|
|
10
11
|
import numpy as np
|
|
@@ -71,6 +72,12 @@ class Fit:
|
|
|
71
72
|
self._emissions_tracker = None
|
|
72
73
|
self._logger_prefix = " "
|
|
73
74
|
if "energy_usage" in options.table_type:
|
|
75
|
+
if platform.system() == "Darwin":
|
|
76
|
+
LOGGER.info(
|
|
77
|
+
"Please be aware that you may be prompted by "
|
|
78
|
+
"CodeCarbon to provide a password to give sudo rights "
|
|
79
|
+
"so that the powermetrics tool can be used."
|
|
80
|
+
)
|
|
74
81
|
self._emissions_tracker = EmissionsTracker(
|
|
75
82
|
measure_power_secs=1,
|
|
76
83
|
tracking_mode="process",
|
|
@@ -108,13 +115,14 @@ class Fit:
|
|
|
108
115
|
try:
|
|
109
116
|
with self._grabbed_output:
|
|
110
117
|
parsed = parse_problem_file(p, self._options)
|
|
111
|
-
parsed.correct_data()
|
|
112
118
|
except FitBenchmarkException as e:
|
|
113
119
|
LOGGER.info("Could not parse problem from: %s", p)
|
|
114
120
|
LOGGER.warning(e)
|
|
115
121
|
else:
|
|
116
|
-
|
|
117
|
-
|
|
122
|
+
for fp in parsed:
|
|
123
|
+
fp.correct_data()
|
|
124
|
+
name_count[fp.name] = name_count.get(fp.name, 0) + 1
|
|
125
|
+
problems.append((p, fp))
|
|
118
126
|
|
|
119
127
|
LOGGER.info("Running problems")
|
|
120
128
|
|
|
@@ -141,7 +149,7 @@ class Fit:
|
|
|
141
149
|
|
|
142
150
|
info_str = (
|
|
143
151
|
f" Running data from: {os.path.basename(fname)}"
|
|
144
|
-
f" {i + 1}/{len(
|
|
152
|
+
f" {i + 1}/{len(problems)} "
|
|
145
153
|
)
|
|
146
154
|
LOGGER.info("\n%s", "#" * len(info_str))
|
|
147
155
|
LOGGER.info(info_str)
|
|
@@ -150,8 +158,8 @@ class Fit:
|
|
|
150
158
|
results = self._loop_over_starting_values(problem)
|
|
151
159
|
self._results.extend(results)
|
|
152
160
|
|
|
153
|
-
|
|
154
|
-
|
|
161
|
+
if self._emissions_tracker:
|
|
162
|
+
_ = self._emissions_tracker.stop()
|
|
155
163
|
|
|
156
164
|
self._checkpointer.finalise_group(
|
|
157
165
|
self._label, self._failed_problems, self._unselected_minimizers
|
|
@@ -413,7 +421,7 @@ class Fit:
|
|
|
413
421
|
LOGGER.info(
|
|
414
422
|
"%sJacobian: %s",
|
|
415
423
|
self._logger_prefix * 5,
|
|
416
|
-
jacobian.name()
|
|
424
|
+
jacobian.name() or "default",
|
|
417
425
|
)
|
|
418
426
|
|
|
419
427
|
if (
|
|
@@ -547,6 +555,7 @@ class Fit:
|
|
|
547
555
|
num_runs = self._options.num_runs
|
|
548
556
|
energy = np.nan
|
|
549
557
|
tracker = self._emissions_tracker
|
|
558
|
+
tracker_stopped = False
|
|
550
559
|
|
|
551
560
|
try:
|
|
552
561
|
with self._grabbed_output:
|
|
@@ -558,6 +567,7 @@ class Fit:
|
|
|
558
567
|
num_runs, 1
|
|
559
568
|
)
|
|
560
569
|
energy = tracker.stop_task().energy_consumed / num_runs
|
|
570
|
+
tracker_stopped = True
|
|
561
571
|
else:
|
|
562
572
|
runtimes = timeit.Timer(stmt=controller.execute).repeat(
|
|
563
573
|
num_runs, 1
|
|
@@ -629,7 +639,7 @@ class Fit:
|
|
|
629
639
|
controller.timer.reset()
|
|
630
640
|
|
|
631
641
|
# ensure emissions tracker has been stopped if energy not set
|
|
632
|
-
if
|
|
642
|
+
if self._emissions_tracker and not tracker_stopped:
|
|
633
643
|
_ = self._emissions_tracker.stop_task()
|
|
634
644
|
|
|
635
645
|
if controller.flag in [3, 6, 7]:
|
|
@@ -9,7 +9,6 @@ import platform
|
|
|
9
9
|
import re
|
|
10
10
|
import webbrowser
|
|
11
11
|
from shutil import copytree
|
|
12
|
-
from typing import Optional, Union
|
|
13
12
|
|
|
14
13
|
import pandas as pd
|
|
15
14
|
from dash import Dash, dcc, html
|
|
@@ -31,7 +30,7 @@ from fitbenchmarking.utils import create_dirs
|
|
|
31
30
|
from fitbenchmarking.utils.exceptions import PlottingError
|
|
32
31
|
from fitbenchmarking.utils.fitbm_result import FittingResult
|
|
33
32
|
from fitbenchmarking.utils.log import get_logger
|
|
34
|
-
from fitbenchmarking.utils.misc import get_css
|
|
33
|
+
from fitbenchmarking.utils.misc import get_css
|
|
35
34
|
from fitbenchmarking.utils.options import Options
|
|
36
35
|
from fitbenchmarking.utils.write_files import write_file
|
|
37
36
|
|
|
@@ -164,7 +163,7 @@ def preprocess_data(results: list[FittingResult]):
|
|
|
164
163
|
col_sections = ["costfun"]
|
|
165
164
|
|
|
166
165
|
# Generate the columns, category, and row tags and sort
|
|
167
|
-
rows:
|
|
166
|
+
rows: list[str] | set[str] = set()
|
|
168
167
|
columns = {}
|
|
169
168
|
for r in results:
|
|
170
169
|
# Error 4 means none of the jacobians ran so can't infer the
|
|
@@ -192,7 +191,7 @@ def preprocess_data(results: list[FittingResult]):
|
|
|
192
191
|
}
|
|
193
192
|
|
|
194
193
|
# Build the sorted results dictionary
|
|
195
|
-
sorted_results: dict[str, dict[str, list[
|
|
194
|
+
sorted_results: dict[str, dict[str, list[FittingResult | None]]] = {
|
|
196
195
|
r.strip(":"): {
|
|
197
196
|
k: [None for _ in category] for k, category in columns.items()
|
|
198
197
|
}
|
|
@@ -363,7 +362,6 @@ def create_plots(options, results, best_results, figures_dir):
|
|
|
363
362
|
"""
|
|
364
363
|
for best_dict, prob_result in zip(best_results.values(), results.values()):
|
|
365
364
|
plot_dict = {}
|
|
366
|
-
initial_guess_path = {}
|
|
367
365
|
data = {}
|
|
368
366
|
|
|
369
367
|
# Create a dataframe for each problem
|
|
@@ -439,9 +437,6 @@ def create_plots(options, results, best_results, figures_dir):
|
|
|
439
437
|
result.figure_error = str(e)
|
|
440
438
|
continue
|
|
441
439
|
|
|
442
|
-
# Create a plot showing the initial guess and get filename
|
|
443
|
-
initial_guess_path[cf] = plot.plot_initial_guess(data[cf])
|
|
444
|
-
|
|
445
440
|
# Get filenames of best plot first
|
|
446
441
|
# If none of the fits succeeded, params could be None
|
|
447
442
|
# Otherwise, add the best fit to the plot
|
|
@@ -452,7 +447,6 @@ def create_plots(options, results, best_results, figures_dir):
|
|
|
452
447
|
best_dict[
|
|
453
448
|
cf
|
|
454
449
|
].figure_error = "Minimizer failed to produce any parameters"
|
|
455
|
-
best_dict[cf].start_figure_link = initial_guess_path[cf]
|
|
456
450
|
plot_dict[cf] = plot
|
|
457
451
|
|
|
458
452
|
plot_paths = plot.plotly_fit(data[cf])
|
|
@@ -469,7 +463,6 @@ def create_plots(options, results, best_results, figures_dir):
|
|
|
469
463
|
result.figure_error = (
|
|
470
464
|
"Minimizer failed to produce any parameters"
|
|
471
465
|
)
|
|
472
|
-
result.start_figure_link = initial_guess_path[cf]
|
|
473
466
|
|
|
474
467
|
# For each result, if it succeeded and produced posterior pdf estimates
|
|
475
468
|
# for each parameter, create histogram plots and add plot links to the
|
|
@@ -501,7 +494,6 @@ def create_problem_level_index(
|
|
|
501
494
|
:params config: Dictionary containing env config
|
|
502
495
|
:type config: dict
|
|
503
496
|
"""
|
|
504
|
-
js = get_js(options, group_dir)
|
|
505
497
|
|
|
506
498
|
root = os.path.dirname(inspect.getfile(fitbenchmarking))
|
|
507
499
|
template_dir = os.path.join(root, "templates")
|
|
@@ -519,7 +511,7 @@ def create_problem_level_index(
|
|
|
519
511
|
template.render(
|
|
520
512
|
css_style_sheet=css["main"],
|
|
521
513
|
custom_style=css["custom"],
|
|
522
|
-
mathjax=
|
|
514
|
+
mathjax="https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js",
|
|
523
515
|
group_name=group_name,
|
|
524
516
|
table_type=names,
|
|
525
517
|
links=links,
|
|
@@ -634,7 +626,7 @@ def open_browser(output_file: str, options, pp_dfs_all_prob_sets) -> None:
|
|
|
634
626
|
)
|
|
635
627
|
|
|
636
628
|
if options.run_dash:
|
|
637
|
-
|
|
629
|
+
prepare_dash_app_and_run(options, pp_dfs_all_prob_sets)
|
|
638
630
|
|
|
639
631
|
|
|
640
632
|
def update_warning(solvers, max_solvers):
|
|
@@ -754,10 +746,10 @@ def display_page(
|
|
|
754
746
|
return html.Div(new_layout)
|
|
755
747
|
|
|
756
748
|
|
|
757
|
-
def
|
|
749
|
+
def prepare_dash_app_and_run(options, pp_dfs_all_prob_sets) -> None:
|
|
758
750
|
"""
|
|
759
|
-
|
|
760
|
-
plots.
|
|
751
|
+
Prepares the Dash app to produce the interactive performance profile
|
|
752
|
+
plots, and calls the function to run it.
|
|
761
753
|
|
|
762
754
|
:param options: The user options for the benchmark.
|
|
763
755
|
:type options: fitbenchmarking.utils.options.Options
|
|
@@ -866,4 +858,18 @@ def run_dash_app(options, pp_dfs_all_prob_sets) -> None:
|
|
|
866
858
|
)
|
|
867
859
|
)
|
|
868
860
|
|
|
869
|
-
app.
|
|
861
|
+
run_dash_app(app=app, host=options.ip_address, port=options.port)
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
def run_dash_app(app, host, port):
|
|
865
|
+
"""
|
|
866
|
+
Runs the Dash app.
|
|
867
|
+
|
|
868
|
+
:param host: The dash app to run
|
|
869
|
+
:type host: dash.dash.Dash
|
|
870
|
+
:param host: The ip address where to run the app.
|
|
871
|
+
:type host: str
|
|
872
|
+
:param port: The port where to run the app.
|
|
873
|
+
:type port: str
|
|
874
|
+
"""
|
|
875
|
+
app.run(host=host, port=port)
|