FitBenchmarking 1.1.0__tar.gz → 1.3.0__tar.gz

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