def lnlike4(theta, x, y, z, xerr, yerr, zerr): alpha, beta, h0, Om, w0, w1 = theta if (0.0 <= beta <= 10.0 and 20.0 <= alpha <= 40.0 and 0.5 <= h0 <= 1.0 and 0.0 <= Om <= 1.0 and -2.0 <= w0 <= 0.0 and -1.0 <= w1 <= 1.0): c = const.c.to('km/s').value Or = 4.153e-5 * h0**(-2) Ok = 0.0 Mum = z*0.0 MumErr = z*0.0 for k in range(0, len(z)): if z[k] > 10: Mum[k] = z[k] MumErr[k] = zerr[k] else: Mum[k] = 5*np.log10(distL(z[k], h0, Or, Om, Ok, w0, w1)) + 25 MumErr[k] = (5.0/np.log(10)) * (zerr[k]/z[k]) Mu = 2.5*(beta*x + alpha) - 2.5*y - 100.195 MuErr = 2.5*np.sqrt(yerr**2 + beta**2*xerr**2) inv_sigma2 = 1.0/(MuErr**2 + MumErr**2) xsq = np.sum((Mu-Mum)**2*inv_sigma2) print theta, xsq return -0.5*(xsq) else: return -np.inf
def lnlike4(theta, x, y, z, xerr, yerr, zerr): alpha, beta, h0, Om, w0, w1 = theta if (0.0 <= beta <= 10.0 and 20.0 <= alpha <= 40.0 and 0.5 <= h0 <= 1.0 and 0.0 <= Om <= 1.0 and -2.0 <= w0 <= 0.0 and -1.0 <= w1 <= 1.0): c = const.c.to('km/s').value Or = 4.153e-5 * h0**(-2) Ok = 0.0 Mum = z * 0.0 MumErr = z * 0.0 for k in range(0, len(z)): if z[k] > 10: Mum[k] = z[k] MumErr[k] = zerr[k] else: Mum[k] = 5 * np.log10(distL(z[k], h0, Or, Om, Ok, w0, w1)) + 25 MumErr[k] = (5.0 / np.log(10)) * (zerr[k] / z[k]) Mu = 2.5 * (beta * x + alpha) - 2.5 * y - 100.195 MuErr = 2.5 * np.sqrt(yerr**2 + beta**2 * xerr**2) inv_sigma2 = 1.0 / (MuErr**2 + MumErr**2) xsq = np.sum((Mu - Mum)**2 * inv_sigma2) print theta, xsq return -0.5 * (xsq) else: return -np.inf
def hubblediagram(path, ve, vZ, vMu, vMuErr, index): import numpy as np import math as m import matplotlib.pyplot as plt from cosmoc import distL print '+++++++++++++++++++++++++++++++++++++++++++' print 'HUBBLEDIAGRAM: ' print '+++++++++++++++++++++++++++++++++++++++++++' #==================================================================================== #============= Parameters =========================================================== #==================================================================================== c = 2.9979e+5 #==================================================================================== #============= Main Body ============================================================ #==================================================================================== # ;;;;;Calculating Theoretical Mu (LCDM) vZfit = np.arange(0.0001, 3.5, 0.0001, dtype=np.float) Hp = 70.0 Om = 0.286 Ok = 0.0 h0 = Hp / 100.0 Or = 4.153e-5 * h0**(-2) w0 = -1.0 vDLConc = vZfit * 0.0 for i in range(0, len(vZfit)): vDLConc[i] = distL(vZfit[i], h0, Or, Om, Ok, w0, 0.0) vMufit = 5.0 * np.log10(vDLConc) + 25.0 plt.rc('font', family='serif') plt.plot(vZfit, vMufit) plt.errorbar(vZ, vMu, yerr=vMuErr, linestyle="None", capsize=0, ecolor="red") plt.scatter(vZ, vMu, s=8, c='r', marker=".") plt.axis([-0.08, 3.5, 18, 49]) plt.xlabel(r'\textbf{$z$}', fontsize=16) plt.ylabel(r'\textbf{$\mu$}', fontsize=16) plt.savefig(path) return
def hubblediagram(path, ve, vZ, vMu, vMuErr, index): import numpy as np import math as m import matplotlib.pyplot as plt from cosmoc import distL print '+++++++++++++++++++++++++++++++++++++++++++' print 'HUBBLEDIAGRAM: ' print '+++++++++++++++++++++++++++++++++++++++++++' #==================================================================================== #============= Parameters =========================================================== #==================================================================================== c = 2.9979e+5 #==================================================================================== #============= Main Body ============================================================ #==================================================================================== # ;;;;;Calculating Theoretical Mu (LCDM) vZfit = np.arange(0.0001, 3.5, 0.0001, dtype=np.float) Hp = 70.0 Om = 0.286 Ok = 0.0 h0 = Hp/100.0 Or = 4.153e-5 * h0**(-2) w0 = -1.0 vDLConc = vZfit * 0.0 for i in range(0, len(vZfit)): vDLConc[i] = distL(vZfit[i], h0, Or, Om, Ok, w0, 0.0) vMufit = 5.0*np.log10(vDLConc) + 25.0 plt.rc('font', family='serif') plt.plot(vZfit, vMufit) plt.errorbar(vZ,vMu,yerr=vMuErr, linestyle="None", capsize = 0, ecolor = "red") plt.scatter(vZ, vMu, s=8, c='r', marker=".") plt.axis([-0.08, 3.5, 18, 49]) plt.xlabel(r'\textbf{$z$}', fontsize=16) plt.ylabel(r'\textbf{$\mu$}', fontsize=16) plt.savefig(path) return
def lnlike1(theta, x, y, w, m, z, xerr, yerr, werr, merr, zerr): alpha, beta, MB1, DM, Om = theta if (0.0 <= alpha <= 1.0 and 0.0 <= beta <= 6.0 and -25.0 <= MB1 <= -15.0 and -1.0 <= DM <= 0.0 and 0.0 <= Om <= 1.0): c = const.c.to('km/s').value h0 = 0.7 Or = 4.153e-5 * h0**(-2) Ok = 0.0 w0 = -1.0 w1 = 0.0 Mum = z*0.0 MB = z*0.0 for k in range(0, len(z)): Mum[k] = 5*np.log10(distL(z[k], h0, Or, Om, Ok, w0, w1)) + 25 if m[k] < 10: MB[k] = MB1 else: MB[k] = MB1 + DM Mu = x - (MB - alpha*y + beta*w) inv_sigma2 = 1.0/(xerr**2 + alpha**2*yerr**2 + beta**2*werr**2) res = (Mu - Mum) xsq = np.sum((Mu-Mum)**2*inv_sigma2) llq = -0.5*(xsq) print theta, xsq llq2 = -0.5*(np.sum((Mu-Mum)**2*inv_sigma2 - np.log(inv_sigma2))) return llq2, xsq, res else: return -np.inf, np.inf, np.inf
def lnlike1(theta, x, y, w, m, z, xerr, yerr, werr, merr, zerr): alpha, beta, MB1, DM, Om = theta if (0.0 <= alpha <= 1.0 and 0.0 <= beta <= 6.0 and -25.0 <= MB1 <= -15.0 and -1.0 <= DM <= 0.0 and 0.0 <= Om <= 1.0): c = const.c.to('km/s').value h0 = 0.7 Or = 4.153e-5 * h0**(-2) Ok = 0.0 w0 = -1.0 w1 = 0.0 Mum = z * 0.0 MB = z * 0.0 for k in range(0, len(z)): Mum[k] = 5 * np.log10(distL(z[k], h0, Or, Om, Ok, w0, w1)) + 25 if m[k] < 10: MB[k] = MB1 else: MB[k] = MB1 + DM Mu = x - (MB - alpha * y + beta * w) inv_sigma2 = 1.0 / (xerr**2 + alpha**2 * yerr**2 + beta**2 * werr**2) res = (Mu - Mum) xsq = np.sum((Mu - Mum)**2 * inv_sigma2) llq = -0.5 * (xsq) print theta, xsq llq2 = -0.5 * (np.sum((Mu - Mum)**2 * inv_sigma2 - np.log(inv_sigma2))) return llq2, xsq, res else: return -np.inf, np.inf, np.inf