Skip to content

Commit 5801f84

Browse files
committed
Add draft of average_fg
1 parent e70d573 commit 5801f84

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

fooof/funcs.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,47 @@
22

33
import numpy as np
44

5-
from fooof import FOOOFGroup
5+
from fooof import FOOOF, FOOOFGroup
66
from fooof.synth.gen import gen_freqs
77
from fooof.utils import compare_info
88

99
###################################################################################################
1010
###################################################################################################
1111

12+
def average_fg(fg, bands, avg='mean'):
13+
"""Average across a FOOOFGroup object."""
14+
15+
if avg == 'mean':
16+
avg_func = np.nanmean
17+
elif avg == 'median':
18+
avg_func = np.nanmedian
19+
20+
ap_params = avg_func(fg.get_all_data('aperiodic_params'), 0)
21+
22+
peak_params, gaussian_params = np.empty([0, 3]), np.empty([0, 3])
23+
24+
for label, band in bands:
25+
26+
peak_params = np.vstack([peak_params,
27+
avg_func(get_band_peak_group(fg.get_all_data('peak_params'), band, len(fg)), 0)])
28+
29+
gaussian_params = np.vstack([gaussian_params,
30+
avg_func(get_band_peak_group(fg.get_all_data('gaussian_params'), band, len(fg)), 0)])
31+
32+
r2 = avg_func(fg.get_all_data('r_squared'))
33+
error = avg_func(fg.get_all_data('error'))
34+
35+
results = FOOOFResults(ap_params, peak_params, r2, error, gaussian_params)
36+
37+
# Create the new FOOOF object, with settings, data info & results
38+
fm = FOOOF()
39+
fm.add_settings(fg.get_settings())
40+
fm.add_data_info(fg.get_data_info())
41+
fm.add_results(results)
42+
43+
return fm
44+
45+
1246
def combine_fooofs(fooofs):
1347
"""Combine a group of FOOOF and/or FOOOFGroup objects into a single FOOOFGroup object.
1448

0 commit comments

Comments
 (0)