def test_gen_group_power_spectra(): n_spectra = 3 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params()) assert np.all(xs) assert np.all(ys) assert ys.ndim == 2 assert ys.shape[0] == n_spectra # Test the case in which periodic params are an empty list xs, ys = gen_group_power_spectra(2, [3, 50], [1, 1], []) assert np.all(xs) assert np.all(ys) # Test with a rotation applied returned f_rotation = 20 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params(), f_rotation=f_rotation) assert np.all(xs) assert np.all(ys)
def test_fg_drop(): """Test function to drop results from FOOOFGroup.""" n_spectra = 3 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params()) tfg = FOOOFGroup(verbose=False) # Test dropping one ind tfg.fit(xs, ys) tfg.drop(0) dropped_fres = tfg.group_results[0] for field in dropped_fres._fields: assert np.all(np.isnan(getattr(dropped_fres, field))) # Test dropping multiple inds tfg.fit(xs, ys) drop_inds = [0, 2] tfg.drop(drop_inds) for drop_ind in drop_inds: dropped_fres = tfg.group_results[drop_ind] for field in dropped_fres._fields: assert np.all(np.isnan(getattr(dropped_fres, field))) # Test that a FOOOFGroup that has had inds dropped still works with `get_params` cfs = tfg.get_params('peak_params', 1) exps = tfg.get_params('aperiodic_params', 'exponent') assert np.all(np.isnan(exps[drop_inds])) assert np.all(np.invert(np.isnan(np.delete(exps, drop_inds))))
def test_fg_report(skip_if_no_mpl): """Check that running the top level model method runs.""" n_spectra = 2 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params()) tfg = FOOOFGroup(verbose=False) tfg.report(xs, ys) assert tfg
def test_fg_fit_nk_noise(): """Test FOOOFGroup fit, no knee, on noisy data, to make sure nothing breaks.""" n_spectra = 5 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params(), nlvs=1.0) tfg = FOOOFGroup(max_n_peaks=8, verbose=False) tfg.fit(xs, ys) # No accuracy checking here - just checking that it ran assert tfg.has_model
def test_fit_fooof_3d(tfg): n_spectra = 2 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params()) ys = np.stack([ys, ys], axis=0) tfg = FOOOFGroup() fgs = fit_fooof_3d(tfg, xs, ys) assert len(fgs) == 2 for fg in fgs: assert fg
def test_fg_fit_par(): """Test FOOOFGroup fit, running in parallel.""" n_spectra = 2 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params()) tfg = FOOOFGroup(verbose=False) tfg.fit(xs, ys, n_jobs=2) out = tfg.get_results() assert out assert len(out) == n_spectra assert isinstance(out[0], FOOOFResults) assert np.all(out[1].aperiodic_params)
def test_fg_fit_nk(): """Test FOOOFGroup fit, no knee.""" n_spectra = 2 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params(), nlvs=0) tfg = FOOOFGroup(verbose=False) tfg.fit(xs, ys) out = tfg.get_results() assert out assert len(out) == n_spectra assert isinstance(out[0], FOOOFResults) assert np.all(out[1].aperiodic_params)
def test_fit_fooof_3d(tfg): n_groups = 2 n_spectra = 3 xs, ys = gen_group_power_spectra(n_spectra, *default_group_params()) ys = np.stack([ys] * n_groups, axis=0) spectra_shape = np.shape(ys) tfg = FOOOFGroup() fgs = fit_fooof_3d(tfg, xs, ys) assert len(fgs) == n_groups == spectra_shape[0] for fg in fgs: assert fg assert len(fg) == n_spectra assert fg.power_spectra.shape == spectra_shape[1:]