Example #1
0
def plot_ml_powspec_with_band(sigmas, lmax=50, sample_fraction=0.68, label=None, color='red', mlcolor='blue',spec=0, burnin=0):
    if isinstance(sigmas, str):
        sigmas = pyfits.open(sigmas)[0].data
    numsamps = np.sum(sigmas[0, :, 0, 0]) - len(sigmas[0, :, 0, 0]) * burnin
    nsigmas = np.zeros(np.append(numsamps, sigmas.shape[2:]))
    j = 0
    for i in range(len(sigmas[0, :, 0, 0])):
        jprev = j
        j += sigmas[0, i, 0, 0] - burnin
        nsigmas[jprev:j] = sigmas[burnin + 1:sigmas[0, i, 0, 0] + 1, i]
#    sigmas = np.reshape(sigmas[1:], ((sigmas.shape[0] - 1) * sigmas.shape[1], 1, sigmas.shape[2], sigmas.shape[3]))
    ls = np.arange(2, lmax + 1)
    res = np.zeros((len(ls), 3))
    i = 0
    for l in ls:
        samps = nsigmas[:, spec, l]
        x = np.linspace(min(samps), max(samps), 100)
        ml, upper, lower = gen_utils.calculate_ml_and_asymm_errorbars_from_samples(samps, x, sample_fraction, smooth=False)
        res[i, 0] = ml
#        res[i, 1] = ml - lower
#        res[i, 2] = upper - ml
        res[i, 1] = lower
        res[i, 2] = upper
        i += 1
    plt.plot(ls, res[:, 1], color=color, label=label)
    plt.plot(ls, res[:, 2], color=color)
    plt.fill_between(ls, res[:, 2], res[:, 1], color=color, alpha=0.5)
    plt.plot(ls, res[:, 0], color=mlcolor, label=label)
Example #2
0
def plot_errbars_from_sigma_sample_marginals(ls, sigmas, burnin=0, spec=0, lmax=20, sample_fraction=0.68, label=None, color=None, shift=0):
    if isinstance(sigmas, str):
        sigmas = pyfits.open(sigmas)[0].data
    numsamps = np.sum(sigmas[0, :, 0, 0]) - len(sigmas[0, :, 0, 0]) * burnin
    nsigmas = np.zeros(np.append(numsamps, sigmas.shape[2:]))
    j = 0
    for i in range(len(sigmas[0, :, 0, 0])):
        jprev = j
        j += sigmas[0, i, 0, 0] - burnin
        nsigmas[jprev:j] = sigmas[burnin + 1:sigmas[0, i, 0, 0] + 1, i]
#    sigmas = np.reshape(sigmas[1:], ((sigmas.shape[0] - 1) * sigmas.shape[1], 1, sigmas.shape[2], sigmas.shape[3]))
    res = np.zeros((len(ls), 3))
    i = 0
    for l in ls:
        samps = nsigmas[:, spec, l]
        x = np.linspace(min(samps), max(samps), 100)
        ml, upper, lower = gen_utils.calculate_ml_and_asymm_errorbars_from_samples(samps, x, sample_fraction, smooth=False)
        res[i, 0] = ml
        res[i, 1] = ml - lower
        res[i, 2] = upper - ml
        i += 1

    ls = ls + shift
    plt.scatter(ls, res[:, 0], color=color, label=label)
    plt.errorbar(ls, res[:, 0], res[:, 1:].T, ecolor=color, fmt=None)
Example #3
0
def plot_ml_powspec_with_band(sigmas,
                              lmax=50,
                              sample_fraction=0.68,
                              label=None,
                              color='red',
                              mlcolor='blue',
                              spec=0,
                              burnin=0):
    if isinstance(sigmas, str):
        sigmas = pyfits.open(sigmas)[0].data
    numsamps = np.sum(sigmas[0, :, 0, 0]) - len(sigmas[0, :, 0, 0]) * burnin
    nsigmas = np.zeros(np.append(numsamps, sigmas.shape[2:]))
    j = 0
    for i in range(len(sigmas[0, :, 0, 0])):
        jprev = j
        j += sigmas[0, i, 0, 0] - burnin
        nsigmas[jprev:j] = sigmas[burnin + 1:sigmas[0, i, 0, 0] + 1, i]
#    sigmas = np.reshape(sigmas[1:], ((sigmas.shape[0] - 1) * sigmas.shape[1], 1, sigmas.shape[2], sigmas.shape[3]))
    ls = np.arange(2, lmax + 1)
    res = np.zeros((len(ls), 3))
    i = 0
    for l in ls:
        samps = nsigmas[:, spec, l]
        x = np.linspace(min(samps), max(samps), 100)
        ml, upper, lower = gen_utils.calculate_ml_and_asymm_errorbars_from_samples(
            samps, x, sample_fraction, smooth=False)
        res[i, 0] = ml
        #        res[i, 1] = ml - lower
        #        res[i, 2] = upper - ml
        res[i, 1] = lower
        res[i, 2] = upper
        i += 1
    plt.plot(ls, res[:, 1], color=color, label=label)
    plt.plot(ls, res[:, 2], color=color)
    plt.fill_between(ls, res[:, 2], res[:, 1], color=color, alpha=0.5)
    plt.plot(ls, res[:, 0], color=mlcolor, label=label)
Example #4
0
def plot_errbars_from_sigma_sample_marginals(ls,
                                             sigmas,
                                             burnin=0,
                                             spec=0,
                                             lmax=20,
                                             sample_fraction=0.68,
                                             label=None,
                                             color=None,
                                             shift=0):
    if isinstance(sigmas, str):
        sigmas = pyfits.open(sigmas)[0].data
    numsamps = np.sum(sigmas[0, :, 0, 0]) - len(sigmas[0, :, 0, 0]) * burnin
    nsigmas = np.zeros(np.append(numsamps, sigmas.shape[2:]))
    j = 0
    for i in range(len(sigmas[0, :, 0, 0])):
        jprev = j
        j += sigmas[0, i, 0, 0] - burnin
        nsigmas[jprev:j] = sigmas[burnin + 1:sigmas[0, i, 0, 0] + 1, i]


#    sigmas = np.reshape(sigmas[1:], ((sigmas.shape[0] - 1) * sigmas.shape[1], 1, sigmas.shape[2], sigmas.shape[3]))
    res = np.zeros((len(ls), 3))
    i = 0
    for l in ls:
        samps = nsigmas[:, spec, l]
        x = np.linspace(min(samps), max(samps), 100)
        ml, upper, lower = gen_utils.calculate_ml_and_asymm_errorbars_from_samples(
            samps, x, sample_fraction, smooth=False)
        res[i, 0] = ml
        res[i, 1] = ml - lower
        res[i, 2] = upper - ml
        i += 1

    ls = ls + shift
    plt.scatter(ls, res[:, 0], color=color, label=label)
    plt.errorbar(ls, res[:, 0], res[:, 1:].T, ecolor=color, fmt=None)