Ejemplo n.º 1
0
Archivo: load.py Proyecto: dessn/sn-bhm
def debug_plots(std):
    print(std)

    res = load_stan_from_folder(std, merge=True, cut=False)
    chain, posterior, t, p, f, l, w, ow = res
    # print(w.mean())
    # import matplotlib.pyplot as plt
    # plt.hist(np.log(w), 100)
    # plt.show()
    # exit()
    logw = np.log(w)
    m = np.mean(logw)
    s = np.std(logw)
    print(m, s)
    logw -= (m + 3 * s)
    good = logw < 0
    logw *= good
    w = np.exp(logw)

    c = ChainConsumer()
    c.add_chain(chain, weights=w, name="corrected")
    c.configure(summary=True)
    c.plot(figsize=2.0, filename="output.png", parameters=9)

    c = ChainConsumer()
    c.add_chain(chain, name="uncorrected")
    c.add_chain(chain, weights=w, name="corrected")
    # c.add_chain(chain, name="calib")
    c.plot(filename="output_comparison.png", parameters=9, figsize=1.3)
    c.plot_walks(chains=1, filename="walks.png")
Ejemplo n.º 2
0
Archivo: load.py Proyecto: dessn/sn-bhm
def debug_plots(std):
    print(std)

    res = load_stan_from_folder(std, merge=True, cut=False)
    chain, posterior, t, p, f, l, w, ow = res
    print(w.mean(), np.std(w), np.mean(np.log(w)), np.std(np.log(w)))
    # import matplotlib.pyplot as plt
    # plt.hist(np.log(w), 100)
    # plt.show()
    # exit()

    logw = np.log(w)
    m = np.mean(logw)
    s = np.std(logw)
    print(m, s)
    logw -= (m + 3 * s)
    good = logw < 0
    logw *= good
    w = np.exp(logw)

    sorti = np.argsort(w)
    for key in chain.keys():
        chain[key] = chain[key][sorti]
    w = w[sorti]
    ow = ow[sorti]
    posterior = posterior[sorti]

    c = ChainConsumer()
    truth = [0.3, 0.14, 3.1, -19.365, 0, 0, 0.1, 1.0, 0.1, 0, 0, 0, 0, 0, 0]
    c.add_chain(chain, name="uncorrected", posterior=posterior)
    c.add_chain(chain, weights=w, name="corrected", posterior=posterior)
    c.plot(filename="output.png", parameters=9, truth=truth, figsize=1.3)
    # c = ChainConsumer()
    # c.add_chain(chain, weights=w, name="corrected")
    c.plot_walks(chains="corrected", filename="walks.png", truth=truth)
Ejemplo n.º 3
0
Archivo: load.py Proyecto: dessn/sn-bhm
def plot_single_cosmology(folder, output, i=0, output_walk=None):
    print("Plotting cosmology realisation %d" % i)
    res = load_stan_from_folder(folder, merge=False)
    c = ChainConsumer()
    chain, posterior, t, p, f, l, w, ow = res[i]
    c.add_chain(chain, weights=w, posterior=posterior, walkers=l, name="%d"%i)
    c.plot(filename=output, truth=t, figsize=0.75)
    if output_walk is not None:
        c.plot_walks(filename=output_walk)
Ejemplo n.º 4
0
Archivo: load.py Proyecto: dessn/sn-bhm
def plot_all(folder, output, output_walk=None):
    """ Plot all chains as one """
    print("Plotting all as one")
    chain, posterior, t, p, f, l, w, ow = load_stan_from_folder(folder, merge=True)
    c = ChainConsumer()
    c.add_chain(chain, weights=w, posterior=posterior, walkers=l)
    c.plot(filename=output, truth=t, figsize=0.75)
    if output_walk is not None:
        c.plot_walks(filename=output_walk)
Ejemplo n.º 5
0
Archivo: load.py Proyecto: dessn/sn-bhm
def debug_plots(std):
    print(std)

    do_weight = True
    do_walk = True
    load_second = True

    res = load_stan_from_folder(std, merge=False, num=0, cut=False)
    chain, posterior, t, p, f, l, w, ow = res[0]

    if do_walk:
        # print("owww ", ow.min(), ow.max())
        # print("www ", w.min(), w.max())
        chain2 = chain.copy()
        logw = np.log10(w)
        a = np.argsort(logw)
        logw = logw[a]
        for k in chain:
            chain2[k] = chain2[k][a]
        chain2["ow"] = np.log10(ow)
        chain2["ww"] = logw
        c = ChainConsumer()
        c.add_chain(chain2, weights=w, name="calib")
        c.plot_walks(truth=t, filename="walk_new.png")

    c = ChainConsumer()
    if do_weight:
        c.add_chain(chain, weights=w, name="calib")
    else:
        c.add_chain(chain, name="calib")

    if load_second:
        res2 = load_stan_from_folder(std + "_calib_data_no_calib_model_and_bias", num=0, merge=False, cut=False)
        chain, posterior, _, p, f, l, w, ow = res2[0]

        if do_weight:
            c.add_chain(chain, weights=w, name="nocalib")
        else:
            c.add_chain(chain, name="nocalib")
    c.plot(filename="output.png", truth=t, figsize=0.75)
Ejemplo n.º 6
0
                                    lnprob,
                                    args=(zhel, zcmb, mb, x1, color, thirdvar,
                                          Cmu, blind_values),
                                    threads=4)
    # run the sampler
    # how many steps (will have nSteps*nwalkers of samples)
    sampler.run_mcmc(pos, nSteps)

    if options.plot:
        burnin = 0  # change
        data = np.genfromtxt(
            options.chains +
            '/my_params_JLA_FlatwCDM_CPL_uncorrected_PV_blind_%s.txt' % date,
            delimiter=',')
        data = data[burnin:]
        c = ChainConsumer()
        c.add_chain(data,
                    parameters=[
                        r'$\Omega_m$', r'$w_0$', r'$\\alpha$', r'$\beta$',
                        r'$M_B$', r'$\Delta_M$'
                    ])
        params = c.get_summary()
        print params.keys()

        figw = c.plot_walks()
        figw.show()
        fig = c.plot()
        figw.savefig(options.chains + '/walks.png')
        fig.savefig(options.chains + '/marginals.png')
        fig.show()
Ejemplo n.º 7
0
        model_good = EfficiencyModelUncorrected(cs, zs, ts, calibration, zeros, ls, ss, t0s, name="Good%d" % i)
        model_good.fit(sampler, chain_consumer=c)

        model_un = EfficiencyModelUncorrected(cs[mask], zs[mask], ts[mask], calibration,
                                              zeros, ls[mask], ss[mask], t0s[mask], name="Uncorrected%d" % i)
        model_un.fit(sampler, chain_consumer=c)

        biased_chain = c.chains[-1]
        # model_cor.fit(sampler, chain_consumer=c)

        filename = dir_name + "/output/weights.txt"
        if not os.path.exists(filename):
            weights = []
            for i, row in enumerate(biased_chain):
                weights.append(get_weights(row[0], row[1], row[2], row[3], row[4], row[5], threshold))
                print(100.0 * i / biased_chain.shape[0])
            weights = np.array(weights)
            np.savetxt(filename, weights)
        else:
            weights = np.loadtxt(filename)
        weights = (1 / np.power(weights, mask.sum()))
        c.add_chain(biased_chain, name="Importance Sampled", weights=weights)

    c.configure_bar(shade=True)
    c.configure_general(bins=1.0, colours=colours)
    c.configure_contour(sigmas=[0, 0.01, 1, 2], contourf=True, contourf_alpha=0.2)
    c.plot(filename=plot_file, truth=theta, figsize=(7, 7), legend=False, parameters=6)
    for i in range(len(c.chains)):
        c.plot_walks(filename=walk_file % c.names[i], chain=i, truth=theta)
Ejemplo n.º 8
0
    for i in range(n):
        mean, std, observed, errors, alpha, actual, uo, oe, am = get_data(seed=i)
        theta_good = [mean, std] + actual.tolist()
        theta_bias = [mean, std] + am.tolist()
        kwargs = {"num_steps": 70000, "num_burn": 20000, "save_interval": 300,
                  "plot_covariance": True, "unify_latent": True}  # , "callback": v.callback
        sampler = BatchMetropolisHastings(num_walkers=w, kwargs=kwargs, temp_dir=t % i, num_cores=4)

        model_good = EfficiencyModelUncorrected(uo, oe, name="Good%d" % i)
        model_good.fit(sampler, chain_consumer=c)
        print("Good ", model_good.get_log_posterior(theta_good), c.posteriors[-1][-1])

        model_un = EfficiencyModelUncorrected(observed, errors, name="Uncorrected%d" % i)
        model_un.fit(sampler, chain_consumer=c)
        print("Uncorrected ", model_un.get_log_posterior(theta_bias), c.posteriors[-1][-1])

        model_cor = EfficiencyModelCorrected(observed, errors, alpha, name="Corrected%d" % i)
        model_cor.fit(sampler, chain_consumer=c)
        print("Corrected ", model_cor.get_log_posterior(theta_bias), c.posteriors[-1][-1])

    c.configure_bar(shade=True)
    c.configure_general(bins=1.0, colours=colours)
    c.configure_contour(sigmas=[0, 0.01, 1, 2], shade=True, shade_alpha=0.3)
    c.plot(filename=plot_file, truth=theta_bias, figsize=(5, 5), legend=False)
    for i in range(len(c.chains)):
        c.plot_walks(filename=walk_file % c.names[i], chain=i, truth=[mean, std])
        # c.divide_chain(i, w).configure_general(rainbow=True) \
        #     .plot(figsize=(5, 5), filename=plot_file.replace(".png", "_%s.png" % c.names[i]),
        #           truth=theta_bias)