Example #1
0
def inverse_local(local_prob, hyper):
	# R(0,i) for fix mass
	prob_R0 = local_prob[0:n_fixm]
	R0 = piece_power_frac(hyper, M0, prob_R0)

	# M(1,i) for variable mass
	prob_M1 = local_prob[n_fixm:n_fixm+n_varm]
	M1 = 10.**( uniform.ppf(prob_M1, -4., 10.) )

	# R(1,i) for varibable mass
	prob_R1 = local_prob[n_fixm+n_varm:]
	R1 = piece_power_frac(hyper, M1, prob_R1)

	local = np.hstack((R0, M1, R1))

	return local
Example #2
0
def plt_power():
    ### data
    hyper = np.loadtxt(dir + "hyper.out")
    loglike = np.loadtxt(dir + "loglike.out")
    repeat = np.loadtxt(dir + "repeat.out")

    ### split data
    c0 = hyper[:, 0]
    power = hyper[:, 1:5]
    sigma = hyper[:, 5:9]
    trans = hyper[:, 9:12]

    ### plot
    plt.clf()

    row = 2
    col = 4

    f, ((a00, a01, a02, a03), (a10, a11, a12, a13)) = plt.subplots(row, col, figsize=(col * 5, row * 5))
    ax = ((a00, a01, a02, a03), (a10, a11, a12, a13))

    # repeat
    ax[0][0].plot(repeat)
    ax[0][0].set_yscale("log")
    ax[0][0].set_xlabel("repeat")

    # loglike
    ax[0][1].plot(loglike)
    ax[0][1].set_xlabel("L")

    # over plot
    dat = data()
    ax[0][2].errorbar(dat[:, 0], dat[:, 2], xerr=dat[:, 1], yerr=dat[:, 3], fmt=".")

    hyper_last = hyper[-1, :]
    trans_last = hyper_last[-3:]
    m_sample = np.logspace(np.log10(np.min(dat[:, 0])), np.log10(np.max(dat[:, 0])), 1000)
    r_sample = piece_power_frac(hyper_last, m_sample, prob_R=0.5 * np.ones_like(m_sample))
    r_upper = piece_power_frac(hyper_last, m_sample, prob_R=0.84 * np.ones_like(m_sample))
    r_lower = piece_power_frac(hyper_last, m_sample, prob_R=0.16 * np.ones_like(m_sample))
    ax[0][2].plot(m_sample, r_sample, "r-")
    ax[0][2].fill_between(m_sample, r_lower, r_upper, color="grey", alpha=0.2)

    r_trans = piece_power_frac(hyper_last, trans_last, prob_R=0.5 * np.ones_like(trans_last))
    ax[0][2].plot(trans_last, r_trans, "rx")

    ax[0][2].set_xscale("log")
    ax[0][2].set_yscale("log")
    ax[0][2].set_xlabel(r"M [M$_\oplus$]")
    ax[0][2].set_ylabel(r"R [R$_\oplus$]")

    # C
    ax[1][0].plot(c0)
    ax[1][0].set_yscale("log")
    ax[1][0].set_xlabel("c0")
    ax[1][0].set_ylim([1e-3, 1e3])

    # power
    for i in range(4):
        ax[1][1].plot(power[:, i])
    ax[1][1].set_xlabel("power")

    # sigma
    for i in range(4):
        ax[1][2].plot(sigma[:, i])
    ax[1][2].set_yscale("log")
    ax[1][2].set_xlabel("sigma")
    ax[1][2].set_ylim([1e-3, 1e2])

    # transition
    for i in range(3):
        ax[1][3].plot(trans[:, i])
    ax[1][3].set_yscale("log")
    ax[1][3].set_xlabel("transition")
    ax[1][3].set_ylim([1e-4, 1e6])

    plt.savefig("plt_power.png")

    return None