Example #1
0
    def get_overall_best_fit(self, pars, **specargs):
        """Returns the overall best-fit, the chi-square and the N.d.o.f."""
        if type(pars) == str: pars = [pars]

        for s, v in enumerate(self.p.get("data_vectors")):

            d = DataManager(self.p, v, self.cosmo, all_data=False)
            self.d = d
            lik = Likelihood(self.p.get('params'),
                             d.data_vector,
                             d.covar,
                             self._th,
                             template=d.templates)
            sam = Sampler(lik.lnprob, lik.p0, lik.p_free_names,
                          self.p.get_sampler_prefix(v['name']),
                          self.p.get('mcmc'))

            sam.get_chain()
            sam.update_p0(sam.chain[np.argmax(sam.probs)])
            kwargs = lik.build_kwargs(sam.p0)

            w = kwargs["width"]
            zz, NN = self._get_dndz(d.tracers[0][0].dndz, w)
            zmean = np.average(zz, weights=NN)
            kwargs["z"] = zmean
            kwargs["chi2"] = lik.chi2(sam.p0)
            all_pars = self.p.p.get("params")
            dof = np.sum(
                [param["vary"] for param in all_pars if "vary" in param])
            kwargs["dof"] = len(lik.dv) - dof
            kwargs["PTE"] = 1 - chi2.cdf(kwargs["chi2"], kwargs["dof"])

            if s == 0:
                keys = ["z", "chi2", "dof", "PTE"] + pars
                OV_BF = {k: kwargs[k] for k in keys}
            else:
                for k in keys:
                    OV_BF[k] = np.vstack((OV_BF[k], kwargs[k]))

        return OV_BF
Example #2
0
                             save_figure=True,
                             prefix=p.get_sampler_prefix(v['name']))
    print(" Best-fit parameters:")
    pars = []
    for i, nn, in enumerate(sam.parnames):
        CHAIN = sam.chain[:, i]
        vmin, vv, vmax = np.percentile(CHAIN, [16, 50, 84])
        pars.append(vv)
        errmin, errmax = vv-vmin, vmax-vv
        print("  " + nn + " : %.3lE +/- (%.3lE %.3lE)" % (vv, errmax, errmin))
        if nn == 'b_hydro':
            bmeans.append(vv)          # median
            sbmeans[0].append(errmin)  # min errorbar
            sbmeans[1].append(errmax) # max errorbar
        chain = sam.chain
    pars.append(lik.chi2(sam.p0))
    pars.append(len(d.data_vector))
    np.save(p.get_outdir() + "best_fit_params_" + run_name + "_"
            +v["name"]+".npy", np.array(pars))
    print(" chi^2 = %lf" % (lik.chi2(sam.p0)))
    print(" n_data = %d" % (len(d.data_vector)))
    # print(" b_g = %.3lE +/- (%.3lE %.3lE) " % (bg, bg-bgmin, bgmax-bg))
    # print(" b_y = %.3lE +/- (%.3lE %.3lE) " % (by, by-bymin, bymax-by))


fig, ax = plt.subplots()
ax.errorbar(zmeans, 1-np.array(bmeans), yerr=np.flip(sbmeans, 0), fmt='ro')
ax.set_xlabel('$z$', fontsize=15)
ax.set_ylabel('$1-b$', fontsize=15)
fig.savefig(p.get_sampler_prefix('b_hydro')+'all.pdf', bbox_inches='tight')
Example #3
0
                 th,
                 template=d.templates,
                 debug=p.get('mcmc')['debug'])
# Set up sampler
p0 = p.get_map_p0(lik.p_free_names)  # p0 for particular map
sam = Sampler(lik.lnprob, p0, lik.p_free_names,
              p.get_sampler_prefix(v['name']), p.get('mcmc'))

# print(dict(zip(lik.p_free_names, p0)))
# print("chisq:", lik.chi2(p0))
# exit(1)

# Compute best fit and covariance
if not sam.read_properties():
    print(" Computing best-fit and covariance")
    sam.get_best_fit(update_p0=True)
    cov0 = sam.get_covariance(update_cov=True)
    sam.save_properties()

print(" Best-fit parameters:")
for n, val, s in zip(sam.parnames, sam.p0, np.sqrt(np.diag(sam.covar))):
    print("  " + n + " : %.3lE +- %.3lE" % (val, s))
print(" chi^2 = %lf" % (lik.chi2(sam.p0)))
print(" n_data = %d" % (len(d.data_vector)))

if sam.nsteps > 0:
    print(" Sampling:")
    sam.sample(carry_on=p.get('mcmc')['continue_mcmc'],
               verbosity=1,
               use_mpi=args.no_mpi)
Example #4
0
                          hm_correction=hm_correction,
                          selection=sel,
                          **pars)

    # Set up likelihood
    lik = Likelihood(p.get('params'),
                     d.data_vector,
                     d.covar,
                     th,
                     template=d.templates,
                     debug=p.get('mcmc')['debug'])

    p0 = extract_map_p0(p, v, lik.p_free_names)  # p0 for particular map
    # Benchmarks
    print(dict(zip(lik.p_free_names, p0)))
    print("chisq:", lik.chi2(p0))
    exit(1)
    # Set up sampler
    sam = Sampler(lik.lnprob, lik.p0, lik.p_free_names,
                  p.get_sampler_prefix(v['name']), p.get('mcmc'))

    # Benchmarks
    # print(dict(zip(lik.p_free_names, lik.p0)))
    # print("chisq:", lik.chi2(lik.p0))

    # Compute best fit and covariance around it
    if not sam.read_properties():
        print(" Computing best-fit and covariance")
        sam.get_best_fit(update_p0=True)
        cov0 = sam.get_covariance(update_cov=True)
        sam.save_properties()
Example #5
0
    indd = unequal_enumerate(lsd)
    tvd = eval_and_unwrap(params, thd.th, indd)
    tv1hd = eval_and_unwrap(params, thd.th1h, indd)
    tv2hd = eval_and_unwrap(params, thd.th2h, indd)

    indg = unequal_enumerate(lsg)
    tvg = eval_and_unwrap(params, thg.th, indg)
    tv1hg = eval_and_unwrap(params, thg.th1h, indg)
    tv2hg = eval_and_unwrap(params, thg.th2h, indg)

    # Reshape data vector
    dv = unwrap(likg.dv, indg)
    # Compute error bars and reshape
    ev = unwrap(np.sqrt(np.diag(likg.cv)), indg)
    # Compute chi^2
    chi2 = likd.chi2(sam.p0)
    dof = len(likd.dv)

    for i in range(2):

        # set-up subplot
        gs = GridSpecFromSubplotSpec(2,
                                     1,
                                     subplot_spec=gs_main[s, i],
                                     height_ratios=[3, 1],
                                     hspace=0)
        ax1 = f.add_subplot(gs[0])
        ax2 = f.add_subplot(gs[1])

        # Create mask
        lmin = v["twopoints"][i]["lmin"]
Example #6
0
    for nam, val, sig in zip(sam.parnames, sam.p0,
                             np.sqrt(np.diag(sam.covar))):
        param_jk_values[nam] = val
        print("  " + nam + " : %.3lE +- %.3lE" % (val, sig))
        if nam == p.get("mcmc")["save_par"]: par.append(val)
    z, nz = np.loadtxt(d.tracers[0][0].dndz, unpack=True)
    zmean = np.average(z, weights=nz)
    sigz = np.sqrt(np.sum(nz * (z - zmean)**2) / np.sum(nz))
    zarr = np.linspace(zmean - sigz, zmean + sigz, 10)
    bg = np.mean(
        hm_bias(cosmo, 1. / (1 + zarr), d.tracers[0][0].profile,
                **(lik.build_kwargs(sam.p0))))
    by = np.mean(
        hm_bias(cosmo, 1. / (1 + zarr), d.tracers[1][1].profile,
                **(lik.build_kwargs(sam.p0))))
    chi2 = lik.chi2(sam.p0)
    print("  b_g : %.3lE" % bg)
    print("  b_y : %.3lE" % by)
    print(" chi^2 = %lf" % chi2)
    print(" n_data = %d" % (len(d.data_vector)))
    param_jk_values['b_g'] = bg
    param_jk_values['b_y'] = by
    param_jk_values['chi2'] = chi2

    np.savez(p.get_sampler_prefix(v['name']) + "jk%d_vals" % jk_region,
             M1=np.array(param_jk_values['M1']),
             Mmin=np.array(param_jk_values['Mmin']),
             b_hydro=np.array(param_jk_values['b_hydro']),
             r_corr=np.array(param_jk_values['r_corr']),
             width=np.array(param_jk_values['width']),
             b_g=np.array(param_jk_values['b_g']),