|
16 | 16 |
|
17 | 17 | import unittest |
18 | 18 |
|
| 19 | +import numpy as np |
19 | 20 | import pytest |
20 | 21 | from scipy.optimize import leastsq |
21 | 22 |
|
22 | 23 | from diffpy.srfit.fitbase.fitrecipe import FitRecipe |
23 | | -from diffpy.srfit.fitbase.fitresults import FitResults, initializeRecipe |
| 24 | +from diffpy.srfit.fitbase.fitresults import ( |
| 25 | + FitResults, |
| 26 | + initializeRecipe, |
| 27 | + resultsDictionary, |
| 28 | +) |
24 | 29 |
|
25 | 30 | # The fit results from the recipe fixture in conftest.py |
26 | 31 | expected_fitresults = """\ |
@@ -157,6 +162,39 @@ def test_get_results_dictionary(build_recipe_one_contribution): |
157 | 162 | assert expected_var in actual_results_dict |
158 | 163 |
|
159 | 164 |
|
| 165 | +def test_resultsDictionary(temp_data_files): |
| 166 | + actual_results_dict = resultsDictionary( |
| 167 | + temp_data_files / "fit_results.res" |
| 168 | + ) |
| 169 | + # bad behavior: values are stored as strings |
| 170 | + expected_results_dict = { |
| 171 | + "than": "25", # bad behavior: shouldn't be here |
| 172 | + "wave_number": "1.00000000e+00", |
| 173 | + "phase_shift": "-1.61291146e-18", |
| 174 | + "amplitude": "1.00000000e+00", |
| 175 | + "Rw": "0.00000000", |
| 176 | + "Chi2": "0.00000000", |
| 177 | + "Restraints": "0.00000000", |
| 178 | + "Contributions": "0.00000000", |
| 179 | + "Residual": "0.00000000", |
| 180 | + "Feb": "25", # bad behavior: shouldn't be here |
| 181 | + } |
| 182 | + # convert values to float for comparison (with rounding) |
| 183 | + for key in expected_results_dict: |
| 184 | + expected_results_dict[key] = float(expected_results_dict[key]) |
| 185 | + for key in actual_results_dict: |
| 186 | + actual_results_dict[key] = float(actual_results_dict[key]) |
| 187 | + |
| 188 | + actual_keys = set(actual_results_dict.keys()) |
| 189 | + actual_values = np.round(np.array(list(actual_results_dict.values())), 5) |
| 190 | + expected_keys = set(expected_results_dict.keys()) |
| 191 | + expected_values = np.round( |
| 192 | + np.array(list(expected_results_dict.values())), 5 |
| 193 | + ) |
| 194 | + assert expected_keys == actual_keys |
| 195 | + assert list(expected_values == list(actual_values)) |
| 196 | + |
| 197 | + |
160 | 198 | def testInitializeFromFileName(datafile): |
161 | 199 | recipe = FitRecipe("recipe") |
162 | 200 | recipe.create_new_variable("A", 0) |
|
0 commit comments