fooof.sim.gen_group_power_spectra

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

Generate a group of simulated power spectra.

Parameters
n_spectraint

The number of power spectra to generate.

freq_rangelist of [float, float]

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

aperiodic_paramslist of float or generator

Parameters for the aperiodic component of the power spectra.

periodic_paramslist of float or generator

Parameters for the periodic component of the power spectra. Length of n_peaks * 3.

nlvsfloat or list of float or generator, optional, default: 0.005

Noise level to add to generated power spectrum.

freq_resfloat, optional, default: 0.5

Frequency resolution for the simulated power spectra.

f_rotationfloat, optional

Frequency value, in Hz, to rotate around. Should only be set if spectra are to be rotated.

return_paramsbool, optional, default: False

Whether to return the parameters for the simulated spectra.

Returns
freqs1d array

Frequency values, in linear spacing.

powers2d array

Matrix of power values, in linear spacing, as [n_power_spectra, n_freqs].

sim_paramslist of SimParams

Definitions of parameters used for each spectrum. Has length of n_spectra. Only returned if return_params is True.

Notes

Parameters options can be:

  • A single set of parameters. If so, these same parameters are used for all spectra.

  • A list of parameters whose length is n_spectra. If so, each successive parameter set is such for each successive spectrum.

  • A generator object that returns parameters for a power spectrum. If so, each spectrum has parameters sampled from the generator.

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.

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 2 power spectra using the same parameters:

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

Generate 10 power spectra, randomly sampling possible parameters:

>>> from fooof.sim.params import param_sampler
>>> ap_opts = param_sampler([[0, 1.0], [0, 1.5], [0, 2]])
>>> pe_opts = param_sampler([[], [10, 0.5, 1], [10, 0.5, 1, 20, 0.25, 1]])
>>> freqs, powers = gen_group_power_spectra(10, [1, 50], ap_opts, pe_opts)

Generate 5 power spectra, rotated around 20 Hz:

>>> ap_params = [[None, 1], [None, 1.25], [None, 1.5], [None, 1.75], [None, 2]]
>>> pe_params = [10, 0.5, 1]
>>> freqs, powers = gen_group_power_spectra(5, [1, 50], ap_params, pe_params, f_rotation=20)

Generate power spectra stepping across exponent values, and return parameter values:

>>> from fooof.sim.params import Stepper, param_iter
>>> ap_params = param_iter([0, Stepper(1, 2, 0.25)])
>>> pe_params = [10, 0.5, 1]
>>> freqs, powers, sps = gen_group_power_spectra(5, [1, 50], ap_params, pe_params,
...                                              return_params=True)

Examples using fooof.sim.gen_group_power_spectra

Exporting Model Results

Exporting Model Results

Failed Model Fits

Failed Model Fits

Fitting Power Spectrum Models Across 3D Arrays

Fitting Power Spectrum Models Across 3D Arrays

Aperiodic Parameters

Aperiodic Parameters

Frequency-by-Frequency Errors

Frequency-by-Frequency Errors

Plot Model Components

Plot Model Components

Plot Power Spectra

Plot Power Spectra

Simulation Parameters

Simulation Parameters

Simulating Neural Power Spectra

Simulating Neural Power Spectra

07: Tuning & Troubleshooting

07: Tuning & Troubleshooting

08: Further Analysis

08: Further Analysis

09: Reporting & Referencing

09: Reporting & Referencing