From 6e2225681a18818a7a79dd8e46cb35ae101cc9d0 Mon Sep 17 00:00:00 2001 From: Tom Donoghue Date: Thu, 10 Apr 2025 11:21:33 -0400 Subject: [PATCH] allow params in Mode def to be dict --- specparam/modes/mode.py | 5 ++++- specparam/tests/modes/test_mode.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/specparam/modes/mode.py b/specparam/modes/mode.py index 8631c9e9..d010110a 100644 --- a/specparam/modes/mode.py +++ b/specparam/modes/mode.py @@ -1,5 +1,6 @@ """Mode object.""" +from specparam.modes.params import ParamDefinition from specparam.utils.checks import check_input_options ################################################################################################### @@ -25,7 +26,7 @@ class Mode(): Function that defines the fit function for the mode. jacobian : callable, optional Function for computing Jacobian matrix corresponding to `func`. - params : ParamDefinition + params : dict or ParamDefinition Parameter definition. freq_space : {'linear', 'log10'} Required spacing of the frequency values for this mode. @@ -44,6 +45,8 @@ def __init__(self, name, component, description, func, jacobian, self.func = func self.jacobian = jacobian + if isinstance(params, dict): + params = ParamDefinition(params) self.params = params self.spacing = { diff --git a/specparam/tests/modes/test_mode.py b/specparam/tests/modes/test_mode.py index 406d5a39..96f641e9 100644 --- a/specparam/tests/modes/test_mode.py +++ b/specparam/tests/modes/test_mode.py @@ -24,3 +24,19 @@ def tfit(xs, *params): freq_space='linear', powers_space='linear') assert tmode assert tmode.n_params == params.n_params + +def test_mode_params_dict(): + + def tfit2(xs, *params): + return xs + + params = { + 'a' : 'a desc', + 'b' : 'b desc', + } + + tmode = Mode(name='tmode', component='aperiodic', description='test_desc2', + func=tfit2, jacobian=None, params=params, + freq_space='linear', powers_space='linear') + assert tmode + assert isinstance(tmode.params, ParamDefinition)