fooof.sim.gen_power_spectrum

fooof.sim.gen_power_spectrum(freq_range, aperiodic_params, periodic_params, nlv=0.005, freq_res=0.5, f_rotation=None, return_params=False)[source]

Generate a simulated power spectrum.

Parameters
freq_rangelist of [float, float]

Frequency range to simulate power spectrum across, as [f_low, f_high], inclusive.

aperiodic_paramslist of float

Parameters to create the aperiodic component of a power spectrum. Length should be 2 or 3 (see note).

periodic_paramslist of float or list of list of float

Parameters to create the periodic component of a power spectrum. Total length of n_peaks * 3 (see note).

nlvfloat, optional, default: 0.005

Noise level to add to generated power spectrum.

freq_resfloat, optional, default: 0.5

Frequency resolution for the simulated power spectrum.

f_rotationfloat, optional

Frequency value, in Hz, to rotate around. Should only be set if spectrum is to be rotated.

return_paramsbool, optional, default: False

Whether to return the parameters for the simulated spectrum.

Returns
freqs1d array

Frequency values, in linear spacing.

powers1d array

Power values, in linear spacing.

sim_paramsSimParams

Definition of parameters used to create the spectrum. Only returned if return_params is True.

Notes

Aperiodic Parameters:

  • The function for the aperiodic process to use is inferred from the provided parameters.

  • If length of 2, the ‘fixed’ aperiodic mode is used, if length of 3, ‘knee’ is used.

Periodic Parameters:

  • The periodic component is comprised of a set of ‘peaks’, each of which is described as:

    • Mean (Center Frequency), height (Power), and standard deviation (Bandwidth).

    • Make sure any center frequencies you request are within the simulated frequency range.

  • The total number of parameters that need to be specified is number of peaks * 3

    • These can be specified in as all together in a flat list (ex: [10, 1, 1, 20, 0.5, 1])

    • They can also be grouped into a list of lists (ex: [[10, 1, 1], [20, 0.5, 1]])

Rotating Power Spectra:

  • You can optionally specify a rotation frequency, such that power spectra will be simulated and rotated around that point to the specified aperiodic exponent.

    • This can be used so that any power spectra simulated with the same ‘f_rotation’ will relate to each other by having the specified rotation point.

  • Note that rotating power spectra changes the offset.

    • If you specify an offset value to simulate as well as ‘f_rotation’, the returned spectrum will NOT have the requested offset. It instead will have the offset value required to create the requested aperiodic exponent with the requested rotation point.

    • If you return SimParams, the recorded offset will be the calculated offset of the data post rotation, and not the entered value.

  • You cannot rotate power spectra simulated with a knee.

    • The procedure we use to rotate does not support spectra with a knee, and so setting ‘f_rotation’ with a knee will lead to an error.

Examples

Generate a power spectrum with a single peak, at 10 Hz:

>>> freqs, powers = gen_power_spectrum([1, 50], [0, 2], [10, 0.5, 1])

Generate a power spectrum with alpha and beta peaks:

>>> freqs, powers = gen_power_spectrum([1, 50], [0, 2], [[10, 0.5, 1], [20, 0.5, 1]])

Generate a power spectrum, that was rotated around a particular frequency point:

>>> freqs, powers = gen_power_spectrum([1, 50], [None, 2], [10, 0.5, 1], f_rotation=15)