FitBenchmarking 1.2.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.
Files changed (255) hide show
  1. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/PKG-INFO +12 -11
  2. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/README.md +8 -8
  3. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cli/checkpoint_handler.py +60 -41
  4. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cli/main.py +117 -85
  5. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/base_controller.py +43 -23
  6. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/bumps_controller.py +4 -6
  7. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/ceres_controller.py +2 -1
  8. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/dfo_controller.py +2 -1
  9. fitbenchmarking-1.3.0/fitbenchmarking/controllers/galahad_controller.py +243 -0
  10. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/gofit_controller.py +3 -2
  11. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/gradient_free_controller.py +2 -1
  12. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/gsl_controller.py +2 -6
  13. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/levmar_controller.py +2 -1
  14. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/lmfit_controller.py +5 -12
  15. fitbenchmarking-1.3.0/fitbenchmarking/controllers/mantid_controller.py +440 -0
  16. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_curve_controller.py +2 -1
  17. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_opt_controller.py +2 -1
  18. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/minuit_controller.py +2 -1
  19. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/nlopt_controller.py +5 -12
  20. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/paramonte_controller.py +3 -1
  21. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/ralfit_controller.py +4 -2
  22. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/scipy_controller.py +7 -4
  23. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/scipy_go_controller.py +2 -2
  24. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/scipy_ls_controller.py +3 -2
  25. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/core/fitting_benchmarking.py +119 -58
  26. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/core/results_output.py +57 -25
  27. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/base_cost_func.py +8 -3
  28. fitbenchmarking-1.3.0/fitbenchmarking/parsing/fitbenchmark_parser.py +601 -0
  29. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/fitting_problem.py +20 -19
  30. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/horace_parser.py +152 -7
  31. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/ivp_parser.py +1 -1
  32. fitbenchmarking-1.3.0/fitbenchmarking/parsing/mantid_parser.py +137 -0
  33. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/mantiddev_parser.py +24 -47
  34. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/nist_data_functions.py +1 -1
  35. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/base_table.py +129 -18
  36. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/compare_table.py +7 -5
  37. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/energy_usage_table.py +0 -2
  38. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/fitting_report.py +14 -13
  39. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/local_min_table.py +3 -1
  40. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/performance_profiler.py +8 -4
  41. fitbenchmarking-1.3.0/fitbenchmarking/results_processing/plots.py +876 -0
  42. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/problem_summary_page.py +45 -5
  43. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/runtime_table.py +23 -1
  44. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/tables.py +15 -21
  45. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/custom_style.css +11 -0
  46. fitbenchmarking-1.3.0/fitbenchmarking/templates/fitting_report_template.html +175 -0
  47. fitbenchmarking-1.3.0/fitbenchmarking/templates/js/plotly.js +3879 -0
  48. fitbenchmarking-1.3.0/fitbenchmarking/templates/js/table.js +546 -0
  49. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/problem_summary_page_template.html +100 -46
  50. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/table_template.html +15 -0
  51. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/checkpoint.py +4 -1
  52. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/fitbm_result.py +135 -29
  53. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/options.py +15 -1
  54. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/pyproject.toml +14 -2
  55. fitbenchmarking-1.2.0/fitbenchmarking/controllers/mantid_controller.py +0 -374
  56. fitbenchmarking-1.2.0/fitbenchmarking/parsing/fitbenchmark_parser.py +0 -632
  57. fitbenchmarking-1.2.0/fitbenchmarking/parsing/mantid_parser.py +0 -22
  58. fitbenchmarking-1.2.0/fitbenchmarking/results_processing/plots.py +0 -373
  59. fitbenchmarking-1.2.0/fitbenchmarking/templates/fitting_report_template.html +0 -158
  60. fitbenchmarking-1.2.0/fitbenchmarking/templates/js/plotly.js +0 -8
  61. fitbenchmarking-1.2.0/fitbenchmarking/templates/js/table.js +0 -142
  62. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/.gitignore +0 -0
  63. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/LICENSE.txt +0 -0
  64. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/__init__.py +0 -0
  65. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/__main__.py +0 -0
  66. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/ENSO.dat +0 -0
  67. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Gauss3.dat +0 -0
  68. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Hahn1.dat +0 -0
  69. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Kirby2.dat +0 -0
  70. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos1.dat +0 -0
  71. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos2.dat +0 -0
  72. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/META.txt +0 -0
  73. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/MGH17.dat +0 -0
  74. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1c.dat +0 -0
  75. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1d.dat +0 -0
  76. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.hes +0 -0
  77. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.jac +0 -0
  78. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.hes +0 -0
  79. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.jac +0 -0
  80. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.hes +0 -0
  81. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.jac +0 -0
  82. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.hes +0 -0
  83. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.jac +0 -0
  84. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.hes +0 -0
  85. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.jac +0 -0
  86. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.hes +0 -0
  87. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.jac +0 -0
  88. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.hes +0 -0
  89. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.jac +0 -0
  90. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.hes +0 -0
  91. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.jac +0 -0
  92. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.hes +0 -0
  93. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.jac +0 -0
  94. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Bennett5.dat +0 -0
  95. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/BoxBOD.dat +0 -0
  96. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Eckerle4.dat +0 -0
  97. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/META.txt +0 -0
  98. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH09.dat +0 -0
  99. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH10.dat +0 -0
  100. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat42.dat +0 -0
  101. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat43.dat +0 -0
  102. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Thurber.dat +0 -0
  103. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.hes +0 -0
  104. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.jac +0 -0
  105. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.hes +0 -0
  106. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.jac +0 -0
  107. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.hes +0 -0
  108. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.jac +0 -0
  109. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.hes +0 -0
  110. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.jac +0 -0
  111. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.hes +0 -0
  112. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.jac +0 -0
  113. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.hes +0 -0
  114. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.jac +0 -0
  115. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.hes +0 -0
  116. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.jac +0 -0
  117. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.hes +0 -0
  118. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.jac +0 -0
  119. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut1.dat +0 -0
  120. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut2.dat +0 -0
  121. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/DanWood.dat +0 -0
  122. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss1.dat +0 -0
  123. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss2.dat +0 -0
  124. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Lanczos3.dat +0 -0
  125. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/META.txt +0 -0
  126. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1a.dat +0 -0
  127. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1b.dat +0 -0
  128. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.hes +0 -0
  129. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.jac +0 -0
  130. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.hes +0 -0
  131. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.jac +0 -0
  132. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.hes +0 -0
  133. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.jac +0 -0
  134. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.hes +0 -0
  135. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.jac +0 -0
  136. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.hes +0 -0
  137. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.jac +0 -0
  138. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.hes +0 -0
  139. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.jac +0 -0
  140. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.hes +0 -0
  141. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.jac +0 -0
  142. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.hes +0 -0
  143. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.jac +0 -0
  144. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cli/__init__.py +0 -0
  145. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cli/exception_handler.py +0 -0
  146. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/__init__.py +0 -0
  147. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/controller_factory.py +0 -0
  148. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/horace_controller.py +0 -0
  149. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_controller.py +0 -0
  150. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_curve_controller/eval_r.m +0 -0
  151. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_mixin.py +0 -0
  152. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/matlab_stats_controller.py +0 -0
  153. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/scipy_leastsq_controller.py +0 -0
  154. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/controllers/theseus_controller.py +0 -0
  155. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/core/__init__.py +0 -0
  156. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/__init__.py +0 -0
  157. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/cost_func_factory.py +0 -0
  158. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/hellinger_nlls_cost_func.py +0 -0
  159. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/loglike_nlls_cost_func.py +0 -0
  160. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/nlls_base_cost_func.py +0 -0
  161. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/nlls_cost_func.py +0 -0
  162. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/poisson_cost_func.py +0 -0
  163. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/cost_func/weighted_nlls_cost_func.py +0 -0
  164. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Bold.eot +0 -0
  165. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-BoldItalic.eot +0 -0
  166. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Italic.eot +0 -0
  167. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Light.eot +0 -0
  168. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-LightItalic.eot +0 -0
  169. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Medium.eot +0 -0
  170. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-MediumItalic.eot +0 -0
  171. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Regular.eot +0 -0
  172. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Bold.ttf +0 -0
  173. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-BoldItalic.ttf +0 -0
  174. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Italic.ttf +0 -0
  175. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Light.ttf +0 -0
  176. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-LightItalic.ttf +0 -0
  177. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Medium.ttf +0 -0
  178. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-MediumItalic.ttf +0 -0
  179. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Regular.ttf +0 -0
  180. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Bold.woff +0 -0
  181. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-BoldItalic.woff +0 -0
  182. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Italic.woff +0 -0
  183. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Light.woff +0 -0
  184. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-LightItalic.woff +0 -0
  185. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Medium.woff +0 -0
  186. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-MediumItalic.woff +0 -0
  187. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Regular.woff +0 -0
  188. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Bold.woff2 +0 -0
  189. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-BoldItalic.woff2 +0 -0
  190. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Italic.woff2 +0 -0
  191. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Light.woff2 +0 -0
  192. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-LightItalic.woff2 +0 -0
  193. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Medium.woff2 +0 -0
  194. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-MediumItalic.woff2 +0 -0
  195. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Regular.woff2 +0 -0
  196. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.eot +0 -0
  197. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.svg +0 -0
  198. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.ttf +0 -0
  199. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff +0 -0
  200. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff2 +0 -0
  201. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/__init__.py +0 -0
  202. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/analytic_hessian.py +0 -0
  203. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/base_hessian.py +0 -0
  204. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/best_available_hessian.py +0 -0
  205. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/hessian_factory.py +0 -0
  206. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/numdifftools_hessian.py +0 -0
  207. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/hessian/scipy_hessian.py +0 -0
  208. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/__init__.py +0 -0
  209. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/analytic_jacobian.py +0 -0
  210. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/base_jacobian.py +0 -0
  211. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/best_available_jacobian.py +0 -0
  212. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/default_jacobian.py +0 -0
  213. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/jacobian_factory.py +0 -0
  214. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/numdifftools_jacobian.py +0 -0
  215. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/scipy_jacobian.py +0 -0
  216. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/jacobian/scripts/NIST-Jacobians.nb +0 -0
  217. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/__init__.py +0 -0
  218. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/bal_parser.py +0 -0
  219. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/base_parser.py +0 -0
  220. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/hogben_parser.py +0 -0
  221. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/nist_parser.py +0 -0
  222. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/parser_factory.py +0 -0
  223. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/parsing/sasview_parser.py +0 -0
  224. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/__init__.py +0 -0
  225. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/results_processing/acc_table.py +0 -0
  226. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/dropdown_style.css +0 -0
  227. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/main_style.css +0 -0
  228. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/math_style.css +0 -0
  229. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/css/table_style.css +0 -0
  230. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/images/accuracy.png +0 -0
  231. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/images/compare.png +0 -0
  232. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/images/energy.png +0 -0
  233. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/images/fitbenchmarking_logo.png +0 -0
  234. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/images/local_min.png +0 -0
  235. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/images/runtime.png +0 -0
  236. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/index_page.html +0 -0
  237. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/dropdown.js +0 -0
  238. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  239. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  240. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  241. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  242. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  243. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/js/tex-mml-chtml.js +0 -0
  244. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/problem_index_page.html +0 -0
  245. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/templates/style_sheet.py +0 -0
  246. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/__init__.py +0 -0
  247. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/create_dirs.py +0 -0
  248. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/debug.py +0 -0
  249. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/exceptions.py +0 -0
  250. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/log.py +0 -0
  251. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/matlab_engine.py +0 -0
  252. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/misc.py +0 -0
  253. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/output_grabber.py +0 -0
  254. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/timer.py +0 -0
  255. {fitbenchmarking-1.2.0 → fitbenchmarking-1.3.0}/fitbenchmarking/utils/write_files.py +0 -0
@@ -1,13 +1,14 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: FitBenchmarking
3
- Version: 1.2.0
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: FitBenchmarkign Team
10
+ Author: FitBenchmarking Team
11
+ License-File: LICENSE.txt
11
12
  Keywords: benchmark,comparison,fitting,least squares,optimisation
12
13
  Classifier: License :: OSI Approved :: BSD License
13
14
  Classifier: Operating System :: OS Independent
@@ -68,22 +69,22 @@ Requires-Dist: sasmodels; extra == 'sas'
68
69
  Requires-Dist: tinycc; (platform_system == 'Windows') and extra == 'sas'
69
70
  Description-Content-Type: text/markdown
70
71
 
71
- [![Build Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/release.yml?style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.2.0)
72
- [![Tests Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/main.yml?label=tests&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.2.0)
72
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/release.yml?style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.3.0)
73
+ [![Tests Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/main.yml?label=tests&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.3.0)
73
74
  [![Install Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/install.yml?label=install&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
74
- [![Documentation Status](https://img.shields.io/readthedocs/fitbenchmarking/v1.2.0?style=flat-square)](https://fitbenchmarking.readthedocs.io/en/v1.2.0)
75
+ [![Documentation Status](https://img.shields.io/readthedocs/fitbenchmarking/v1.3.0?style=flat-square)](https://fitbenchmarking.readthedocs.io/en/v1.3.0)
75
76
  [![Coverage Status](https://img.shields.io/coveralls/github/fitbenchmarking/fitbenchmarking.svg?style=flat-square)](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
76
77
  [![Chat](https://img.shields.io/badge/chat-CompareFitMinimizers-lightgrey.svg?style=flat-square&logo=slack)](https://slack.com/)
77
- [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281/zenodo.11198140-blue.svg?style=flat-square)](https://doi.org/10.5281/zenodo.11198140)
78
+ [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281/zenodo.14224242-blue.svg?style=flat-square)](https://doi.org/10.5281/zenodo.14224242)
78
79
  [![JOSS](https://img.shields.io/badge/JOSS-10.21105/joss.03127-brightgreen.svg?style=flat-square)](https://doi.org/10.21105/joss.03127)
79
80
  # FitBenchmarking
80
81
 
81
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.
82
83
 
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
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
87
88
 
88
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:
89
90
 
@@ -1,19 +1,19 @@
1
- [![Build Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/release.yml?style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.2.0)
2
- [![Tests Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/main.yml?label=tests&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.2.0)
1
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/release.yml?style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.3.0)
2
+ [![Tests Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/main.yml?label=tests&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.3.0)
3
3
  [![Install Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/install.yml?label=install&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
4
- [![Documentation Status](https://img.shields.io/readthedocs/fitbenchmarking/v1.2.0?style=flat-square)](https://fitbenchmarking.readthedocs.io/en/v1.2.0)
4
+ [![Documentation Status](https://img.shields.io/readthedocs/fitbenchmarking/v1.3.0?style=flat-square)](https://fitbenchmarking.readthedocs.io/en/v1.3.0)
5
5
  [![Coverage Status](https://img.shields.io/coveralls/github/fitbenchmarking/fitbenchmarking.svg?style=flat-square)](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
6
6
  [![Chat](https://img.shields.io/badge/chat-CompareFitMinimizers-lightgrey.svg?style=flat-square&logo=slack)](https://slack.com/)
7
- [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281/zenodo.11198140-blue.svg?style=flat-square)](https://doi.org/10.5281/zenodo.11198140)
7
+ [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281/zenodo.14224242-blue.svg?style=flat-square)](https://doi.org/10.5281/zenodo.14224242)
8
8
  [![JOSS](https://img.shields.io/badge/JOSS-10.21105/joss.03127-brightgreen.svg?style=flat-square)](https://doi.org/10.21105/joss.03127)
9
9
  # FitBenchmarking
10
10
 
11
11
  FitBenchmarking is an open source tool for comparing different minimizers/fitting frameworks. FitBenchmarking is cross platform and we support Windows, Linux and Mac OS. For questions, feature requests or any other inquiries, please open an issue on GitHub.
12
12
 
13
- - **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.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
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
17
17
 
18
18
  The package is the result of a collaboration between STFC’s Scientific Computing Department and ISIS Neutron and Muon Facility and the Diamond Light Source. We also would like to acknowledge support from:
19
19
 
@@ -142,7 +142,7 @@ def generate_report(options_file="", additional_options=None, debug=False):
142
142
  :type options_file: str, optional
143
143
  :param additional_options: Extra options for the reporting.
144
144
  Available keys are:
145
- filename (str): The checkpoint file to use.
145
+ filename (str): The checkpoint file to use.
146
146
  :type additional_options: dict, optional
147
147
  """
148
148
  if additional_options is None:
@@ -185,46 +185,65 @@ def merge_data_sets(
185
185
  ):
186
186
  """
187
187
  Combine multiple checkpoint files into one following these rules:
188
- 1) The output will be the same as combining them one at a time in
189
- sequence. i.e. A + B + C = (A + B) + C
190
- The rules from here on will only reference A and B as the relation is
191
- recursive.
192
- 2) Datasets
193
- 2a) Datasets in A and B are identical if they agree on the label
194
- 2b) If A and B contain identical datasets, the problems and results
195
- are combined as below.
196
- The remainder of these rules assume that A and B are identical
197
- datasets as the alternative is trivial.
198
- 3) Problems
199
- 3a) If problems in A and B agree on name, ini_params, ini_y, x, y,
200
- and e then these problems are considered identical.
201
- 3b) If A and B share identical problems, the details not specified in
202
- 3a are taken from A.
203
- 3c) If problems in A and B are not identical but share a name, the
204
- name of the project in B should be updated to "<problem_name>*".
205
- 4) Results
206
- 4a) If results in A and B have identical problems and agree on name,
207
- software_tag, minimizer_tag, jacobian_tag, hessian_tag, and
208
- costfun_tag they are considered identical.
209
- 4b) If A an B share identical results, the details not specified in 4a
210
- are taken from A if strategy is 'first', or B if strategy is
211
- 'last'.
212
- 5) As tables are grids of results, combining arbitrary results can lead to
213
- un-table-able checkpoint files.
214
- This occurs when the problems in A and B are not all identical and the
215
- set of combinations of software_tag, minimizer_tag, jacobian_tag,
216
- hessian_tag, and costfun_tag for which there are results in each of A
217
- and B are not identical.
218
- E.g. B has a problem not in A and uses a minimizer for which there are
219
- no results in A.
220
- 5a) If the resulting checkpoint file would have the above issue, the
221
- checkpoints are incompatible.
222
- 5b) Incompatible checkpoint files can be combined but should raise
223
- warnings and mark the dataset in the checkpoint file.
224
- Note: Some datasets may be incompatible where others can be
225
- successfully combined.
226
- 6) Unselected minimizers and failed problems will be discarded when
227
- combining.
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.
228
247
 
229
248
  :param files: The files to combine.
230
249
  :type files: list[str]
@@ -122,8 +122,7 @@ of the Fitbenchmarking docs. """
122
122
  type=str,
123
123
  default=[],
124
124
  help=(
125
- "Select what type of algorithm is used within a specific "
126
- "software."
125
+ "Select what type of algorithm is used within a specific software."
127
126
  ),
128
127
  )
129
128
  parser.add_argument(
@@ -179,8 +178,8 @@ of the Fitbenchmarking docs. """
179
178
  help="Set the port for Dash.",
180
179
  )
181
180
 
182
- group1 = parser.add_mutually_exclusive_group()
183
- group1.add_argument(
181
+ make_plots_group = parser.add_mutually_exclusive_group()
182
+ make_plots_group.add_argument(
184
183
  "--make_plots",
185
184
  action="store_true",
186
185
  help=(
@@ -188,7 +187,7 @@ of the Fitbenchmarking docs. """
188
187
  "during runtime."
189
188
  ),
190
189
  )
191
- group1.add_argument(
190
+ make_plots_group.add_argument(
192
191
  "--dont_make_plots",
193
192
  action="store_true",
194
193
  help=(
@@ -197,8 +196,8 @@ of the Fitbenchmarking docs. """
197
196
  ),
198
197
  )
199
198
 
200
- group2 = parser.add_mutually_exclusive_group()
201
- group2.add_argument(
199
+ results_browser_group = parser.add_mutually_exclusive_group()
200
+ results_browser_group.add_argument(
202
201
  "--results_browser",
203
202
  action="store_true",
204
203
  help=(
@@ -207,7 +206,7 @@ of the Fitbenchmarking docs. """
207
206
  "of a fit benchmark."
208
207
  ),
209
208
  )
210
- group2.add_argument(
209
+ results_browser_group.add_argument(
211
210
  "--no_results_browser",
212
211
  action="store_true",
213
212
  help=(
@@ -217,8 +216,8 @@ of the Fitbenchmarking docs. """
217
216
  ),
218
217
  )
219
218
 
220
- group3 = parser.add_mutually_exclusive_group()
221
- group3.add_argument(
219
+ pbar_group = parser.add_mutually_exclusive_group()
220
+ pbar_group.add_argument(
222
221
  "--pbar",
223
222
  action="store_true",
224
223
  help=(
@@ -226,7 +225,7 @@ of the Fitbenchmarking docs. """
226
225
  "see the progress bar during runtime."
227
226
  ),
228
227
  )
229
- group3.add_argument(
228
+ pbar_group.add_argument(
230
229
  "--no_pbar",
231
230
  action="store_true",
232
231
  help=(
@@ -269,8 +268,8 @@ of the Fitbenchmarking docs. """
269
268
  help="Specify the file path to write the logs to.",
270
269
  )
271
270
 
272
- group2 = parser.add_mutually_exclusive_group()
273
- group2.add_argument(
271
+ append_log_group = parser.add_mutually_exclusive_group()
272
+ append_log_group.add_argument(
274
273
  "--append_log",
275
274
  action="store_true",
276
275
  help=(
@@ -280,7 +279,7 @@ of the Fitbenchmarking docs. """
280
279
  "subsequent run."
281
280
  ),
282
281
  )
283
- group2.add_argument(
282
+ append_log_group.add_argument(
284
283
  "--overwrite_log",
285
284
  action="store_true",
286
285
  help=(
@@ -318,8 +317,8 @@ of the Fitbenchmarking docs. """
318
317
  ),
319
318
  )
320
319
 
321
- group4 = parser.add_mutually_exclusive_group()
322
- group4.add_argument(
320
+ run_dash_group = parser.add_mutually_exclusive_group()
321
+ run_dash_group.add_argument(
323
322
  "--run_dash",
324
323
  action="store_true",
325
324
  help=(
@@ -327,7 +326,7 @@ of the Fitbenchmarking docs. """
327
326
  "interactive plots."
328
327
  ),
329
328
  )
330
- group4.add_argument(
329
+ run_dash_group.add_argument(
331
330
  "--dont_run_dash",
332
331
  action="store_true",
333
332
  help=(
@@ -335,6 +334,23 @@ of the Fitbenchmarking docs. """
335
334
  "run dash for interactive plots."
336
335
  ),
337
336
  )
337
+
338
+ jacobian_check_group = parser.add_mutually_exclusive_group()
339
+ jacobian_check_group.add_argument(
340
+ "--check_jacobian",
341
+ action="store_true",
342
+ help=(
343
+ "Use this option to check the jacobian against"
344
+ "a finite difference approximation."
345
+ ),
346
+ )
347
+ jacobian_check_group.add_argument(
348
+ "--dont_check_jacobian",
349
+ action="store_true",
350
+ help=(
351
+ "Use this option if you have decided not to check the jacobian."
352
+ ),
353
+ )
338
354
  return parser
339
355
 
340
356
 
@@ -347,7 +363,7 @@ def run(problem_sets, additional_options=None, options_file="", debug=False):
347
363
  :param problem_sets: The paths to directories containing problem_sets.
348
364
  :type problem_sets: list of str
349
365
  :param additional_options: A dictionary of options input by the
350
- user into the command line.
366
+ user into the command line.
351
367
  :type additional_options: dict
352
368
  :param options_file: The path to an options file, defaults to ''.
353
369
  :type options_file: str, optional
@@ -383,76 +399,85 @@ def run(problem_sets, additional_options=None, options_file="", debug=False):
383
399
  pp_dfs_all_prob_sets = {}
384
400
  cp = Checkpoint(options=options)
385
401
 
386
- for sub_dir in problem_sets:
387
- # Create full path for the directory that holds a group of
388
- # problem definition files
389
- data_dir = os.path.join(current_path, sub_dir)
390
-
391
- test_data = glob.glob(data_dir + "/*.*")
392
-
393
- if not test_data:
394
- LOGGER.warning("Problem set %s not found", data_dir)
395
- continue
396
-
397
- # generate group label/name used for problem set
398
- try:
399
- with open(
400
- os.path.join(data_dir, "META.txt"), encoding="utf-8"
401
- ) as f:
402
- label = f.readline().strip("\n")
403
- except OSError:
404
- label = sub_dir.replace("/", "_")
405
-
406
- LOGGER.info("Running the benchmarking on the %s problem set", label)
407
- fit = Fit(
408
- options=options, data_dir=data_dir, label=label, checkpointer=cp
409
- )
410
- results, failed_problems, unselected_minimizers = fit.benchmark()
411
-
412
- # If a result has error flag 4 then the result contains dummy values,
413
- # if this is the case for all results then output should not be
414
- # produced as results tables won't show meaningful values.
415
- all_dummy_results_flag = True
416
- for result in results:
417
- if result.error_flag != 4:
418
- all_dummy_results_flag = False
419
- break
420
-
421
- # If the results are an empty list then this means that all minimizers
422
- # raise an exception and the tables will produce errors if they run
423
- # for that problem set.
424
- if not results or all_dummy_results_flag:
425
- message = (
426
- "\nWARNING: \nThe user chosen options and/or problem "
427
- " setup resulted in all minimizers and/or parsers "
428
- "raising an exception. Because of this, results for "
429
- f"the {label} problem set will not be displayed. "
430
- "Please see the logs for more detail on why this is "
431
- "the case."
402
+ try:
403
+ for sub_dir in problem_sets:
404
+ # Create full path for the directory that holds a group of
405
+ # problem definition files
406
+ data_dir = os.path.join(current_path, sub_dir)
407
+
408
+ test_data = glob.glob(data_dir + "/*.*")
409
+
410
+ if not test_data:
411
+ LOGGER.warning("Problem set %s not found", data_dir)
412
+ continue
413
+
414
+ # generate group label/name used for problem set
415
+ try:
416
+ with open(
417
+ os.path.join(data_dir, "META.txt"), encoding="utf-8"
418
+ ) as f:
419
+ label = f.readline().strip("\n")
420
+ except OSError:
421
+ label = sub_dir.replace("/", "_")
422
+
423
+ LOGGER.info(
424
+ "Running the benchmarking on the %s problem set", label
432
425
  )
433
- LOGGER.warning(message)
434
- else:
435
- LOGGER.info("Producing output for the %s problem set", label)
436
- # Display the runtime and accuracy results in a table
437
- group_results_dir, pp_dfs = save_results(
438
- group_name=label,
439
- results=results,
426
+ fit = Fit(
440
427
  options=options,
441
- failed_problems=failed_problems,
442
- unselected_minimizers=unselected_minimizers,
443
- config=cp.config,
444
- )
445
-
446
- pp_dfs_all_prob_sets[label] = pp_dfs
447
-
448
- LOGGER.info("Completed benchmarking for %s problem set", sub_dir)
449
- group_results_dir = os.path.relpath(
450
- path=group_results_dir, start=options.results_dir
428
+ data_dir=data_dir,
429
+ label=label,
430
+ checkpointer=cp,
451
431
  )
452
- result_dir.append(group_results_dir)
453
- group_labels.append(label)
454
-
455
- cp.finalise()
432
+ results, failed_problems, unselected_minimizers = fit.benchmark()
433
+
434
+ # If a result has error flag 4 then the result contains dummy
435
+ # values, if this is the case for all results then output should
436
+ # not be produced as results tables won't show meaningful values.
437
+ all_dummy_results_flag = True
438
+ for result in results:
439
+ if result.error_flag != 4:
440
+ all_dummy_results_flag = False
441
+ break
442
+
443
+ # If the results are an empty list then this means that all
444
+ # minimizers raise an exception and the tables will produce
445
+ # errors if they run for that problem set.
446
+ if not results or all_dummy_results_flag:
447
+ message = (
448
+ "\nWARNING: \nThe user chosen options and/or problem "
449
+ " setup resulted in all minimizers and/or parsers "
450
+ "raising an exception. Because of this, results for "
451
+ f"the {label} problem set will not be displayed. "
452
+ "Please see the logs for more detail on why this is "
453
+ "the case."
454
+ )
455
+ LOGGER.warning(message)
456
+ else:
457
+ LOGGER.info("Producing output for the %s problem set", label)
458
+ # Display the runtime and accuracy results in a table
459
+ group_results_dir, pp_dfs = save_results(
460
+ group_name=label,
461
+ results=results,
462
+ options=options,
463
+ failed_problems=failed_problems,
464
+ unselected_minimizers=unselected_minimizers,
465
+ config=cp.config,
466
+ )
467
+
468
+ pp_dfs_all_prob_sets[label] = pp_dfs
469
+
470
+ LOGGER.info(
471
+ "Completed benchmarking for %s problem set", sub_dir
472
+ )
473
+ group_results_dir = os.path.relpath(
474
+ path=group_results_dir, start=options.results_dir
475
+ )
476
+ result_dir.append(group_results_dir)
477
+ group_labels.append(label)
478
+
479
+ finally:
480
+ cp.finalise()
456
481
 
457
482
  # Check result_dir is non empty before producing output
458
483
  if not result_dir:
@@ -539,6 +564,13 @@ def main():
539
564
  elif args.dont_run_dash:
540
565
  options_dictionary["run_dash"] = False
541
566
 
567
+ # Check if check_jacobian in options.py should be overridden, and if so,
568
+ # add to options_dictionary
569
+ if args.check_jacobian:
570
+ options_dictionary["check_jacobian"] = True
571
+ elif args.dont_check_jacobian:
572
+ options_dictionary["check_jacobian"] = False
573
+
542
574
  # Check if benchmark in options.py should be overridden, and if so,
543
575
  # add to options_dictionary
544
576
  if args.pbar:
@@ -3,6 +3,7 @@ Implements the base class for the fitting software controllers.
3
3
  """
4
4
 
5
5
  from abc import ABCMeta, abstractmethod
6
+ from typing import TYPE_CHECKING
6
7
 
7
8
  import numpy as np
8
9
  from scipy.optimize import curve_fit
@@ -13,9 +14,13 @@ from fitbenchmarking.utils.exceptions import (
13
14
  IncompatibleJacobianError,
14
15
  IncompatibleMinimizerError,
15
16
  IncompatibleProblemError,
17
+ MissingBoundsError,
16
18
  UnknownMinimizerError,
17
19
  )
18
20
 
21
+ if TYPE_CHECKING:
22
+ from fitbenchmarking.cost_func.base_cost_func import CostFunc
23
+
19
24
 
20
25
  class Controller:
21
26
  """
@@ -80,9 +85,10 @@ class Controller:
80
85
  #: for the specific software are able to use jacobian
81
86
  #: information.
82
87
  #:
83
- #: - ``jacobian_enabled_solvers``: a list of minimizers in a specific
84
- #: software that allow Jacobian information to be passed
85
- #: into the fitting algorithm
88
+ #: - ``jacobian_enabled_solvers``: a list of minimizers in a
89
+ #: specific software that allow Jacobian information to
90
+ #: be passed into the fitting algorithm
91
+ #:
86
92
  jacobian_enabled_solvers = []
87
93
 
88
94
  #: Within the controller class, you must define the list
@@ -90,9 +96,10 @@ class Controller:
90
96
  #: for the specific software are able to use hessian
91
97
  #: information.
92
98
  #:
93
- #: - ``hessian_enabled_solvers``: a list of minimizers in a specific
94
- #: software that allow Hessian information to be passed
95
- #: into the fitting algorithm
99
+ #: - ``hessian_enabled_solvers``: a list of minimizers in a
100
+ #: specific software that allow Hessian information to
101
+ #: be passed into the fitting algorithm
102
+ #:
96
103
  hessian_enabled_solvers = []
97
104
 
98
105
  #: Within the controller class, you must define the list
@@ -100,15 +107,29 @@ class Controller:
100
107
  #: for the specific software offer support for sparse
101
108
  #: jacobians.
102
109
  #:
103
- #: - ``sparsity_enabled_solvers``: a list of minimizers in a specific
104
- #: software that allow sparsity structure to be passed
105
- #: into the fitting algorithm
110
+ #: - ``sparsity_enabled_solvers``: a list of minimizers in a
111
+ #: specific software that allow sparsity structure to be
112
+ #: passed into the fitting algorithm
113
+ #:
106
114
  sparsity_enabled_solvers = []
107
115
 
108
116
  #: A name to be used in tables. If this is set to None it will be inferred
109
117
  #: from the class name.
110
118
  controller_name = None
111
119
 
120
+ #: Used to check whether the fitting software has support for
121
+ #: bounded problems, set as True if at least some minimizers
122
+ #: in the fitting software have support for bounds
123
+ support_for_bounds = False
124
+
125
+ #: Used to check whether the selected minimizers is compatible with
126
+ #: problems that have parameter bounds
127
+ no_bounds_minimizers = []
128
+
129
+ #: Used to check whether the selected minimizer is compatible with
130
+ #: problems that don't have parameter bounds
131
+ bounds_required_minimizers = []
132
+
112
133
  #: A list of incompatible problem formats for this controller.
113
134
  incompatible_problems = []
114
135
 
@@ -124,7 +145,7 @@ class Controller:
124
145
  :type cost_func: subclass of
125
146
  :class:`~fitbenchmarking.cost_func.base_cost_func.CostFunc`
126
147
  """
127
- self.cost_func = cost_func
148
+ self.cost_func: CostFunc = cost_func
128
149
  # Problem: The problem object from parsing
129
150
  self.problem = self.cost_func.problem
130
151
 
@@ -155,15 +176,6 @@ class Controller:
155
176
  # Flag: error handling flag
156
177
  self._flag = None
157
178
 
158
- # Used to check whether the selected minimizers is compatible with
159
- # problems that have parameter bounds
160
- self.no_bounds_minimizers = []
161
-
162
- # Used to check whether the fitting software has support for
163
- # bounded problems, set as True if at least some minimizers
164
- # in the fitting software have support for bounds
165
- self.support_for_bounds = False
166
-
167
179
  # The timer used to check if the 'max_runtime' is exceeded.
168
180
  self.timer = cost_func.problem.timer
169
181
 
@@ -178,6 +190,9 @@ class Controller:
178
190
  # save number of function evaluations
179
191
  self.func_evals = None
180
192
 
193
+ # set default chain length for Bayesian minimizers
194
+ self.chain_length = 100000
195
+
181
196
  @property
182
197
  def flag(self):
183
198
  """
@@ -442,16 +457,21 @@ class Controller:
442
457
  options
443
458
  :type minimizer: str
444
459
  """
445
-
446
- if (
460
+ if self.value_ranges is not None and (
447
461
  self.support_for_bounds is False
448
462
  or minimizer in self.no_bounds_minimizers
449
463
  ):
450
- message = (
464
+ raise IncompatibleMinimizerError(
451
465
  "The selected minimizer does not currently support "
452
466
  "problems with parameter bounds"
453
467
  )
454
- raise IncompatibleMinimizerError(message)
468
+
469
+ if minimizer in self.bounds_required_minimizers and (
470
+ self.value_ranges is None or np.any(np.isinf(self.value_ranges))
471
+ ):
472
+ raise MissingBoundsError(
473
+ f"{minimizer} requires finite bounds on all parameters"
474
+ )
455
475
 
456
476
  def check_bounds_respected(self):
457
477
  """