def cosmofromlacurved(cozold,latarget,\ Neff=3.046,mnu1=0.,mnu2=0.,mnu3=0.,mnu4=0.,NorI=-1,Smnu=-1,onuh2val=-1.,SorD=1,\ w0=-1.,wa=0.,omegak=0.): try: newhval = scipy.optimize.brentq( lambda x: mysolvela(x, cozold, Neff, mnu1, mnu2, mnu3, mnu4, NorI, Smnu, onuh2val, SorD, w0, wa, omegak) - latarget, cozold.h * 0.5, cozold.h * 2.) except: print 'new h value not found in factor of 2 of old h value. recode or error!' return None ## success! if np.fabs(omegak) < 2.0e-6: forceflat = 1 else: forceflat = 0 okh2 = omegak * newhval**2 oDEh2 = newhval**2 - (cozold.och2 + cozold.obh2 + cozold.ogh2 + cozold.onuh2(1.) + okh2) oDE = oDEh2 / newhval**2 coznew = cosmo.cosmo(och2=cozold.och2, obh2=cozold.obh2, ogh2=cozold.ogh2, Tcmb=cozold.Tcmb, \ h=newhval, w0=w0, wa=wa, omegaDE = oDE, forceflat=forceflat, Neff=Neff,mnu1=mnu1,mnu2=mnu2,mnu3=mnu3,mnu4=mnu4,NorI=NorI, Smnu=Smnu,onuh2val=onuh2val,SorD=SorD) tCMB, extra = dCMB(coznew) assert ((tCMB[1] - latarget) / latarget < 1.0e-5) return coznew
def cosmofromlacurved( cozold, latarget, Neff=3.046, mnu1=0.0, mnu2=0.0, mnu3=0.0, mnu4=0.0, NorI=-1, Smnu=-1, onuh2val=-1.0, SorD=1, w0=-1.0, wa=0.0, omegak=0.0, ): try: newhval = scipy.optimize.brentq( lambda x: mysolvela(x, cozold, Neff, mnu1, mnu2, mnu3, mnu4, NorI, Smnu, onuh2val, SorD, w0, wa, omegak) - latarget, cozold.h * 0.5, cozold.h * 2.0, ) except: print "new h value not found in factor of 2 of old h value. recode or error!" return None ## success! if np.fabs(omegak) < 2.0e-6: forceflat = 1 else: forceflat = 0 okh2 = omegak * newhval ** 2 oDEh2 = newhval ** 2 - (cozold.och2 + cozold.obh2 + cozold.ogh2 + cozold.onuh2(1.0) + okh2) oDE = oDEh2 / newhval ** 2 coznew = cosmo.cosmo( och2=cozold.och2, obh2=cozold.obh2, ogh2=cozold.ogh2, Tcmb=cozold.Tcmb, h=newhval, w0=w0, wa=wa, omegaDE=oDE, forceflat=forceflat, Neff=Neff, mnu1=mnu1, mnu2=mnu2, mnu3=mnu3, mnu4=mnu4, NorI=NorI, Smnu=Smnu, onuh2val=onuh2val, SorD=SorD, ) tCMB, extra = dCMB(coznew) assert (tCMB[1] - latarget) / latarget < 1.0e-5 return coznew
def mysolvela( h, cozold, Neff=3.046, mnu1=0.0, mnu2=0.0, mnu3=0.0, mnu4=0.0, NorI=-1, Smnu=-1, onuh2val=-1.0, SorD=1, w0=-1.0, wa=0.0, omegak=0.0, ): """ copying from mysolveDAcurved. """ if np.fabs(omegak) < 2.0e-6: forceflat = 1 else: forceflat = 0 okh2 = omegak * h ** 2 oDEh2 = h ** 2 - (cozold.och2 + cozold.obh2 + cozold.ogh2 + cozold.onuh2(1.0) + okh2) oDE = oDEh2 / h ** 2 coztmp = cosmo.cosmo( och2=cozold.och2, obh2=cozold.obh2, ogh2=cozold.ogh2, Tcmb=cozold.Tcmb, h=h, w0=w0, wa=wa, omegaDE=oDE, forceflat=forceflat, Neff=Neff, mnu1=mnu1, mnu2=mnu2, mnu3=mnu3, mnu4=mnu4, NorI=NorI, Smnu=Smnu, onuh2val=onuh2val, SorD=SorD, ) tCMB, extra = dCMB(coztmp) return tCMB[1] ## this is la
def chain2cosmo(elt, eltnames, mcmcfixed): ## copying Planck2cosmo in cosmo.py global distdefaults global distparams ## using defaults in distdefaults mydist = distdefaults.copy() j = 0 for i in range(len(distparams)): if mcmcfixed[i] == 0: ## then set the value from elt. mydist[distparams[i]] = elt[j] j += 1 assert j == len(elt) h = mydist['H0'] * 0.01 och2 = mydist['omegach2'] obh2 = mydist['omegabh2'] okh2 = mydist['omegak'] * h**2 w0 = mydist['w'] wa = mydist['wa'] ogh2 = 2.469e-5 ## default value givne Tcmb. onuh2val = 0.0006450616 ## taken from camb ini file Mar13 base_planck_lowl_lowLike.ini; this is z=0 value. SorD = 0 # single mass eigenstate. odeh2 = h**2 - (och2 + obh2 + ogh2 + onuh2val + okh2) oDE = odeh2 / h**2 if 'omegak' in eltnames: forceflat = 0 else: forceflat = 1 ## set neutrino defaults: cc = cosmo.cosmo(och2=och2,\ obh2=obh2, h=h,\ w0=w0,\ wa=wa,\ omegaDE=oDE,\ forceflat=forceflat,\ onuh2val=onuh2val,\ SorD=SorD) ## check omegak assert np.fabs(cc.ok - mydist['omegak']) < 2.0e-6 return cc
def setuplikelihoods(cmbfname, cmassanifname=None): global mCMB, icovCMB global abaolist, DVorsfidlist global DAorsfidlist, Hrsfidlist global rsfid abaolist = np.array([1. / 1.57, 1. / 1.32]) mCMB, covtmp = readPlanckprior(cmbfname) icovCMB = (np.matrix(covtmp)).I DVorsfidlist = np.array([2]) obh2fid = 0.0224 och2fid = 0.11186 hfid = 0.7 ccfid = cosmo.cosmo(och2=och2fid, obh2=obh2fid, h=hfid, forceflat=1) rsfid = rs(obh2fid, och2fid, 1) DV1fid = ccfid.DVMpc(abaolist[0]) DV2fid = ccfid.DVMpc(abaolist[1]) ## set up anisotropic fiducial values. DA1fid = ccfid.DAz(abaolist[0]) DA2fid = ccfid.DAz(abaolist[1]) H1fid = ccfid.Hofz(abaolist[0]) H2fid = ccfid.Hofz(abaolist[1]) DVorsfidlist = np.array([DV1fid / rsfid, DV2fid / rsfid]) DAorsfidlist = np.array([DA1fid / rsfid, DA2fid / rsfid]) Hrsfidlist = np.array([H1fid * rsfid, H2fid * rsfid]) print 'BAO stuff:', DV1fid, DV2fid, rsfid print DVorsfidlist print DAorsfidlist print Hrsfidlist print 'chi2 for fiducial cosmology' cmbchi2val, extra = CMBchi2(ccfid) baochi2val, extrabao = BAOchi2(ccfid, np.array([1, 1, 0], dtype='int')) print 'CMB: ', cmbchi2val print 'BAO: ', baochi2val if cmassanifname is not None: anibaosetup(cmassanifname) baochi2valani, extrabao = BAOchi2(ccfid, np.array([0, 0, 1], dtype='int')) print 'BAOani: ', baochi2valani
def setuplikelihoods(cmbfname, cmassanifname=None): global mCMB, icovCMB global abaolist, DVorsfidlist global DAorsfidlist, Hrsfidlist global rsfid abaolist = np.array([1.0 / 1.57, 1.0 / 1.32]) mCMB, covtmp = readPlanckprior(cmbfname) icovCMB = (np.matrix(covtmp)).I DVorsfidlist = np.array([2]) obh2fid = 0.0224 och2fid = 0.11186 hfid = 0.7 ccfid = cosmo.cosmo(och2=och2fid, obh2=obh2fid, h=hfid, forceflat=1) rsfid = rs(obh2fid, och2fid, 1) DV1fid = ccfid.DVMpc(abaolist[0]) DV2fid = ccfid.DVMpc(abaolist[1]) ## set up anisotropic fiducial values. DA1fid = ccfid.DAz(abaolist[0]) DA2fid = ccfid.DAz(abaolist[1]) H1fid = ccfid.Hofz(abaolist[0]) H2fid = ccfid.Hofz(abaolist[1]) DVorsfidlist = np.array([DV1fid / rsfid, DV2fid / rsfid]) DAorsfidlist = np.array([DA1fid / rsfid, DA2fid / rsfid]) Hrsfidlist = np.array([H1fid * rsfid, H2fid * rsfid]) print "BAO stuff:", DV1fid, DV2fid, rsfid print DVorsfidlist print DAorsfidlist print Hrsfidlist print "chi2 for fiducial cosmology" cmbchi2val, extra = CMBchi2(ccfid) baochi2val, extrabao = BAOchi2(ccfid, np.array([1, 1, 0], dtype="int")) print "CMB: ", cmbchi2val print "BAO: ", baochi2val if cmassanifname is not None: anibaosetup(cmassanifname) baochi2valani, extrabao = BAOchi2(ccfid, np.array([0, 0, 1], dtype="int")) print "BAOani: ", baochi2valani
def chain2cosmo(elt, eltnames, mcmcfixed): ## copying Planck2cosmo in cosmo.py global distdefaults global distparams ## using defaults in distdefaults mydist = distdefaults.copy() j = 0 for i in range(len(distparams)): if mcmcfixed[i] == 0: ## then set the value from elt. mydist[distparams[i]] = elt[j] j += 1 assert j == len(elt) h = mydist["H0"] * 0.01 och2 = mydist["omegach2"] obh2 = mydist["omegabh2"] okh2 = mydist["omegak"] * h ** 2 w0 = mydist["w"] wa = mydist["wa"] ogh2 = 2.469e-5 ## default value givne Tcmb. onuh2val = 0.0006450616 ## taken from camb ini file Mar13 base_planck_lowl_lowLike.ini; this is z=0 value. SorD = 0 # single mass eigenstate. odeh2 = h ** 2 - (och2 + obh2 + ogh2 + onuh2val + okh2) oDE = odeh2 / h ** 2 if "omegak" in eltnames: forceflat = 0 else: forceflat = 1 ## set neutrino defaults: cc = cosmo.cosmo( och2=och2, obh2=obh2, h=h, w0=w0, wa=wa, omegaDE=oDE, forceflat=forceflat, onuh2val=onuh2val, SorD=SorD ) ## check omegak assert np.fabs(cc.ok - mydist["omegak"]) < 2.0e-6 return cc
def mysolvela(h,cozold, \ Neff=3.046,mnu1=0.,mnu2=0.,mnu3=0.,mnu4=0.,NorI=-1,Smnu=-1,onuh2val=-1.,SorD=1,\ w0=-1.,wa=0.,omegak=0.): """ copying from mysolveDAcurved. """ if np.fabs(omegak) < 2.0e-6: forceflat = 1 else: forceflat = 0 okh2 = omegak * h**2 oDEh2 = h**2 - (cozold.och2 + cozold.obh2 + cozold.ogh2 + cozold.onuh2(1.) + okh2) oDE = oDEh2 / h**2 coztmp = cosmo.cosmo(och2=cozold.och2, obh2=cozold.obh2, ogh2=cozold.ogh2, Tcmb=cozold.Tcmb, \ h=h, w0=w0, wa=wa, omegaDE = oDE, forceflat=forceflat, Neff=Neff,mnu1=mnu1,mnu2=mnu2,mnu3=mnu3,mnu4=mnu4,NorI=NorI, Smnu=Smnu,onuh2val=onuh2val,SorD=SorD) tCMB, extra = dCMB(coztmp) return tCMB[1] ## this is la
def analyzeMWchain(self, omfid, hfid, obh2fid, zeff, sig8zeff): """ Assumes a chain of MW format [f,nu, Generates bsig8, DV, FAP, DA, H, fs8 columns from MW chain. """ import cosmo def peak_background_bias(nu): """ peak_background_bias(nu): Returns the Lagrangian biases, (b1,b2), given nu. This is helpful if we want to make our basis set f, nu and sFog. """ delc = 1.686 a = 0.707 p = 0.30 anu2 = a * nu**2 b1 = (anu2 - 1 + 2 * p / (1 + anu2**p)) / delc b2 = (anu2**2 - 3 * anu2 + 2 * p * (2 * anu2 + 2 * p - 1) / (1 + anu2**p)) / delc**2 return ((b1, b2)) descrnew = [('bs8','float64'),('fs8','float64'),\ ('DV','float64'),('FAP','float64'),\ ('DA','float64'),('H','float64')] self.chain = add_fields(self.chain, descrnew) self.chain['fs8'][:] = self.chain['f'] * sig8zeff for ii in range(len(self.chain['bs8'][:])): b1, b2 = peak_background_bias(self.chain['nu'][ii]) self.chain['bs8'][ii] = (1 + b1) * sig8zeff omh2 = omfid * hfid**2 och2fid = omh2 - obh2fid cc = cosmo.cosmo(och2=och2fid, obh2=obh2fid, h=hfid) aeff = 1. / (1 + zeff) DAzeff = cc.DAz(aeff) ## Mpc. Hzeff = cc.Hofz(aeff) FAPzeff = DAzeff * Hzeff / (cosmo.DH * 100. ) ## c = cosmo.DH*100. in km/s units DVzeff = (DAzeff * DAzeff * cosmo.DH * 100. * zeff / Hzeff)**(1. / 3.) self.chain['DV'] = DVzeff * (self.chain['alpha_perp']**2 * self.chain['alpha_par'])**(1. / 3.) self.chain['DA'] = DAzeff * self.chain['alpha_perp'] self.chain['H'] = Hzeff / self.chain['alpha_par'] self.chain['FAP'] = FAPzeff * self.chain['alpha_perp'] / self.chain[ 'alpha_par'] self.DAfid = DAzeff self.Hfid = Hzeff self.DVfid = DVzeff self.zeff = zeff self.sig8zeff = sig8zeff ## fill in 3x3 DV, FAP, fs8 pcov = np.zeros([3, 3]) m = np.zeros(3) wgtsum = (self.chain['weight'][:]).sum() ## not if we allow prior!! #assert (wgtsum - len(self.chain['weight'])) < 0.0001 ## MW chains are unweighted. for ni, i in zip(['DV', 'FAP', 'fs8'], range(3)): m[i] = (self.chain['weight'] * self.chain[ni]).sum() / wgtsum for ni, i in zip(['DV', 'FAP', 'fs8'], range(3)): for nj, j in zip(['DV', 'FAP', 'fs8'], range(3)): pcov[i,j] = (self.chain[ni][:] * self.chain[nj][:] * self.chain['weight'][:]).sum()/wgtsum - \ m[i]*m[j] self.m3x3 = m self.pcov = pcov self.icov = np.linalg.inv(self.pcov)
def analyzeMWchain(self,omfid,hfid,obh2fid,zeff,sig8zeff): """ Assumes a chain of MW format [f,nu, Generates bsig8, DV, FAP, DA, H, fs8 columns from MW chain. """ import cosmo def peak_background_bias(nu): """ peak_background_bias(nu): Returns the Lagrangian biases, (b1,b2), given nu. This is helpful if we want to make our basis set f, nu and sFog. """ delc = 1.686 a = 0.707 p = 0.30 anu2 = a*nu**2 b1 = (anu2-1+2*p/(1+anu2**p))/delc b2 = (anu2**2-3*anu2+2*p*(2*anu2+2*p-1)/(1+anu2**p))/delc**2 return( (b1,b2) ) descrnew = [('bs8','float64'),('fs8','float64'),\ ('DV','float64'),('FAP','float64'),\ ('DA','float64'),('H','float64')] self.chain = add_fields(self.chain, descrnew) self.chain['fs8'][:] = self.chain['f']*sig8zeff for ii in range(len(self.chain['bs8'][:])): b1, b2 = peak_background_bias(self.chain['nu'][ii]) self.chain['bs8'][ii] = (1+b1)*sig8zeff omh2 = omfid*hfid**2 och2fid = omh2 - obh2fid cc = cosmo.cosmo(och2=och2fid,obh2=obh2fid,h=hfid) aeff = 1./(1+zeff) DAzeff = cc.DAz(aeff) ## Mpc. Hzeff = cc.Hofz(aeff) FAPzeff = DAzeff*Hzeff/(cosmo.DH*100.) ## c = cosmo.DH*100. in km/s units DVzeff = (DAzeff*DAzeff*cosmo.DH*100.*zeff/Hzeff)**(1./3.) self.chain['DV'] = DVzeff * (self.chain['alpha_perp']**2 * self.chain['alpha_par'])**(1./3.) self.chain['DA'] = DAzeff * self.chain['alpha_perp'] self.chain['H'] = Hzeff / self.chain['alpha_par'] self.chain['FAP'] = FAPzeff * self.chain['alpha_perp']/self.chain['alpha_par'] self.DAfid = DAzeff self.Hfid = Hzeff self.DVfid = DVzeff self.zeff = zeff self.sig8zeff = sig8zeff ## fill in 3x3 DV, FAP, fs8 pcov = np.zeros([3,3]) m = np.zeros(3) wgtsum = (self.chain['weight'][:]).sum() ## not if we allow prior!! #assert (wgtsum - len(self.chain['weight'])) < 0.0001 ## MW chains are unweighted. for ni,i in zip(['DV','FAP','fs8'],range(3)): m[i] = (self.chain['weight']*self.chain[ni]).sum()/wgtsum for ni,i in zip(['DV','FAP','fs8'],range(3)): for nj,j in zip(['DV','FAP','fs8'],range(3)): pcov[i,j] = (self.chain[ni][:] * self.chain[nj][:] * self.chain['weight'][:]).sum()/wgtsum - \ m[i]*m[j] self.m3x3 = m self.pcov = pcov self.icov = np.linalg.inv(self.pcov)
import cosmo import plot import minimize import plot import numpy as np import matplotlib.pyplot as plt reload(constants) reload(cosmo) reload(plot) reload(minimize) reload(plot) #set parameters for 8600, 8610 cos_8600 = cosmo.cosmo(1.0, 0.0, 0.166, 1.0, 0.83, 2, 1e5, 1e19, 1000) #SCDM cos_8610 = cosmo.cosmo(1.0, 0.0, 0.166, 0.968, 0.83, 4, 1e5, 1e19, 1000) #WMAP ps cos_8411 = cosmo.cosmo(0.268, 0.732, 0.166, 0.968, 0.83, 4, 1e5, 1e19, 1000) #LCDM WMAP # R1 = 1. R2 = 10. zs, s = minimize.mini_rms(cos_8600, cos_8411, 0., R1, R2) #zs is the starting redshift of 8600 #s is the length scale ratio plot.plot_variance(cos_8600, cos_8411, 0, zs, s) plot.plot_fit_countor(cos_8600, cos_8411, R1, R2, 0, zs, s)
import pt import universal_test import numpy as np import matplotlib.pyplot as plt reload(constants) reload(cosmo) reload(load_data) reload(scaling) reload(verify) reload(pt) reload(universal_test) #set parameters for 8600, 8610, 8411 cos_8600 = cosmo.cosmo(1.0, 0.0, 0.166, 1.0, 0.83, 2, 1e2, 1e19, 1000) cos_8610 = cosmo.cosmo(1.0, 0.0, 0.166, 0.968, 0.83, 4, 1e2, 1e19, 1000) cos_8411 = cosmo.cosmo(0.268, 0.732, 0.166, 0.968, 0.83, 4, 1e2, 1e19, 1000) #load data load_data.load_all_data() #do the scaling fit of data scaling.get_a_alpha(vals.data_8600, vals.z_8600, cos_8600, '8600') scaling.get_a_alpha(vals.data_8610, vals.z_8610, cos_8610, '8610') scaling.get_a_alpha(vals.data_8411, vals.z_8411, cos_8411, '8411') #verify the data fit results fig_8600 = verify.verify_wf(vals.data_8600, vals.z_8600, '8600') fig_8610 = verify.verify_wf(vals.data_8610, vals.z_8610, '8610')