コード例 #1
0
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
コード例 #2
0
ファイル: distmcmc.py プロジェクト: bareid/LSSanalysis
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
コード例 #3
0
ファイル: distmcmc.py プロジェクト: bareid/LSSanalysis
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
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
ファイル: distmcmc.py プロジェクト: bareid/LSSanalysis
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
コード例 #7
0
ファイル: distmcmc.py プロジェクト: bareid/LSSanalysis
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
コード例 #8
0
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
コード例 #9
0
    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)
コード例 #10
0
ファイル: mcmcutils.py プロジェクト: bareid/LSSanalysis
  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)
コード例 #11
0
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)
コード例 #12
0
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')