FitBenchmarking 1.1.0__tar.gz → 1.3.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.3.0}/PKG-INFO +17 -19
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/README.md +10 -9
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/__main__.py +2 -1
- fitbenchmarking-1.3.0/fitbenchmarking/cli/checkpoint_handler.py +440 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cli/exception_handler.py +8 -7
- fitbenchmarking-1.3.0/fitbenchmarking/cli/main.py +603 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/base_controller.py +213 -120
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/bumps_controller.py +53 -50
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/ceres_controller.py +212 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/controller_factory.py +28 -18
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/dfo_controller.py +37 -38
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/galahad_controller.py +243 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/gofit_controller.py +60 -39
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/gradient_free_controller.py +172 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/gsl_controller.py +71 -57
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/horace_controller.py +43 -39
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/levmar_controller.py +28 -25
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/lmfit_controller.py +196 -0
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/mantid_controller.py +440 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_controller.py +27 -21
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/matlab_curve_controller.py +124 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_mixin.py +42 -29
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_opt_controller.py +64 -43
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_stats_controller.py +28 -22
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/minuit_controller.py +36 -26
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/nlopt_controller.py +189 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/paramonte_controller.py +34 -23
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/ralfit_controller.py +82 -45
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/scipy_controller.py +162 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/scipy_go_controller.py +43 -38
- fitbenchmarking-1.3.0/fitbenchmarking/controllers/scipy_leastsq_controller.py +85 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/scipy_ls_controller.py +38 -28
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/theseus_controller.py +66 -54
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/core/fitting_benchmarking.py +273 -173
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/core/results_output.py +397 -263
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/base_cost_func.py +15 -7
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/cost_func_factory.py +17 -9
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/hellinger_nlls_cost_func.py +16 -9
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/loglike_nlls_cost_func.py +1 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/nlls_base_cost_func.py +4 -2
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/nlls_cost_func.py +7 -4
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/poisson_cost_func.py +19 -10
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/weighted_nlls_cost_func.py +13 -5
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/analytic_hessian.py +4 -2
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/base_hessian.py +3 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/best_available_hessian.py +15 -10
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/hessian_factory.py +17 -12
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/numdifftools_hessian.py +2 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/scipy_hessian.py +12 -7
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/analytic_jacobian.py +28 -3
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/base_jacobian.py +3 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/best_available_jacobian.py +15 -10
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/default_jacobian.py +1 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/jacobian_factory.py +17 -12
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/numdifftools_jacobian.py +2 -2
- fitbenchmarking-1.3.0/fitbenchmarking/jacobian/scipy_jacobian.py +85 -0
- fitbenchmarking-1.3.0/fitbenchmarking/parsing/bal_parser.py +202 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/base_parser.py +4 -4
- fitbenchmarking-1.3.0/fitbenchmarking/parsing/fitbenchmark_parser.py +601 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/fitting_problem.py +85 -72
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/hogben_parser.py +12 -9
- fitbenchmarking-1.3.0/fitbenchmarking/parsing/horace_parser.py +380 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/ivp_parser.py +16 -13
- fitbenchmarking-1.3.0/fitbenchmarking/parsing/mantid_parser.py +137 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/mantiddev_parser.py +61 -82
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/nist_data_functions.py +59 -48
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/nist_parser.py +79 -55
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/parser_factory.py +35 -26
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/sasview_parser.py +2 -2
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/acc_table.py +3 -1
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/base_table.py +359 -154
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/compare_table.py +70 -33
- fitbenchmarking-1.1.0/fitbenchmarking/results_processing/emissions_table.py → fitbenchmarking-1.3.0/fitbenchmarking/results_processing/energy_usage_table.py +13 -14
- fitbenchmarking-1.3.0/fitbenchmarking/results_processing/fitting_report.py +153 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/local_min_table.py +57 -34
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/performance_profiler.py +154 -148
- fitbenchmarking-1.3.0/fitbenchmarking/results_processing/plots.py +876 -0
- fitbenchmarking-1.3.0/fitbenchmarking/results_processing/problem_summary_page.py +209 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/runtime_table.py +26 -2
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/tables.py +113 -80
- fitbenchmarking-1.3.0/fitbenchmarking/templates/css/custom_style.css +170 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/fitting_report_template.html +175 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/images/accuracy.png +0 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/images/compare.png +0 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/images/energy.png +0 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/images/fitbenchmarking_logo.png +0 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/images/local_min.png +0 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/images/runtime.png +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/index_page.html +1 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/js/plotly.js +3879 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/js/table.js +546 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/problem_index_page.html +62 -0
- fitbenchmarking-1.3.0/fitbenchmarking/templates/problem_summary_page_template.html +274 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/table_template.html +45 -32
- fitbenchmarking-1.3.0/fitbenchmarking/utils/checkpoint.py +393 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/create_dirs.py +5 -3
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/debug.py +11 -8
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/exceptions.py +112 -47
- fitbenchmarking-1.3.0/fitbenchmarking/utils/fitbm_result.py +553 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/log.py +18 -11
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/matlab_engine.py +6 -6
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/misc.py +20 -17
- fitbenchmarking-1.3.0/fitbenchmarking/utils/options.py +926 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/output_grabber.py +15 -12
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/timer.py +2 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/write_files.py +12 -6
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/pyproject.toml +47 -40
- fitbenchmarking-1.1.0/fitbenchmarking/cli/checkpoint_handler.py +0 -374
- 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/parsing/fitbenchmark_parser.py +0 -547
- fitbenchmarking-1.1.0/fitbenchmarking/parsing/horace_parser.py +0 -216
- fitbenchmarking-1.1.0/fitbenchmarking/parsing/mantid_parser.py +0 -20
- fitbenchmarking-1.1.0/fitbenchmarking/results_processing/fitting_report.py +0 -131
- fitbenchmarking-1.1.0/fitbenchmarking/results_processing/plots.py +0 -314
- fitbenchmarking-1.1.0/fitbenchmarking/results_processing/problem_summary_page.py +0 -149
- fitbenchmarking-1.1.0/fitbenchmarking/templates/css/custom_style.css +0 -73
- fitbenchmarking-1.1.0/fitbenchmarking/templates/fitting_report_template.html +0 -110
- fitbenchmarking-1.1.0/fitbenchmarking/templates/js/plotly.js +0 -8
- fitbenchmarking-1.1.0/fitbenchmarking/templates/js/table.js +0 -142
- fitbenchmarking-1.1.0/fitbenchmarking/templates/problem_index_page.html +0 -51
- fitbenchmarking-1.1.0/fitbenchmarking/templates/problem_summary_page_template.html +0 -180
- 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/fitbm_result.py +0 -426
- fitbenchmarking-1.1.0/fitbenchmarking/utils/options.py +0 -716
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/.gitignore +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/LICENSE.txt +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/ENSO.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Gauss3.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Hahn1.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Kirby2.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos1.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos2.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/META.txt +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/MGH17.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1c.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1d.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Bennett5.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/BoxBOD.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Eckerle4.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/META.txt +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH09.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH10.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat42.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat43.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Thurber.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut1.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut2.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/DanWood.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss1.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss2.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Lanczos3.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/META.txt +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1a.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1b.dat +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.hes +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.jac +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cli/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_curve_controller/eval_r.m +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/core/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Bold.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-BoldItalic.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Italic.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Light.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-LightItalic.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Medium.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-MediumItalic.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Regular.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Bold.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-BoldItalic.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Italic.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Light.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-LightItalic.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Medium.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-MediumItalic.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Regular.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Bold.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-BoldItalic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Italic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Light.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-LightItalic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Medium.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-MediumItalic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Regular.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Bold.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-BoldItalic.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Italic.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Light.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-LightItalic.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Medium.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-MediumItalic.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Regular.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.eot +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.svg +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.ttf +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff2 +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/scripts/NIST-Jacobians.nb +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/__init__.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/dropdown_style.css +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/main_style.css +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/math_style.css +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/table_style.css +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/dropdown.js +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/tex-mml-chtml.js +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/style_sheet.py +0 -0
- {fitbenchmarking-1.1.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/__init__.py +0 -0
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: FitBenchmarking
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.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
|
|
7
7
|
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
|
-
Author:
|
|
10
|
+
Author: FitBenchmarking Team
|
|
11
11
|
License-File: LICENSE.txt
|
|
12
12
|
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.9.1
|
|
17
|
+
Requires-Dist: codecarbon<2.7,>=2.5.1
|
|
18
18
|
Requires-Dist: configparser
|
|
19
19
|
Requires-Dist: dash
|
|
20
20
|
Requires-Dist: docutils
|
|
21
21
|
Requires-Dist: jinja2
|
|
22
22
|
Requires-Dist: lxml
|
|
23
23
|
Requires-Dist: matplotlib>=2.0
|
|
24
|
-
Requires-Dist: numpy
|
|
24
|
+
Requires-Dist: numpy
|
|
25
25
|
Requires-Dist: pandas>=1.3
|
|
26
26
|
Requires-Dist: plotly>=5.0.0
|
|
27
27
|
Requires-Dist: scipy>=0.18
|
|
@@ -31,18 +31,15 @@ Requires-Dist: bumps>=0.9.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'
|
|
34
|
-
Requires-Dist: flake8==3.9.2; extra == 'dev'
|
|
35
34
|
Requires-Dist: iminuit>=2.25.2; extra == 'dev'
|
|
36
35
|
Requires-Dist: pandas; extra == 'dev'
|
|
37
36
|
Requires-Dist: parameterized; extra == 'dev'
|
|
38
37
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
39
|
-
Requires-Dist: pylint-exit; extra == 'dev'
|
|
40
|
-
Requires-Dist: pylint==2.9.5; extra == 'dev'
|
|
41
38
|
Requires-Dist: pytest; extra == 'dev'
|
|
42
39
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
43
41
|
Provides-Extra: dfo
|
|
44
42
|
Requires-Dist: dfo-ls; extra == 'dfo'
|
|
45
|
-
Requires-Dist: dfogn; extra == 'dfo'
|
|
46
43
|
Provides-Extra: gofit
|
|
47
44
|
Requires-Dist: gofit; extra == 'gofit'
|
|
48
45
|
Provides-Extra: gradient-free
|
|
@@ -72,21 +69,22 @@ Requires-Dist: sasmodels; extra == 'sas'
|
|
|
72
69
|
Requires-Dist: tinycc; (platform_system == 'Windows') and extra == 'sas'
|
|
73
70
|
Description-Content-Type: text/markdown
|
|
74
71
|
|
|
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.3.0)
|
|
73
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.3.0)
|
|
74
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
|
|
75
|
+
[](https://fitbenchmarking.readthedocs.io/en/v1.3.0)
|
|
78
76
|
[](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
|
|
79
77
|
[](https://slack.com/)
|
|
80
|
-
[](https://doi.org/10.5281/zenodo.14224242)
|
|
81
79
|
[](https://doi.org/10.21105/joss.03127)
|
|
82
80
|
# FitBenchmarking
|
|
83
81
|
|
|
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
|
|
82
|
+
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
83
|
|
|
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.
|
|
84
|
+
- **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.3.0/users/install_instructions/index.html
|
|
85
|
+
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.3.0/users/index.html
|
|
86
|
+
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.3.0/contributors/guidelines.html
|
|
87
|
+
- **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.3.0/users/tests.html
|
|
90
88
|
|
|
91
89
|
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
90
|
|
|
@@ -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.3.0)
|
|
2
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.3.0)
|
|
3
|
+
[](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
|
|
4
|
+
[](https://fitbenchmarking.readthedocs.io/en/v1.3.0)
|
|
4
5
|
[](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
|
|
5
6
|
[](https://slack.com/)
|
|
6
|
-
[](https://doi.org/10.5281/zenodo.14224242)
|
|
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.3.0/users/install_instructions/index.html
|
|
14
|
+
- **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.3.0/users/index.html
|
|
15
|
+
- **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.3.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.3.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
|
|
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This is a command line tool for handling checkpoint files for the
|
|
3
|
+
FitBenchmarking software package.
|
|
4
|
+
For more information on usage type fitbenchmarking --help
|
|
5
|
+
or for more general information, see the online docs at
|
|
6
|
+
docs.fitbenchmarking.com.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import json
|
|
10
|
+
import os
|
|
11
|
+
import sys
|
|
12
|
+
import textwrap
|
|
13
|
+
from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
|
14
|
+
|
|
15
|
+
from fitbenchmarking.cli.exception_handler import exception_handler
|
|
16
|
+
from fitbenchmarking.core.results_output import (
|
|
17
|
+
create_index_page,
|
|
18
|
+
open_browser,
|
|
19
|
+
save_results,
|
|
20
|
+
)
|
|
21
|
+
from fitbenchmarking.utils.checkpoint import Checkpoint
|
|
22
|
+
from fitbenchmarking.utils.options import find_options_file
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def get_parser() -> ArgumentParser:
|
|
26
|
+
"""
|
|
27
|
+
Creates and returns a parser for the args.
|
|
28
|
+
|
|
29
|
+
:return: Configured argument parser
|
|
30
|
+
:rtype: ArgumentParser
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
description = (
|
|
34
|
+
"This is a tool for working with checkpoint files generated during a "
|
|
35
|
+
"FitBenchmarking run."
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
parser = ArgumentParser(
|
|
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
|
+
)
|
|
51
|
+
|
|
52
|
+
subparsers = parser.add_subparsers(
|
|
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
|
+
)
|
|
61
|
+
|
|
62
|
+
report_epilog = textwrap.dedent("""
|
|
63
|
+
Usage Examples:
|
|
64
|
+
|
|
65
|
+
$ fitbenchmarking-cp report
|
|
66
|
+
$ fitbenchmarking-cp report -o examples/options_template.ini
|
|
67
|
+
$ fitbenchmarking-cp report -f results/checkpoint
|
|
68
|
+
""")
|
|
69
|
+
report = subparsers.add_parser(
|
|
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("""
|
|
94
|
+
Usage Examples:
|
|
95
|
+
|
|
96
|
+
$ fitbenchmarking-cp merge -f old_results/checkpoint.json \
|
|
97
|
+
to_add/checkpoint.json
|
|
98
|
+
$ fitbenchmarking-cp merge -f cp1 cp2 cp3 cp4 -o \
|
|
99
|
+
new_results/checkpoint.json
|
|
100
|
+
""")
|
|
101
|
+
merge_parser = subparsers.add_parser(
|
|
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
|
+
)
|
|
121
|
+
merge_parser.add_argument(
|
|
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
|
+
)
|
|
133
|
+
return parser
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
@exception_handler
|
|
137
|
+
def generate_report(options_file="", additional_options=None, debug=False):
|
|
138
|
+
"""
|
|
139
|
+
Generate the fitting reports and tables for a checkpoint file.
|
|
140
|
+
|
|
141
|
+
:param options_file: Path to an options file, defaults to ''
|
|
142
|
+
:type options_file: str, optional
|
|
143
|
+
:param additional_options: Extra options for the reporting.
|
|
144
|
+
Available keys are:
|
|
145
|
+
filename (str): The checkpoint file to use.
|
|
146
|
+
:type additional_options: dict, optional
|
|
147
|
+
"""
|
|
148
|
+
if additional_options is None:
|
|
149
|
+
additional_options = {}
|
|
150
|
+
|
|
151
|
+
options = find_options_file(
|
|
152
|
+
options_file=options_file, additional_options=additional_options
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
checkpoint = Checkpoint(options=options)
|
|
156
|
+
results, unselected_minimizers, failed_problems, config = checkpoint.load()
|
|
157
|
+
|
|
158
|
+
all_dirs = []
|
|
159
|
+
pp_dfs_all_prob_sets = {}
|
|
160
|
+
for label in results:
|
|
161
|
+
directory, pp_dfs = save_results(
|
|
162
|
+
group_name=label,
|
|
163
|
+
results=results[label],
|
|
164
|
+
options=options,
|
|
165
|
+
failed_problems=failed_problems[label],
|
|
166
|
+
unselected_minimizers=unselected_minimizers[label],
|
|
167
|
+
config=config,
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
pp_dfs_all_prob_sets[label] = pp_dfs
|
|
171
|
+
|
|
172
|
+
directory = os.path.relpath(path=directory, start=options.results_dir)
|
|
173
|
+
all_dirs.append(directory)
|
|
174
|
+
|
|
175
|
+
index_page = create_index_page(options, list(results), all_dirs)
|
|
176
|
+
open_browser(index_page, options, pp_dfs_all_prob_sets)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
@exception_handler
|
|
180
|
+
def merge_data_sets(
|
|
181
|
+
files: list[str],
|
|
182
|
+
output: str,
|
|
183
|
+
strategy: str = "first",
|
|
184
|
+
debug: bool = False,
|
|
185
|
+
):
|
|
186
|
+
"""
|
|
187
|
+
Combine multiple checkpoint files into one following these rules:
|
|
188
|
+
|
|
189
|
+
1) The output will be the same as combining them one at a time in
|
|
190
|
+
sequence. i.e. A + B + C = (A + B) + C
|
|
191
|
+
|
|
192
|
+
**Note:** The rules from here on will only reference A and B as
|
|
193
|
+
the relation is recursive.
|
|
194
|
+
|
|
195
|
+
2) Datasets
|
|
196
|
+
|
|
197
|
+
2a) Datasets in A and B are identical if they agree on the label
|
|
198
|
+
|
|
199
|
+
2b) If A and B contain identical datasets, the problems and results
|
|
200
|
+
are combined as below.
|
|
201
|
+
|
|
202
|
+
**Note:** The remainder of these rules assume that A and B are
|
|
203
|
+
identical datasets as the alternative is trivial.
|
|
204
|
+
|
|
205
|
+
3) Problems
|
|
206
|
+
|
|
207
|
+
3a) If problems in A and B agree on name, ini_params, ini_y, x, y,
|
|
208
|
+
and e then these problems are considered identical.
|
|
209
|
+
|
|
210
|
+
3b)If A and B share identical problems, the details not specified in
|
|
211
|
+
3a are taken from A.
|
|
212
|
+
|
|
213
|
+
3c) If problems in A and B are not identical but share a name, the
|
|
214
|
+
name of the project in B should be updated to "<problem_name>*".
|
|
215
|
+
|
|
216
|
+
4) Results
|
|
217
|
+
|
|
218
|
+
4a) If results in A and B have identical problems and agree on name,
|
|
219
|
+
software_tag, minimizer_tag, jacobian_tag, hessian_tag, and
|
|
220
|
+
costfun_tag they are considered identical.
|
|
221
|
+
|
|
222
|
+
4b) If A an B share identical results, the details not specified in 4a
|
|
223
|
+
are taken from A if strategy is 'first', or B if strategy is 'last'.
|
|
224
|
+
|
|
225
|
+
5) As tables are grids of results, combining arbitrary results can lead to
|
|
226
|
+
un-table-able checkpoint files.
|
|
227
|
+
|
|
228
|
+
This occurs when the problems in A and B are not all identical and the
|
|
229
|
+
set of combinations of software_tag, minimizer_tag, jacobian_tag,
|
|
230
|
+
hessian_tag, and costfun_tag for which there are results in each of A
|
|
231
|
+
and B are not identical.
|
|
232
|
+
|
|
233
|
+
**E.g.** B has a problem not in A and uses a minimizer for which there
|
|
234
|
+
are no results in A.
|
|
235
|
+
|
|
236
|
+
5a) If the resulting checkpoint file would have the above issue,
|
|
237
|
+
the checkpoints are incompatible.
|
|
238
|
+
|
|
239
|
+
5b) Incompatible checkpoint files can be combined but should raise
|
|
240
|
+
warnings and mark the dataset in the checkpoint file.
|
|
241
|
+
|
|
242
|
+
**Note:** Some datasets may be incompatible where others can be
|
|
243
|
+
successfully combined.
|
|
244
|
+
|
|
245
|
+
6) Unselected minimizers and failed problems will be discarded when
|
|
246
|
+
combining.
|
|
247
|
+
|
|
248
|
+
:param files: The files to combine.
|
|
249
|
+
:type files: list[str]
|
|
250
|
+
:param output: The name for the new checkpoint file.
|
|
251
|
+
:type output: str
|
|
252
|
+
:param strategy: The stategy for merging identical elements.
|
|
253
|
+
Options are 'first' or 'last'.
|
|
254
|
+
:type strategy: str
|
|
255
|
+
:param debug: Enable debugging output.
|
|
256
|
+
:type debug: bool
|
|
257
|
+
"""
|
|
258
|
+
if len(files) < 2:
|
|
259
|
+
return
|
|
260
|
+
|
|
261
|
+
print(f"Loading {files[0]}...")
|
|
262
|
+
with open(files[0], encoding="utf-8") as f:
|
|
263
|
+
A = json.load(f)
|
|
264
|
+
for to_merge in files[1:]:
|
|
265
|
+
print(f"Merging {to_merge}...")
|
|
266
|
+
with open(to_merge, encoding="utf-8") as f:
|
|
267
|
+
B = json.load(f)
|
|
268
|
+
A = merge(A, B, strategy=strategy)
|
|
269
|
+
|
|
270
|
+
print(f"Writing to {output}...")
|
|
271
|
+
with open(output, "w", encoding="utf-8") as f:
|
|
272
|
+
json.dump(A, f, indent=2)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
def merge(A, B, strategy):
|
|
276
|
+
"""
|
|
277
|
+
Merge the results from A and B
|
|
278
|
+
This function can corrupt A and B, they should be discarded after calling.
|
|
279
|
+
|
|
280
|
+
:param A: The first set of results to merge
|
|
281
|
+
:type A: dict[str, list[FittingResult]]
|
|
282
|
+
:param B: The set to merge into A
|
|
283
|
+
:type B: dict[str, list[FittingResult]]
|
|
284
|
+
:param strategy: The strategy to use to merge the results
|
|
285
|
+
:type strategy: str
|
|
286
|
+
|
|
287
|
+
:return: The merged checkpoint data.
|
|
288
|
+
:rtype: dict[str, any]
|
|
289
|
+
"""
|
|
290
|
+
if strategy == "last":
|
|
291
|
+
A, B = B, A
|
|
292
|
+
for k in B:
|
|
293
|
+
if k not in A:
|
|
294
|
+
A[k] = B[k]
|
|
295
|
+
continue
|
|
296
|
+
A[k]["problems"], update_names = merge_problems(
|
|
297
|
+
A[k]["problems"], B[k]["problems"]
|
|
298
|
+
)
|
|
299
|
+
if update_names:
|
|
300
|
+
for r in B[k]["results"]:
|
|
301
|
+
if r["name"] in update_names:
|
|
302
|
+
r["name"] = update_names[r["name"]]
|
|
303
|
+
A[k]["results"] = merge_results(
|
|
304
|
+
A[k]["results"], B[k]["results"], strategy=strategy
|
|
305
|
+
)
|
|
306
|
+
A[k]["failed_problems"] = []
|
|
307
|
+
A[k]["unselected_minimisers"] = {
|
|
308
|
+
r["software_tag"]: [] for r in A[k]["results"]
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return A
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
def merge_problems(A: dict[str, dict], B: dict[str, dict]):
|
|
315
|
+
"""
|
|
316
|
+
Merge the problem sections of 2 checkpoint files.
|
|
317
|
+
If problems have matching names but different values, the problem from
|
|
318
|
+
B will be suffixed with a "*".
|
|
319
|
+
|
|
320
|
+
In some cases this could lead to problems with several "*"s although this
|
|
321
|
+
seems unlikely for most use cases.
|
|
322
|
+
|
|
323
|
+
:param A: The first checkpoint problems dict to merge
|
|
324
|
+
:type A: dict[str, dict]
|
|
325
|
+
:param B: The second checkpoint problems dict to merge
|
|
326
|
+
:type B: dict[str, dict]
|
|
327
|
+
|
|
328
|
+
:return: The merged checkpoint problems and a list of problems that have
|
|
329
|
+
been renamed
|
|
330
|
+
:rtype: tuple[dict[str, dict[str, any]], list[str]]
|
|
331
|
+
"""
|
|
332
|
+
update_keys = {}
|
|
333
|
+
for k, prob in B.items():
|
|
334
|
+
# Handle case where A/B contains k, k*, k**, ... from previous merges
|
|
335
|
+
orig_k = k
|
|
336
|
+
k = k.rstrip("*")
|
|
337
|
+
prob["name"] = prob["name"].rstrip("*")
|
|
338
|
+
prob["problem_tag"] = prob["problem_tag"].rstrip("*")
|
|
339
|
+
while k in A:
|
|
340
|
+
A_prob = A[k]
|
|
341
|
+
# Identical - take problem from A
|
|
342
|
+
if (
|
|
343
|
+
A_prob["ini_params"] == prob["ini_params"]
|
|
344
|
+
and A_prob["ini_y"] == prob["ini_y"]
|
|
345
|
+
and A_prob["x"] == prob["x"]
|
|
346
|
+
and A_prob["y"] == prob["y"]
|
|
347
|
+
and A_prob["e"] == prob["e"]
|
|
348
|
+
):
|
|
349
|
+
if orig_k != k:
|
|
350
|
+
update_keys[orig_k] = k
|
|
351
|
+
break
|
|
352
|
+
|
|
353
|
+
# Agree on name but aren't identical
|
|
354
|
+
name_change = "{}*"
|
|
355
|
+
k = name_change.format(k)
|
|
356
|
+
prob["name"] = name_change.format(prob["name"])
|
|
357
|
+
prob["problem_tag"] = name_change.format(prob["problem_tag"])
|
|
358
|
+
|
|
359
|
+
else: # k not in A (no break called)
|
|
360
|
+
A[k] = prob
|
|
361
|
+
if orig_k != k:
|
|
362
|
+
update_keys[orig_k] = k
|
|
363
|
+
continue
|
|
364
|
+
|
|
365
|
+
return A, update_keys
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
def merge_results(A: list[dict], B: list[dict], strategy: str):
|
|
369
|
+
"""
|
|
370
|
+
Merge the results sections of 2 checkpoint files.
|
|
371
|
+
|
|
372
|
+
:param A: The first checkpoint results list to merge
|
|
373
|
+
:type A: list[dict[str, any]]
|
|
374
|
+
:param B: The second checkpoint results list to merge
|
|
375
|
+
:type B: list[dict[str, any]]
|
|
376
|
+
:param strategy: The merge strategy (which one to take in the case of
|
|
377
|
+
conflicts)
|
|
378
|
+
:type strategy: str
|
|
379
|
+
|
|
380
|
+
:return: Merged results list
|
|
381
|
+
:rtype: list[dict[str, any]]
|
|
382
|
+
"""
|
|
383
|
+
|
|
384
|
+
def key_gen(k: dict):
|
|
385
|
+
"""
|
|
386
|
+
Get a uid for a result entry in cp file.
|
|
387
|
+
"""
|
|
388
|
+
return (
|
|
389
|
+
k["name"],
|
|
390
|
+
k["software_tag"],
|
|
391
|
+
k["minimizer_tag"],
|
|
392
|
+
k["jacobian_tag"],
|
|
393
|
+
k["hessian_tag"],
|
|
394
|
+
k["costfun_tag"],
|
|
395
|
+
)
|
|
396
|
+
|
|
397
|
+
A_key = {key_gen(r): i for i, r in enumerate(A)}
|
|
398
|
+
|
|
399
|
+
for res in B:
|
|
400
|
+
key = key_gen(res)
|
|
401
|
+
if key in A_key:
|
|
402
|
+
if (
|
|
403
|
+
strategy in ["accuracy", "energy", "runtime"]
|
|
404
|
+
and A[A_key[key]][strategy] > res[strategy]
|
|
405
|
+
):
|
|
406
|
+
A[A_key[key]] = res
|
|
407
|
+
else:
|
|
408
|
+
A_key[key] = len(A)
|
|
409
|
+
A.append(res)
|
|
410
|
+
|
|
411
|
+
return A
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
def main():
|
|
415
|
+
"""
|
|
416
|
+
Entry point exposed as the `fitbenchmarking-cp` command.
|
|
417
|
+
"""
|
|
418
|
+
parser = get_parser()
|
|
419
|
+
|
|
420
|
+
args = parser.parse_args(sys.argv[1:])
|
|
421
|
+
|
|
422
|
+
additional_options = {}
|
|
423
|
+
|
|
424
|
+
if args.subprog == "report":
|
|
425
|
+
if args.filename:
|
|
426
|
+
additional_options["checkpoint_filename"] = args.filename
|
|
427
|
+
generate_report(
|
|
428
|
+
args.options_file, additional_options, debug=args.debug_mode
|
|
429
|
+
)
|
|
430
|
+
elif args.subprog == "merge":
|
|
431
|
+
merge_data_sets(
|
|
432
|
+
files=args.files,
|
|
433
|
+
output=args.output_filename,
|
|
434
|
+
strategy=args.strategy,
|
|
435
|
+
debug=args.debug_mode,
|
|
436
|
+
)
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
if __name__ == "__main__":
|
|
440
|
+
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
|
|