From 83a6bef4c00eed960685c5e8a21c34ac744da50b Mon Sep 17 00:00:00 2001 From: Tom Donoghue Date: Sun, 16 Nov 2025 17:42:22 +0000 Subject: [PATCH] add formula to Mode --- specparam/modes/definitions.py | 6 ++++++ specparam/modes/mode.py | 7 +++++-- specparam/tests/modes/test_mode.py | 8 ++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/specparam/modes/definitions.py b/specparam/modes/definitions.py index 4f7c540f..17f027f1 100644 --- a/specparam/modes/definitions.py +++ b/specparam/modes/definitions.py @@ -24,6 +24,7 @@ name='fixed', component='aperiodic', description='Fit an exponential, with no knee.', + formula=None, func=expo_nk_function, jacobian=None, params=params_fixed, @@ -45,6 +46,7 @@ name='knee', component='aperiodic', description='Fit an exponential, with a knee.', + formula=None, func=expo_function, jacobian=None, params=params_knee, @@ -67,6 +69,7 @@ name='doublexp', component='aperiodic', description='Fit an function with 2 exponents and a knee.', + formula=None, func=double_expo_function, jacobian=None, params=params_doublexp, @@ -98,6 +101,7 @@ name='gaussian', component='periodic', description='Gaussian peak fit function.', + formula=None, func=gaussian_function, jacobian=jacobian_gauss, params=params_gauss, @@ -120,6 +124,7 @@ name='skewed_gaussian', component='periodic', description='Skewed Gaussian peak fit function.', + formula=None, func=skewed_gaussian_function, jacobian=None, params=params_skewed_gaussian, @@ -141,6 +146,7 @@ name='cauchy', component='periodic', description='Cauchy peak fit function.', + formula=None, func=cauchy_function, jacobian=None, params=params_cauchy, diff --git a/specparam/modes/mode.py b/specparam/modes/mode.py index 15ac972e..bdcb79f5 100644 --- a/specparam/modes/mode.py +++ b/specparam/modes/mode.py @@ -22,6 +22,8 @@ class Mode(): Which component the mode relates to. description : str Description of the mode. + formula : str + Formula of the fit mode. func : callable Function that defines the fit function for the mode. jacobian : callable, optional @@ -37,13 +39,14 @@ class Mode(): Required spacing of the power values for this mode. """ - def __init__(self, name, component, description, func, jacobian, - params, ndim, freq_space, powers_space): + def __init__(self, name, component, description, formula, func, + jacobian, params, ndim, freq_space, powers_space): """Initialize a mode.""" self.name = name self.component = check_input_options(component, VALID_COMPONENTS, 'component') self.description = description + self.formula = formula self.func = func self.jacobian = jacobian diff --git a/specparam/tests/modes/test_mode.py b/specparam/tests/modes/test_mode.py index 09cf7950..08788254 100644 --- a/specparam/tests/modes/test_mode.py +++ b/specparam/tests/modes/test_mode.py @@ -20,8 +20,8 @@ def tfit(xs, *params): })) tmode = Mode(name='tmode', component='periodic', description='test_desc', - func=tfit, jacobian=None, params=params, ndim=1, - freq_space='linear', powers_space='linear') + formula='tformula', func=tfit, jacobian=None, params=params, + ndim=1, freq_space='linear', powers_space='linear') assert tmode assert tmode.n_params == params.n_params tmode.check_params() @@ -37,7 +37,7 @@ def tfit2(xs, *params): } tmode = Mode(name='tmode', component='aperiodic', description='test_desc2', - func=tfit2, jacobian=None, params=params, ndim=2, - freq_space='linear', powers_space='linear') + formula='tformula', func=tfit2, jacobian=None, params=params, + ndim=2, freq_space='linear', powers_space='linear') assert tmode assert isinstance(tmode.params, ParamDefinition)