Skip to content

Commit 366fd45

Browse files
committed
add check_converters & updates
1 parent 018983c commit 366fd45

4 files changed

Lines changed: 54 additions & 19 deletions

File tree

specparam/convert/definitions.py

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,30 @@
1111
'periodic' : {'cf' : None, 'pw' : 'log_sub', 'bw' : 'full_width'},
1212
}
1313

14+
###################################################################################################
15+
## APERIODIC PARAMETER CONVERTERS
16+
17+
# Null converter for aperiodic parameters
18+
ap_null = AperiodicParamConverter(
19+
parameter=None,
20+
name='ap_null',
21+
description='Null converter for aperiodic converter - return fit param.',
22+
function=lambda param, model : \
23+
model.results.params.aperiodic._fit[model.modes.aperiodic.params.indices[param]]
24+
)
25+
26+
###################################################################################################
27+
## PERIODIC PARAMETER CONVERTERS
28+
29+
# Null converter for periodic parameters
30+
pe_null = PeriodicParamConverter(
31+
parameter=None,
32+
name='pe_null',
33+
description='Null converter for aperiodic converter - return fit param.',
34+
function=lambda param, model, peak_ind : \
35+
model.results.params.periodic._fit[peak_ind, model.modes.periodic.params.indices[param]]
36+
)
37+
1438
###################################################################################################
1539
## PRE-DEFINED CONVERTERS
1640

@@ -86,30 +110,16 @@
86110
}
87111

88112
###################################################################################################
89-
## NULL CONVERTERS: extract the fit parameter, with no conversion applied
113+
## COLLECT ALL CONVERTERS
90114

115+
# Null converters: extract the fit parameter, with no conversion applied
91116
NULL_CONVERTERS = {
92-
93-
'aperiodic' : AperiodicParamConverter(
94-
parameter=None,
95-
name='ap_null',
96-
description='Null converter for aperiodic converter - return fit param',
97-
function=lambda param, model : \
98-
model.results.params.aperiodic._fit[model.modes.aperiodic.params.indices[param]]
99-
),
100-
101-
'periodic' : PeriodicParamConverter(
102-
parameter=None,
103-
name='pe_null',
104-
description='Null converter for aperiodic converter - return fit param',
105-
function=lambda param, model, peak_ind : \
106-
model.results.params.periodic._fit[peak_ind, model.modes.periodic.params.indices[param]]
107-
)
108-
117+
'aperiodic' : ap_null,
118+
'periodic' : pe_null,
109119
}
110120

111121
###################################################################################################
112-
## SELECTOR
122+
## SELECTOR & CHECKER FUNCTIONS
113123

114124
def get_converter(component, parameter, converter):
115125
"""Get a specified parameter converter function.
@@ -146,3 +156,19 @@ def get_converter(component, parameter, converter):
146156
converter = NULL_CONVERTERS[component]
147157

148158
return converter
159+
160+
161+
def check_converters(component):
162+
"""Check the set of parameter converters that are available.
163+
164+
Parameters
165+
----------
166+
component : {'aperiodic', 'periodic'}
167+
Which component to check available parameter converters for.
168+
"""
169+
170+
print('Available {:s} converters:'.format(component))
171+
for param, convs in CONVERTERS[component].items():
172+
print(param)
173+
for label, converter in convs.items():
174+
print(' {:10s} {:s}'.format(converter.name, converter.description))

specparam/modes/definitions.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@
166166
'periodic' : PE_MODES,
167167
}
168168

169+
###################################################################################################
170+
## CHECKER FUNCTION
169171

170172
def check_modes(component, check_params=False):
171173
"""Check the set of modes that are available.

specparam/tests/convert/test_converter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ def test_aperiodic_param_converter():
1515
apconv = AperiodicParamConverter('tparameter', 'tname', 'tdescription',
1616
lambda param, model : param)
1717
assert apconv
18+
assert apconv.component == 'aperiodic'
1819
assert apconv(1, None) == 1
1920

2021
def test_periodic_param_converter():
2122

2223
peconv = PeriodicParamConverter('tparameter', 'tname', 'tdescription',
2324
lambda param, model, peak_ind : param)
2425
assert peconv
26+
assert peconv.component == 'periodic'
2527
assert peconv(1, None, None) == 1

specparam/tests/convert/test_definitions.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,8 @@ def test_converters_library():
1717
assert converter.component == component
1818
assert converter.name == label
1919
assert callable(converter.function)
20+
21+
def test_check_converters():
22+
23+
check_converters('aperiodic')
24+
check_converters('periodic')

0 commit comments

Comments
 (0)