def test_compute_highest_outlier_works(self): mp_ind = 5 max_power = 1000.0 ps = Powerspectrum() ps.freq = np.arange(10) ps.power = np.ones_like(ps.freq) ps.power[mp_ind] = max_power ps.m = 1 ps.df = ps.freq[1]-ps.freq[0] ps.norm = "leahy" model = models.Const1D() p_amplitude = lambda amplitude: \ scipy.stats.norm(loc=1.0, scale=1.0).pdf( amplitude) priors = {"amplitude": p_amplitude} lpost = PSDPosterior(ps.freq, ps.power, model, 1) lpost.logprior = set_logprior(lpost, priors) pe = PSDParEst(ps) res = pe.fit(lpost, [1.0]) res.mfit = np.ones_like(ps.freq) max_y, max_x, max_ind = pe._compute_highest_outlier(lpost, res) assert np.isclose(max_y[0], 2*max_power) assert np.isclose(max_x[0], ps.freq[mp_ind]) assert max_ind == mp_ind
priors = {} priors["alpha_0"] = p_alpha priors["amplitude_0"] = p_amplitude priors["amplitude_1"] = p_whitenoise starting_pars = [3.0, 1.0, 2.4] lpost = PSDPosterior(ps.freq, ps.power, plc, priors=priors, m=ps.m) parest = PSDParEst(ps, fitmethod='BFGS', max_post=True) res = parest.fit(lpost, starting_pars) sample = parest.sample(lpost, res.p_opt, cov=res.cov, nwalkers=400, niter=100, burnin=200, namestr="psd_modeling_test") max_power, max_freq, max_ind = parest._compute_highest_outlier(lpost, res) print(max_power) pval = parest.calibrate_highest_outlier(lpost, starting_pars, sample=sample, max_post=True, nsim=100, niter=100, nwalkers=400, burnin=200, namestr="test") print(pval)