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)
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)
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)
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)