FitBenchmarking 1.1.0__tar.gz → 1.2.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.1.0 → fitbenchmarking-1.2.0}/PKG-INFO +15 -18
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/README.md +10 -9
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/__main__.py +2 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cli/checkpoint_handler.py +162 -115
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cli/exception_handler.py +8 -7
- fitbenchmarking-1.2.0/fitbenchmarking/cli/main.py +571 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/base_controller.py +175 -102
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/bumps_controller.py +54 -49
- fitbenchmarking-1.2.0/fitbenchmarking/controllers/ceres_controller.py +211 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/controller_factory.py +28 -18
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/dfo_controller.py +35 -37
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/gofit_controller.py +58 -38
- fitbenchmarking-1.2.0/fitbenchmarking/controllers/gradient_free_controller.py +171 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/gsl_controller.py +69 -51
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/horace_controller.py +43 -39
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/levmar_controller.py +26 -24
- fitbenchmarking-1.2.0/fitbenchmarking/controllers/lmfit_controller.py +203 -0
- fitbenchmarking-1.2.0/fitbenchmarking/controllers/mantid_controller.py +374 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_controller.py +27 -21
- fitbenchmarking-1.2.0/fitbenchmarking/controllers/matlab_curve_controller.py +123 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_mixin.py +42 -29
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_opt_controller.py +62 -42
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_stats_controller.py +28 -22
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/minuit_controller.py +34 -25
- fitbenchmarking-1.2.0/fitbenchmarking/controllers/nlopt_controller.py +196 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/paramonte_controller.py +31 -22
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/ralfit_controller.py +78 -43
- fitbenchmarking-1.2.0/fitbenchmarking/controllers/scipy_controller.py +159 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/scipy_go_controller.py +42 -37
- fitbenchmarking-1.2.0/fitbenchmarking/controllers/scipy_leastsq_controller.py +85 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/scipy_ls_controller.py +36 -27
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/theseus_controller.py +66 -54
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/core/fitting_benchmarking.py +167 -128
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/core/results_output.py +351 -249
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/base_cost_func.py +7 -4
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/cost_func_factory.py +17 -9
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/hellinger_nlls_cost_func.py +16 -9
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/loglike_nlls_cost_func.py +1 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/nlls_base_cost_func.py +4 -2
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/nlls_cost_func.py +7 -4
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/poisson_cost_func.py +19 -10
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/weighted_nlls_cost_func.py +13 -5
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/analytic_hessian.py +4 -2
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/base_hessian.py +3 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/best_available_hessian.py +15 -10
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/hessian_factory.py +17 -12
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/numdifftools_hessian.py +2 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/scipy_hessian.py +12 -7
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/analytic_jacobian.py +28 -3
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/base_jacobian.py +3 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/best_available_jacobian.py +15 -10
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/default_jacobian.py +1 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/jacobian_factory.py +17 -12
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/numdifftools_jacobian.py +2 -2
- fitbenchmarking-1.2.0/fitbenchmarking/jacobian/scipy_jacobian.py +85 -0
- fitbenchmarking-1.2.0/fitbenchmarking/parsing/bal_parser.py +202 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/base_parser.py +4 -4
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/fitbenchmark_parser.py +194 -109
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/fitting_problem.py +73 -61
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/hogben_parser.py +12 -9
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/horace_parser.py +74 -55
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/ivp_parser.py +15 -12
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/mantid_parser.py +4 -2
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/mantiddev_parser.py +49 -47
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/nist_data_functions.py +58 -47
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/nist_parser.py +79 -55
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/parser_factory.py +35 -26
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/sasview_parser.py +2 -2
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/acc_table.py +3 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/base_table.py +246 -152
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/compare_table.py +67 -32
- fitbenchmarking-1.1.0/fitbenchmarking/results_processing/emissions_table.py → fitbenchmarking-1.2.0/fitbenchmarking/results_processing/energy_usage_table.py +13 -12
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/fitting_report.py +69 -48
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/local_min_table.py +54 -33
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/performance_profiler.py +150 -148
- fitbenchmarking-1.2.0/fitbenchmarking/results_processing/plots.py +373 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/problem_summary_page.py +72 -52
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/runtime_table.py +3 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/tables.py +110 -71
- fitbenchmarking-1.2.0/fitbenchmarking/templates/css/custom_style.css +159 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/fitting_report_template.html +74 -26
- fitbenchmarking-1.2.0/fitbenchmarking/templates/images/accuracy.png +0 -0
- fitbenchmarking-1.2.0/fitbenchmarking/templates/images/compare.png +0 -0
- fitbenchmarking-1.2.0/fitbenchmarking/templates/images/energy.png +0 -0
- fitbenchmarking-1.2.0/fitbenchmarking/templates/images/fitbenchmarking_logo.png +0 -0
- fitbenchmarking-1.2.0/fitbenchmarking/templates/images/local_min.png +0 -0
- fitbenchmarking-1.2.0/fitbenchmarking/templates/images/runtime.png +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/index_page.html +1 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/table.js +2 -2
- fitbenchmarking-1.2.0/fitbenchmarking/templates/problem_index_page.html +62 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/problem_summary_page_template.html +77 -37
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/table_template.html +30 -32
- fitbenchmarking-1.2.0/fitbenchmarking/utils/checkpoint.py +390 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/create_dirs.py +5 -3
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/debug.py +11 -8
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/exceptions.py +112 -47
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/fitbm_result.py +113 -92
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/log.py +18 -11
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/matlab_engine.py +6 -6
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/misc.py +20 -17
- fitbenchmarking-1.2.0/fitbenchmarking/utils/options.py +912 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/output_grabber.py +15 -12
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/timer.py +2 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/write_files.py +12 -6
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/pyproject.toml +35 -40
- fitbenchmarking-1.1.0/fitbenchmarking/cli/main.py +0 -439
- fitbenchmarking-1.1.0/fitbenchmarking/controllers/ceres_controller.py +0 -188
- fitbenchmarking-1.1.0/fitbenchmarking/controllers/gradient_free_controller.py +0 -158
- fitbenchmarking-1.1.0/fitbenchmarking/controllers/lmfit_controller.py +0 -190
- fitbenchmarking-1.1.0/fitbenchmarking/controllers/mantid_controller.py +0 -330
- fitbenchmarking-1.1.0/fitbenchmarking/controllers/matlab_curve_controller.py +0 -112
- fitbenchmarking-1.1.0/fitbenchmarking/controllers/nlopt_controller.py +0 -188
- fitbenchmarking-1.1.0/fitbenchmarking/controllers/scipy_controller.py +0 -130
- fitbenchmarking-1.1.0/fitbenchmarking/jacobian/scipy_jacobian.py +0 -33
- fitbenchmarking-1.1.0/fitbenchmarking/results_processing/plots.py +0 -314
- fitbenchmarking-1.1.0/fitbenchmarking/templates/css/custom_style.css +0 -73
- fitbenchmarking-1.1.0/fitbenchmarking/templates/problem_index_page.html +0 -51
- fitbenchmarking-1.1.0/fitbenchmarking/templates/table_descriptions.rst +0 -63
- fitbenchmarking-1.1.0/fitbenchmarking/utils/checkpoint.py +0 -330
- fitbenchmarking-1.1.0/fitbenchmarking/utils/options.py +0 -716
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/.gitignore +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/LICENSE.txt +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/ENSO.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Gauss3.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Hahn1.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Kirby2.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos1.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos2.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/META.txt +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/MGH17.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1c.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1d.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Bennett5.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/BoxBOD.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Eckerle4.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/META.txt +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH09.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH10.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat42.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat43.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Thurber.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut1.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut2.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/DanWood.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss1.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss2.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Lanczos3.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/META.txt +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1a.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1b.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cli/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_curve_controller/eval_r.m +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/core/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Bold.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-BoldItalic.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Italic.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Light.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-LightItalic.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Medium.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-MediumItalic.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Regular.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Bold.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-BoldItalic.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Italic.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Light.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-LightItalic.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Medium.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-MediumItalic.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Regular.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Bold.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-BoldItalic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Italic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Light.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-LightItalic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Medium.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-MediumItalic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Regular.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Bold.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-BoldItalic.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Italic.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Light.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-LightItalic.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Medium.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-MediumItalic.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Regular.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.svg +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/scripts/NIST-Jacobians.nb +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/css/dropdown_style.css +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/css/main_style.css +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/css/math_style.css +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/css/table_style.css +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/dropdown.js +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/plotly.js +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/tex-mml-chtml.js +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/style_sheet.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: FitBenchmarking
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.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
|
|
@@ -8,20 +8,19 @@ Project-URL: Repository, https://github.com/fitbenchmarking/fitbenchmarking
|
|
|
8
8
|
Project-URL: Release Notes, https://github.com/fitbenchmarking/fitbenchmarking/releases
|
|
9
9
|
Project-URL: Issues, https://github.com/fitbenchmarking/fitbenchmarking/issues
|
|
10
10
|
Author: FitBenchmarkign Team
|
|
11
|
-
License-File: LICENSE.txt
|
|
12
11
|
Keywords: benchmark,comparison,fitting,least squares,optimisation
|
|
13
12
|
Classifier: License :: OSI Approved :: BSD License
|
|
14
13
|
Classifier: Operating System :: OS Independent
|
|
15
14
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Requires-Python: >=3.
|
|
17
|
-
Requires-Dist: codecarbon
|
|
15
|
+
Requires-Python: >=3.9.1
|
|
16
|
+
Requires-Dist: codecarbon<2.7,>=2.5.1
|
|
18
17
|
Requires-Dist: configparser
|
|
19
18
|
Requires-Dist: dash
|
|
20
19
|
Requires-Dist: docutils
|
|
21
20
|
Requires-Dist: jinja2
|
|
22
21
|
Requires-Dist: lxml
|
|
23
22
|
Requires-Dist: matplotlib>=2.0
|
|
24
|
-
Requires-Dist: numpy
|
|
23
|
+
Requires-Dist: numpy
|
|
25
24
|
Requires-Dist: pandas>=1.3
|
|
26
25
|
Requires-Dist: plotly>=5.0.0
|
|
27
26
|
Requires-Dist: scipy>=0.18
|
|
@@ -31,18 +30,15 @@ Requires-Dist: bumps>=0.9.0; extra == 'bumps'
|
|
|
31
30
|
Provides-Extra: dev
|
|
32
31
|
Requires-Dist: coverage[toml]>=6.3; extra == 'dev'
|
|
33
32
|
Requires-Dist: coveralls; extra == 'dev'
|
|
34
|
-
Requires-Dist: flake8==3.9.2; extra == 'dev'
|
|
35
33
|
Requires-Dist: iminuit>=2.25.2; extra == 'dev'
|
|
36
34
|
Requires-Dist: pandas; extra == 'dev'
|
|
37
35
|
Requires-Dist: parameterized; extra == 'dev'
|
|
38
36
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
39
|
-
Requires-Dist: pylint-exit; extra == 'dev'
|
|
40
|
-
Requires-Dist: pylint==2.9.5; extra == 'dev'
|
|
41
37
|
Requires-Dist: pytest; extra == 'dev'
|
|
42
38
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
43
40
|
Provides-Extra: dfo
|
|
44
41
|
Requires-Dist: dfo-ls; extra == 'dfo'
|
|
45
|
-
Requires-Dist: dfogn; extra == 'dfo'
|
|
46
42
|
Provides-Extra: gofit
|
|
47
43
|
Requires-Dist: gofit; extra == 'gofit'
|
|
48
44
|
Provides-Extra: gradient-free
|
|
@@ -72,21 +68,22 @@ Requires-Dist: sasmodels; extra == 'sas'
|
|
|
72
68
|
Requires-Dist: tinycc; (platform_system == 'Windows') and extra == 'sas'
|
|
73
69
|
Description-Content-Type: text/markdown
|
|
74
70
|
|
|
75
|
-
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.
|
|
76
|
-
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.
|
|
77
|
-
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.2.0)
|
|
72
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.2.0)
|
|
73
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
|
|
74
|
+
[](https://fitbenchmarking.readthedocs.io/en/v1.2.0)
|
|
78
75
|
[](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
|
|
79
76
|
[](https://slack.com/)
|
|
80
|
-
[](https://doi.org/10.5281/zenodo.11198140)
|
|
81
78
|
[](https://doi.org/10.21105/joss.03127)
|
|
82
79
|
# FitBenchmarking
|
|
83
80
|
|
|
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
|
|
81
|
+
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.
|
|
85
82
|
|
|
86
|
-
- **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
87
|
-
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
88
|
-
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
89
|
-
- **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.
|
|
83
|
+
- **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/install_instructions/index.html
|
|
84
|
+
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/index.html
|
|
85
|
+
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/contributors/guidelines.html
|
|
86
|
+
- **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/tests.html
|
|
90
87
|
|
|
91
88
|
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:
|
|
92
89
|
|
|
@@ -1,18 +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.
|
|
3
|
-
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.2.0)
|
|
2
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.2.0)
|
|
3
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
|
|
4
|
+
[](https://fitbenchmarking.readthedocs.io/en/v1.2.0)
|
|
4
5
|
[](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
|
|
5
6
|
[](https://slack.com/)
|
|
6
|
-
[](https://doi.org/10.5281/zenodo.11198140)
|
|
7
8
|
[](https://doi.org/10.21105/joss.03127)
|
|
8
9
|
# FitBenchmarking
|
|
9
10
|
|
|
10
|
-
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
|
|
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.
|
|
11
12
|
|
|
12
|
-
- **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
13
|
-
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
14
|
-
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.
|
|
15
|
-
- **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.2.0/users/install_instructions/index.html
|
|
14
|
+
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/index.html
|
|
15
|
+
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.2.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.2.0/users/tests.html
|
|
16
17
|
|
|
17
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:
|
|
18
19
|
|
|
@@ -5,6 +5,7 @@ For more information on usage type fitbenchmarking --help
|
|
|
5
5
|
or for more general information, see the online docs at
|
|
6
6
|
docs.fitbenchmarking.com.
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import json
|
|
9
10
|
import os
|
|
10
11
|
import sys
|
|
@@ -12,8 +13,11 @@ import textwrap
|
|
|
12
13
|
from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
|
13
14
|
|
|
14
15
|
from fitbenchmarking.cli.exception_handler import exception_handler
|
|
15
|
-
from fitbenchmarking.core.results_output import (
|
|
16
|
-
|
|
16
|
+
from fitbenchmarking.core.results_output import (
|
|
17
|
+
create_index_page,
|
|
18
|
+
open_browser,
|
|
19
|
+
save_results,
|
|
20
|
+
)
|
|
17
21
|
from fitbenchmarking.utils.checkpoint import Checkpoint
|
|
18
22
|
from fitbenchmarking.utils.options import find_options_file
|
|
19
23
|
|
|
@@ -27,84 +31,110 @@ def get_parser() -> ArgumentParser:
|
|
|
27
31
|
"""
|
|
28
32
|
|
|
29
33
|
description = (
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
"This is a tool for working with checkpoint files generated during a "
|
|
35
|
+
"FitBenchmarking run."
|
|
32
36
|
)
|
|
33
37
|
|
|
34
38
|
parser = ArgumentParser(
|
|
35
|
-
prog=
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
prog="fitbenchmarking-cp",
|
|
40
|
+
add_help=True,
|
|
41
|
+
description=description,
|
|
42
|
+
formatter_class=RawDescriptionHelpFormatter,
|
|
43
|
+
)
|
|
44
|
+
parser.add_argument(
|
|
45
|
+
"-d",
|
|
46
|
+
"--debug-mode",
|
|
47
|
+
default=False,
|
|
48
|
+
action="store_true",
|
|
49
|
+
help="Enable debug mode (prints traceback).",
|
|
50
|
+
)
|
|
41
51
|
|
|
42
52
|
subparsers = parser.add_subparsers(
|
|
43
|
-
metavar=
|
|
44
|
-
dest=
|
|
45
|
-
help=
|
|
46
|
-
|
|
47
|
-
|
|
53
|
+
metavar="ACTION",
|
|
54
|
+
dest="subprog",
|
|
55
|
+
help=(
|
|
56
|
+
"Which action should be performed? "
|
|
57
|
+
"For more information on options use "
|
|
58
|
+
"`fitbenchmarking-cp ACTION -h`"
|
|
59
|
+
),
|
|
60
|
+
)
|
|
48
61
|
|
|
49
|
-
report_epilog = textwrap.dedent(
|
|
62
|
+
report_epilog = textwrap.dedent("""
|
|
50
63
|
Usage Examples:
|
|
51
64
|
|
|
52
65
|
$ fitbenchmarking-cp report
|
|
53
66
|
$ fitbenchmarking-cp report -o examples/options_template.ini
|
|
54
67
|
$ fitbenchmarking-cp report -f results/checkpoint
|
|
55
|
-
|
|
68
|
+
""")
|
|
56
69
|
report = subparsers.add_parser(
|
|
57
|
-
|
|
58
|
-
description=
|
|
59
|
-
help=
|
|
60
|
-
epilog=report_epilog
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
"report",
|
|
71
|
+
description="Generate a report from a checkpoint file",
|
|
72
|
+
help="Generate a report from a checkpoint file",
|
|
73
|
+
epilog=report_epilog,
|
|
74
|
+
)
|
|
75
|
+
report.add_argument(
|
|
76
|
+
"-f",
|
|
77
|
+
"--filename",
|
|
78
|
+
metavar="CHECKPOINT_FILE",
|
|
79
|
+
default="",
|
|
80
|
+
help=(
|
|
81
|
+
"The path to a fitbenchmarking checkpoint file. "
|
|
82
|
+
"If omitted, this will be taken from the options file."
|
|
83
|
+
),
|
|
84
|
+
)
|
|
85
|
+
report.add_argument(
|
|
86
|
+
"-o",
|
|
87
|
+
"--options-file",
|
|
88
|
+
metavar="OPTIONS_FILE",
|
|
89
|
+
default="",
|
|
90
|
+
help="The path to a fitbenchmarking options file",
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
merge_epilog = textwrap.dedent("""
|
|
73
94
|
Usage Examples:
|
|
74
95
|
|
|
75
96
|
$ fitbenchmarking-cp merge -f old_results/checkpoint.json \
|
|
76
97
|
to_add/checkpoint.json
|
|
77
98
|
$ fitbenchmarking-cp merge -f cp1 cp2 cp3 cp4 -o \
|
|
78
99
|
new_results/checkpoint.json
|
|
79
|
-
|
|
100
|
+
""")
|
|
80
101
|
merge_parser = subparsers.add_parser(
|
|
81
|
-
|
|
82
|
-
description=
|
|
83
|
-
help=
|
|
84
|
-
epilog=merge_epilog
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
102
|
+
"merge",
|
|
103
|
+
description="Merge multiple checkpoint files into one",
|
|
104
|
+
help="Merge multiple checkpoint files into one",
|
|
105
|
+
epilog=merge_epilog,
|
|
106
|
+
)
|
|
107
|
+
merge_parser.add_argument(
|
|
108
|
+
"-f",
|
|
109
|
+
"--files",
|
|
110
|
+
metavar="FILES",
|
|
111
|
+
nargs="+",
|
|
112
|
+
help="The checkpoint files to merge",
|
|
113
|
+
)
|
|
114
|
+
merge_parser.add_argument(
|
|
115
|
+
"-o",
|
|
116
|
+
"--output-filename",
|
|
117
|
+
metavar="OUTPUT",
|
|
118
|
+
default="checkpoint.json",
|
|
119
|
+
help="The name of the merged checkpoint file",
|
|
120
|
+
)
|
|
94
121
|
merge_parser.add_argument(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
122
|
+
"-s",
|
|
123
|
+
"--strategy",
|
|
124
|
+
metavar="STRATEGY",
|
|
125
|
+
default="first",
|
|
126
|
+
choices=["first", "last", "accuracy", "runtime", "energy"],
|
|
127
|
+
help=(
|
|
128
|
+
"The merge strategy to use when dealing with conflicts. "
|
|
129
|
+
"Selecting accuracy, energy, or runtime will select for the "
|
|
130
|
+
"lowest from conflicting runs."
|
|
131
|
+
),
|
|
132
|
+
)
|
|
102
133
|
return parser
|
|
103
134
|
|
|
104
135
|
|
|
105
136
|
@exception_handler
|
|
106
|
-
def generate_report(options_file=
|
|
107
|
-
# pylint: disable=unused-argument
|
|
137
|
+
def generate_report(options_file="", additional_options=None, debug=False):
|
|
108
138
|
"""
|
|
109
139
|
Generate the fitting reports and tables for a checkpoint file.
|
|
110
140
|
|
|
@@ -118,21 +148,24 @@ def generate_report(options_file='', additional_options=None, debug=False):
|
|
|
118
148
|
if additional_options is None:
|
|
119
149
|
additional_options = {}
|
|
120
150
|
|
|
121
|
-
options = find_options_file(
|
|
122
|
-
|
|
151
|
+
options = find_options_file(
|
|
152
|
+
options_file=options_file, additional_options=additional_options
|
|
153
|
+
)
|
|
123
154
|
|
|
124
155
|
checkpoint = Checkpoint(options=options)
|
|
125
|
-
results, unselected_minimizers, failed_problems = checkpoint.load()
|
|
156
|
+
results, unselected_minimizers, failed_problems, config = checkpoint.load()
|
|
126
157
|
|
|
127
158
|
all_dirs = []
|
|
128
159
|
pp_dfs_all_prob_sets = {}
|
|
129
|
-
for label in results:
|
|
160
|
+
for label in results:
|
|
130
161
|
directory, pp_dfs = save_results(
|
|
131
162
|
group_name=label,
|
|
132
163
|
results=results[label],
|
|
133
164
|
options=options,
|
|
134
165
|
failed_problems=failed_problems[label],
|
|
135
|
-
unselected_minimizers=unselected_minimizers[label]
|
|
166
|
+
unselected_minimizers=unselected_minimizers[label],
|
|
167
|
+
config=config,
|
|
168
|
+
)
|
|
136
169
|
|
|
137
170
|
pp_dfs_all_prob_sets[label] = pp_dfs
|
|
138
171
|
|
|
@@ -144,10 +177,12 @@ def generate_report(options_file='', additional_options=None, debug=False):
|
|
|
144
177
|
|
|
145
178
|
|
|
146
179
|
@exception_handler
|
|
147
|
-
def merge_data_sets(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
180
|
+
def merge_data_sets(
|
|
181
|
+
files: list[str],
|
|
182
|
+
output: str,
|
|
183
|
+
strategy: str = "first",
|
|
184
|
+
debug: bool = False,
|
|
185
|
+
):
|
|
151
186
|
"""
|
|
152
187
|
Combine multiple checkpoint files into one following these rules:
|
|
153
188
|
1) The output will be the same as combining them one at a time in
|
|
@@ -205,16 +240,16 @@ def merge_data_sets(files: 'list[str]', output: 'str',
|
|
|
205
240
|
return
|
|
206
241
|
|
|
207
242
|
print(f"Loading {files[0]}...")
|
|
208
|
-
with open(files[0],
|
|
243
|
+
with open(files[0], encoding="utf-8") as f:
|
|
209
244
|
A = json.load(f)
|
|
210
245
|
for to_merge in files[1:]:
|
|
211
246
|
print(f"Merging {to_merge}...")
|
|
212
|
-
with open(to_merge,
|
|
247
|
+
with open(to_merge, encoding="utf-8") as f:
|
|
213
248
|
B = json.load(f)
|
|
214
249
|
A = merge(A, B, strategy=strategy)
|
|
215
250
|
|
|
216
|
-
print(f
|
|
217
|
-
with open(output,
|
|
251
|
+
print(f"Writing to {output}...")
|
|
252
|
+
with open(output, "w", encoding="utf-8") as f:
|
|
218
253
|
json.dump(A, f, indent=2)
|
|
219
254
|
|
|
220
255
|
|
|
@@ -233,28 +268,31 @@ def merge(A, B, strategy):
|
|
|
233
268
|
:return: The merged checkpoint data.
|
|
234
269
|
:rtype: dict[str, any]
|
|
235
270
|
"""
|
|
236
|
-
if strategy ==
|
|
271
|
+
if strategy == "last":
|
|
237
272
|
A, B = B, A
|
|
238
273
|
for k in B:
|
|
239
274
|
if k not in A:
|
|
240
275
|
A[k] = B[k]
|
|
241
276
|
continue
|
|
242
|
-
A[k][
|
|
243
|
-
|
|
277
|
+
A[k]["problems"], update_names = merge_problems(
|
|
278
|
+
A[k]["problems"], B[k]["problems"]
|
|
279
|
+
)
|
|
244
280
|
if update_names:
|
|
245
|
-
for r in B[k][
|
|
246
|
-
if r[
|
|
247
|
-
r[
|
|
248
|
-
A[k][
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
A[k][
|
|
252
|
-
|
|
281
|
+
for r in B[k]["results"]:
|
|
282
|
+
if r["name"] in update_names:
|
|
283
|
+
r["name"] = update_names[r["name"]]
|
|
284
|
+
A[k]["results"] = merge_results(
|
|
285
|
+
A[k]["results"], B[k]["results"], strategy=strategy
|
|
286
|
+
)
|
|
287
|
+
A[k]["failed_problems"] = []
|
|
288
|
+
A[k]["unselected_minimisers"] = {
|
|
289
|
+
r["software_tag"]: [] for r in A[k]["results"]
|
|
290
|
+
}
|
|
253
291
|
|
|
254
292
|
return A
|
|
255
293
|
|
|
256
294
|
|
|
257
|
-
def merge_problems(A:
|
|
295
|
+
def merge_problems(A: dict[str, dict], B: dict[str, dict]):
|
|
258
296
|
"""
|
|
259
297
|
Merge the problem sections of 2 checkpoint files.
|
|
260
298
|
If problems have matching names but different values, the problem from
|
|
@@ -276,26 +314,28 @@ def merge_problems(A: 'dict[str, dict]', B: 'dict[str, dict]'):
|
|
|
276
314
|
for k, prob in B.items():
|
|
277
315
|
# Handle case where A/B contains k, k*, k**, ... from previous merges
|
|
278
316
|
orig_k = k
|
|
279
|
-
k = k.rstrip(
|
|
280
|
-
prob[
|
|
281
|
-
prob[
|
|
317
|
+
k = k.rstrip("*")
|
|
318
|
+
prob["name"] = prob["name"].rstrip("*")
|
|
319
|
+
prob["problem_tag"] = prob["problem_tag"].rstrip("*")
|
|
282
320
|
while k in A:
|
|
283
321
|
A_prob = A[k]
|
|
284
322
|
# Identical - take problem from A
|
|
285
|
-
if (
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
323
|
+
if (
|
|
324
|
+
A_prob["ini_params"] == prob["ini_params"]
|
|
325
|
+
and A_prob["ini_y"] == prob["ini_y"]
|
|
326
|
+
and A_prob["x"] == prob["x"]
|
|
327
|
+
and A_prob["y"] == prob["y"]
|
|
328
|
+
and A_prob["e"] == prob["e"]
|
|
329
|
+
):
|
|
290
330
|
if orig_k != k:
|
|
291
331
|
update_keys[orig_k] = k
|
|
292
332
|
break
|
|
293
333
|
|
|
294
334
|
# Agree on name but aren't identical
|
|
295
|
-
name_change =
|
|
335
|
+
name_change = "{}*"
|
|
296
336
|
k = name_change.format(k)
|
|
297
|
-
prob[
|
|
298
|
-
prob[
|
|
337
|
+
prob["name"] = name_change.format(prob["name"])
|
|
338
|
+
prob["problem_tag"] = name_change.format(prob["problem_tag"])
|
|
299
339
|
|
|
300
340
|
else: # k not in A (no break called)
|
|
301
341
|
A[k] = prob
|
|
@@ -306,7 +346,7 @@ def merge_problems(A: 'dict[str, dict]', B: 'dict[str, dict]'):
|
|
|
306
346
|
return A, update_keys
|
|
307
347
|
|
|
308
348
|
|
|
309
|
-
def merge_results(A:
|
|
349
|
+
def merge_results(A: list[dict], B: list[dict], strategy: str):
|
|
310
350
|
"""
|
|
311
351
|
Merge the results sections of 2 checkpoint files.
|
|
312
352
|
|
|
@@ -321,24 +361,29 @@ def merge_results(A: 'list[dict]', B: 'list[dict]', strategy: str):
|
|
|
321
361
|
:return: Merged results list
|
|
322
362
|
:rtype: list[dict[str, any]]
|
|
323
363
|
"""
|
|
324
|
-
|
|
364
|
+
|
|
365
|
+
def key_gen(k: dict):
|
|
325
366
|
"""
|
|
326
367
|
Get a uid for a result entry in cp file.
|
|
327
368
|
"""
|
|
328
|
-
return (
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
369
|
+
return (
|
|
370
|
+
k["name"],
|
|
371
|
+
k["software_tag"],
|
|
372
|
+
k["minimizer_tag"],
|
|
373
|
+
k["jacobian_tag"],
|
|
374
|
+
k["hessian_tag"],
|
|
375
|
+
k["costfun_tag"],
|
|
376
|
+
)
|
|
334
377
|
|
|
335
378
|
A_key = {key_gen(r): i for i, r in enumerate(A)}
|
|
336
379
|
|
|
337
380
|
for res in B:
|
|
338
381
|
key = key_gen(res)
|
|
339
382
|
if key in A_key:
|
|
340
|
-
if (
|
|
341
|
-
|
|
383
|
+
if (
|
|
384
|
+
strategy in ["accuracy", "energy", "runtime"]
|
|
385
|
+
and A[A_key[key]][strategy] > res[strategy]
|
|
386
|
+
):
|
|
342
387
|
A[A_key[key]] = res
|
|
343
388
|
else:
|
|
344
389
|
A_key[key] = len(A)
|
|
@@ -357,18 +402,20 @@ def main():
|
|
|
357
402
|
|
|
358
403
|
additional_options = {}
|
|
359
404
|
|
|
360
|
-
if args.subprog ==
|
|
405
|
+
if args.subprog == "report":
|
|
361
406
|
if args.filename:
|
|
362
|
-
additional_options[
|
|
363
|
-
generate_report(
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
elif args.subprog ==
|
|
367
|
-
merge_data_sets(
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
407
|
+
additional_options["checkpoint_filename"] = args.filename
|
|
408
|
+
generate_report(
|
|
409
|
+
args.options_file, additional_options, debug=args.debug_mode
|
|
410
|
+
)
|
|
411
|
+
elif args.subprog == "merge":
|
|
412
|
+
merge_data_sets(
|
|
413
|
+
files=args.files,
|
|
414
|
+
output=args.output_filename,
|
|
415
|
+
strategy=args.strategy,
|
|
416
|
+
debug=args.debug_mode,
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
if __name__ == "__main__":
|
|
374
421
|
main()
|
|
@@ -3,8 +3,8 @@ This file holds an exception handler decorator that should wrap all cli
|
|
|
3
3
|
functions to provide cleaner output.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
from functools import wraps
|
|
7
6
|
import sys
|
|
7
|
+
from functools import wraps
|
|
8
8
|
|
|
9
9
|
from fitbenchmarking.utils import exceptions
|
|
10
10
|
from fitbenchmarking.utils.log import get_logger
|
|
@@ -13,7 +13,6 @@ LOGGER = get_logger()
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def exception_handler(f):
|
|
16
|
-
# pylint: disable=W0703
|
|
17
16
|
"""
|
|
18
17
|
Decorator to simplify handling exceptions within FitBenchmarking
|
|
19
18
|
This will strip off any 'debug' inputs.
|
|
@@ -21,16 +20,18 @@ def exception_handler(f):
|
|
|
21
20
|
:param f: The function to wrap
|
|
22
21
|
:type f: python function
|
|
23
22
|
"""
|
|
23
|
+
|
|
24
24
|
@wraps(f)
|
|
25
25
|
def wrapped(*args, **kwargs):
|
|
26
|
-
debug = kwargs.get(
|
|
26
|
+
debug = kwargs.get("debug", False)
|
|
27
27
|
|
|
28
28
|
try:
|
|
29
29
|
return f(*args, **kwargs)
|
|
30
30
|
except exceptions.FitBenchmarkException as e:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
LOGGER.error(
|
|
32
|
+
"Error while running FitBenchmarking. Exiting. "
|
|
33
|
+
"See below for more information."
|
|
34
|
+
)
|
|
34
35
|
if debug:
|
|
35
36
|
raise
|
|
36
37
|
|
|
@@ -38,7 +39,7 @@ def exception_handler(f):
|
|
|
38
39
|
sys.exit(1)
|
|
39
40
|
|
|
40
41
|
except Exception as e:
|
|
41
|
-
LOGGER.error(
|
|
42
|
+
LOGGER.error("Unknown exception. Exiting.")
|
|
42
43
|
if debug:
|
|
43
44
|
raise
|
|
44
45
|
|