FitBenchmarking 1.3.0__tar.gz → 1.5.0__tar.gz

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