Skip to content

Commit ca47352

Browse files
committed
test for resultsDictionary
1 parent 7f65557 commit ca47352

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

tests/conftest.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,32 @@ def temp_data_files(tmp_path):
223223

224224
cgr_file = tmp_path / "cgr_file.cgr"
225225
cgr_file.write_text("1.0 2.0\n" "1.1 2.1\n" "1.2 2.2\n")
226+
227+
results_file = tmp_path / "fit_results.res"
228+
results_file.write_text(
229+
"""
230+
Results written: Wed Feb 25 15:14:58 2026
231+
produced by cadenmyers
232+
233+
Some quantities invalid due to missing profile uncertainty
234+
Overall (Chi2 and Reduced Chi2 invalid)
235+
------------------------------------------------------------------------------
236+
Residual 0.00000000
237+
Contributions 0.00000000
238+
Restraints 0.00000000
239+
Chi2 0.00000000
240+
Reduced Chi2 0.00000000
241+
Rw 0.00000000
242+
243+
Variables (Uncertainties invalid)
244+
------------------------------------------------------------------------------
245+
amplitude 1.00000000e+00 +/- 4.82804000e-01
246+
phase_shift -1.61291146e-18 +/- 1.00000000e+00
247+
wave_number 1.00000000e+00 +/- 2.17496687e-01
248+
249+
Variable Correlations greater than 25% (Correlations invalid)
250+
------------------------------------------------------------------------------
251+
No correlations greater than 25%
252+
"""
253+
)
226254
yield tmp_path

tests/test_fitresults.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,16 @@
1616

1717
import unittest
1818

19+
import numpy as np
1920
import pytest
2021
from scipy.optimize import leastsq
2122

2223
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+
)
2429

2530
# The fit results from the recipe fixture in conftest.py
2631
expected_fitresults = """\
@@ -157,6 +162,39 @@ def test_get_results_dictionary(build_recipe_one_contribution):
157162
assert expected_var in actual_results_dict
158163

159164

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+
160198
def testInitializeFromFileName(datafile):
161199
recipe = FitRecipe("recipe")
162200
recipe.create_new_variable("A", 0)

0 commit comments

Comments
 (0)