Skip to content

Commit 29fee96

Browse files
authored
Merge pull request #407 from fooof-tools/convcheck
[MNT] - Update organization and consistency of `check_options` functions
2 parents 4b04fa0 + d4df7c4 commit 29fee96

20 files changed

Lines changed: 176 additions & 160 deletions

File tree

specparam/algorithms/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
11
"""Algorithms sub-module."""
2+
3+
from .algorithm import Algorithm
4+
5+
# Link in report function to list available algorithms
6+
from specparam.reports.options import check_algorithms

specparam/algorithms/algorithm.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import numpy as np
44

5+
from specparam.data.data import DATA_FORMATS
56
from specparam.utils.checks import check_input_options
67
from specparam.algorithms.settings import SettingsDefinition, SettingsValues
78
from specparam.modutils.docs import docs_get_section, replace_docstring_sections
@@ -10,17 +11,18 @@
1011
###################################################################################################
1112
###################################################################################################
1213

13-
DATA_FORMATS = ['spectrum', 'spectra', 'spectrogram', 'spectrograms']
14-
1514
class Algorithm():
1615
"""Template object for defining a fit algorithm.
1716
18-
Parameters
17+
Attributes
1918
----------
2019
name : str
2120
Name of the fitting algorithm.
2221
description : str
2322
Description of the fitting algorithm.
23+
24+
Parameters
25+
----------
2426
public_settings : SettingsDefinition or dict
2527
Name and description of public settings for the fitting algorithm.
2628
private_settings : SettingsDefinition or dict, optional
@@ -39,13 +41,12 @@ class Algorithm():
3941
Whether to run in debug state, raising an error if encountered during fitting.
4042
"""
4143

42-
def __init__(self, name, description, public_settings, private_settings=None,
43-
data_format='spectrum', modes=None, data=None, results=None, model=None,
44-
debug=False):
45-
"""Initialize Algorithm object."""
44+
name = None
45+
description = None
4646

47-
self.name = name
48-
self.description = description
47+
def __init__(self, public_settings, private_settings=None, data_format='spectrum',
48+
modes=None, data=None, results=None, model=None, debug=False):
49+
"""Initialize Algorithm object."""
4950

5051
if not isinstance(public_settings, SettingsDefinition):
5152
public_settings = SettingsDefinition(public_settings)
@@ -182,15 +183,13 @@ class AlgorithmCF(Algorithm):
182183
% copied in from Algorithm
183184
"""
184185

185-
def __init__(self, name, description, public_settings, private_settings=None,
186-
data_format='spectrum', modes=None, data=None, results=None,
187-
model=None, debug=False):
186+
def __init__(self, public_settings, private_settings=None, data_format='spectrum',
187+
modes=None, data=None, results=None, model=None, debug=False):
188188
"""Initialize Algorithm object."""
189189

190-
Algorithm.__init__(self, name=name, description=description,
191-
public_settings=public_settings, private_settings=private_settings,
192-
data_format=data_format, modes=modes, data=data, results=results,
193-
model=model, debug=debug)
190+
Algorithm.__init__(self, public_settings, private_settings=private_settings,
191+
data_format=data_format, modes=modes, data=data,
192+
results=results, model=model, debug=debug)
194193

195194
self._cf_settings_desc = CURVE_FIT_SETTINGS
196195
self._cf_settings = SettingsValues(self._cf_settings_desc.names)

specparam/algorithms/definitions.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,4 @@
1414
'spectral_fit' : SpectralFitAlgorithm,
1515
}
1616

17-
18-
def check_algorithms():
19-
"""Check the set of available fit algorithms."""
20-
21-
print('Available algorithms:')
22-
for algorithm in ALGORITHMS.values():
23-
algorithm = algorithm()
24-
print(' {:12s} : {:s}'.format(algorithm.name, algorithm.description))
25-
26-
2717
check_algorithm_definition = partial(check_selection, definition=Algorithm)

specparam/algorithms/spectral_fit.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ class SpectralFitAlgorithm(AlgorithmCF):
103103
"""
104104
# pylint: disable=attribute-defined-outside-init
105105

106+
name = 'spectral_fit'
107+
description = 'Original parameterizing neural power spectra algorithm.'
108+
106109
def __init__(self, peak_width_limits=(0.5, 12.0), max_n_peaks=np.inf, min_peak_height=0.0,
107110
peak_threshold=2.0, ap_percentile_thresh=0.025, ap_guess=None, ap_bounds=None,
108111
cf_bound=1.5, bw_std_edge=1.0, gauss_overlap_thresh=0.75, maxfev=5000,
@@ -111,8 +114,6 @@ def __init__(self, peak_width_limits=(0.5, 12.0), max_n_peaks=np.inf, min_peak_h
111114

112115
# Initialize base algorithm object with algorithm metadata
113116
super().__init__(
114-
name='spectral_fit',
115-
description='Original parameterizing neural power spectra algorithm.',
116117
public_settings=SPECTRAL_FIT_SETTINGS_DEF,
117118
private_settings=SPECTRAL_FIT_PRIVATE_SETTINGS_DEF,
118119
modes=modes, data=data, results=results, model=model, debug=debug)

specparam/data/data.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121
###################################################################################################
2222

2323
# Define set of data fields
24-
DATA_FIELDS = ['power_spectrum', 'freq_range', 'freq_res']
2524
META_DATA_FIELDS = ['freq_range', 'freq_res']
26-
FORMATS = ['power']
25+
DATA_FORMATS = ['spectrum', 'spectra', 'spectrogram', 'spectrograms']
26+
DATA_FIELDS = ['power_spectrum', 'freq_range', 'freq_res']
27+
DATA_UNITS = ['power']
2728

2829

2930
class Data():
@@ -58,7 +59,7 @@ class Data():
5859
All power values are stored internally in log10 scale.
5960
"""
6061

61-
def __init__(self, check_freqs=True, check_data=True, format='power', model=None):
62+
def __init__(self, check_freqs=True, check_data=True, units='power', model=None):
6263
"""Initialize Data object."""
6364

6465
self._reset_data(True, True)
@@ -70,8 +71,8 @@ def __init__(self, check_freqs=True, check_data=True, format='power', model=None
7071
'data' : check_data,
7172
}
7273

73-
check_input_options(format, FORMATS, 'format')
74-
self.format = format
74+
check_input_options(units, DATA_UNITS, 'units')
75+
self.units = units
7576

7677
self._model = model
7778

specparam/metrics/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
"""Metrics sub-module."""
22

33
from .metric import Metric
4-
from .check import check_metrics
4+
5+
# Link in report function to list available metrics
6+
from specparam.reports.options import check_metrics

specparam/metrics/check.py

Lines changed: 0 additions & 29 deletions
This file was deleted.

specparam/modes/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
"""Functionality related to definining fit modes."""
22

33
from .mode import Mode
4-
from .check import check_modes
54
from .paramdef import ParamDefinition
5+
6+
# Link in report function to list available modes
7+
from specparam.reports.options import check_modes
8+

specparam/modes/check.py

Lines changed: 0 additions & 35 deletions
This file was deleted.

specparam/params/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
11
"""Sub-module for functionality related to parameters and parameter conversions."""
2+
3+
from .converter import AperiodicParamConverter, PeriodicParamConverter
4+
5+
# Link in report function to list available parameter converters
6+
from specparam.reports.options import check_converters
7+

0 commit comments

Comments
 (0)