Skip to content

Commit 3bda6df

Browse files
committed
expose minimizer enum
1 parent b6c23f8 commit 3bda6df

File tree

4 files changed

+18
-9
lines changed

4 files changed

+18
-9
lines changed

src/easyscience/fitting/fitter.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ class Fitter:
2626
def __init__(self, fit_object, fit_function: Callable):
2727
self._fit_object = fit_object
2828
self._fit_function = fit_function
29-
self._dependent_dims = None
30-
self._tolerance = None
31-
self._max_evaluations = None
29+
self._dependent_dims: int = None
30+
self._tolerance: float = None
31+
self._max_evaluations: int = None
3232

33-
self._enum_current_minimizer = DEFAULT_MINIMIZER
34-
self._minimizer: MinimizerBase # _minimizer is set in the create method
35-
self._update_minimizer(self._enum_current_minimizer)
33+
self._minimizer: MinimizerBase = None # set in _update_minimizer
34+
self._enum_current_minimizer: AvailableMinimizers = None # set in _update_minimizer
35+
self._update_minimizer(DEFAULT_MINIMIZER)
3636

3737
def fit_constraints(self) -> list:
3838
return self._minimizer.fit_constraints()

src/easyscience/fitting/minimizers/minimizer_base.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def __init__(
4040
self,
4141
obj, #: BaseObj,
4242
fit_function: Callable,
43-
minimizer_enum: Optional[AvailableMinimizers] = None,
43+
minimizer_enum: AvailableMinimizers,
4444
): # todo after constraint changes, add type hint: obj: BaseObj # noqa: E501
4545
if minimizer_enum.method not in self.supported_methods():
4646
raise FitError(f'Method {minimizer_enum.method} not available in {self.__class__}')
@@ -58,6 +58,10 @@ def __init__(
5858
def all_constraints(self) -> List[ObjConstraint]:
5959
return [*self._constraints, *self._object._constraints]
6060

61+
@property
62+
def enum(self) -> AvailableMinimizers:
63+
return self._minimizer_enum
64+
6165
@property
6266
def name(self) -> str:
6367
return self._minimizer_enum.name

tests/unit_tests/Fitting/minimizers/test_minimizer_base.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ def minimizer(self):
1717
MinimizerBase.__abstractmethods__ = set()
1818
MinimizerBase.supported_methods = MagicMock(return_value=['method'])
1919

20+
self._mock_minimizer_enum = MagicMock(package='package', method='method')
2021
minimizer = MinimizerBase(
2122
obj='obj',
2223
fit_function='fit_function',
23-
minimizer_enum=MagicMock(package='package', method='method')
24+
minimizer_enum=self._mock_minimizer_enum
2425
)
2526
return minimizer
2627

@@ -47,6 +48,9 @@ def test_init(self, minimizer: MinimizerBase):
4748
assert minimizer._fit_function == None
4849
assert minimizer._constraints == []
4950

51+
def test_enum(self, minimizer: MinimizerBase):
52+
assert minimizer.enum == self._mock_minimizer_enum
53+
5054
def test_evaluate(self, minimizer: MinimizerBase):
5155
# When
5256
minimizer._fit_function = MagicMock(return_value='fit_function_return')

tests/unit_tests/Fitting/test_fitter.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ def test_constructor(self, fitter: Fitter):
2020
assert fitter._fit_object == self.mock_fit_object
2121
assert fitter._fit_function == self.mock_fit_function
2222
assert fitter._dependent_dims is None
23-
assert fitter._enum_current_minimizer == AvailableMinimizers.LMFit_leastsq
23+
assert fitter._enum_current_minimizer is None #== AvailableMinimizers.LMFit_leastsq
24+
assert fitter._minimizer is None
2425
fitter._update_minimizer.assert_called_once_with(AvailableMinimizers.LMFit_leastsq)
2526

2627
def test_fit_constraints(self, fitter: Fitter):

0 commit comments

Comments
 (0)