fooof icon indicating copy to clipboard operation
fooof copied to clipboard

Mixing of linear and log10 scale in `gen_power_spectrum`

Open tensionhead opened this issue 1 year ago • 0 comments

When assembling the synthetic power spectra in gen.py here:

powers = np.power(10, ap_vals + pe_vals + noise)

obviously it is assumed, that all components are on log10 scale. However when tracing the periodic component (gen_periodic -> get_pe_func -> gaussian_function), it is clear that the Gaussians are evaluated on a linear scale and then still exponentiated.

To directly see this, one can simply do:

import fooof
import matplotlib.pyplot as ppl
gauss_peak_val = 2
ppl.plot(*fooof.sim.gen_power_spectrum([1, 40], [0, 1e-10], [20, gauss_peak_val, 1]))

which results in: fooof_spec

Note that the peak value in that supposedly linear scale is $10^2 = 100$, whereas the gauss_peak_val was set to 2. Also note that I effectively disabled the aperiodic component by setting the exponent very close to 0 to show this as clearly as possible.

tensionhead avatar Aug 31 '22 15:08 tensionhead