Ejemplo n.º 1
0
def SIS(theta, zs, zl, s=0.2, sigma_v=1000., w=-1.):

    c = 300000.  # km s^-1

    import advanced_calc, math

    radius = 2 * math.pi / (360. * 60. * 60) * theta

    einstein_radius = 4 * math.pi * (sigma_v / c)**2. * (advanced_calc.compute(
        zs, w) - advanced_calc.compute(zl, w)) / advanced_calc.compute(zs, w)

    kappa = einstein_radius / (2. * radius)

    decrement = (5. * s - 2) * kappa

    return kappa, decrement
Ejemplo n.º 2
0
    def angdist_ratio(z):
        #d_cluster = dict_DCMR['%.2f' % cluster_z + '_' + '%.2f' % w + '_' + '%.2f' % WM] #advanced_calc.compute(clusterz,w)
        key = '%.2f' % z + '_' + '%.2f' % w + '_' + '%.2f' % WM
        if key in dict_DCMR:
            DS = dict_DCMR[key]
        else:
            DS = advanced_calc.compute(z, w, WM=WM)  #dict_DCMR[]
            dict_DCMR[key] = DS
        ratio = (DS - d_cluster) / DS
        if ratio < 0: ratio = 0

        return ratio / norm * 0.1
Ejemplo n.º 3
0
            omega_lambda = 0.7
            import scipy
            #for w in scipy.arange(-2,0,0.5):
            p, redchi, chisq = fit_mass(zs_f[:],
                                        scipy.array(amps_f)[:],
                                        scipy.array(ampErrs_f)[:], clusterz, w,
                                        omega_m, omega_lambda, dict_DCMR)
            #x.append(w)
            #y.append(redchi)
            print 'finished fitting'

            print redchi

            fit_val[str(w)] = redchi

            d_cluster = advanced_calc.compute(clusterz, w)
            import scipy
            ratios = []
            zsrat = []
            infinite = p[0] * (advanced_calc.compute(10000, w) -
                               d_cluster) / advanced_calc.compute(10000, w)

            for z in scipy.arange(clusterz, 2.4, 0.02):
                zsrat.append(z)
                #ratios.append((p[0] * (advanced_calc.compute(z,w) - d_cluster)/advanced_calc.compute(z,w)) / infinite)
                DS = dict_DCMR[
                    '%.2f' % z + '_' + '%.2f' % w + '_' + '%.2f' %
                    WM]  #str(float('%.2f' % z)) + '_' + str(w) + '_' + str(WM)]
                ratios.append((p[0] * (DS - d_cluster) / DS) / infinite)

            z = 1.0
Ejemplo n.º 4
0
#cluster_z = 0.55

zs = scipy.array(zs)
amps_t = scipy.array(amps)[zs > 0] / max
ampErrs_t = scipy.array(ampErrs)[zs > 0] / max
zs_f = zs[zs > 0]

calc_z = zs_f[0]

print amps_t, ampErrs_t

amps_f = []
ampErrs_f = []

import advanced_calc
d_cluster = advanced_calc.compute(cluster_z, -1.)
base = (advanced_calc.compute(calc_z, -1.) -
        d_cluster) / advanced_calc.compute(calc_z, -1.)

#for i in range(len(amps_t)):
i = 0
corr = (advanced_calc.compute(zs_f[i], -1.) -
        d_cluster) / advanced_calc.compute(zs_f[i], -1.) / base
amps_f.append(amps_t[i] / corr)
ampErrs_f.append(ampErrs_t[i] / corr)
i = 1
corr = (advanced_calc.compute(zs_f[i], -1.) -
        d_cluster) / advanced_calc.compute(zs_f[i], -1.) / base
ampErrs_f.append(
    ((ampErrs_t[0] * corr)**2. + (ampErrs_t[i])**2.)**0.5 / amps[i])
amps_f.append(amps_t[i] / corr)
Ejemplo n.º 5
0
        import scipy
        for w in [-1]:  #scipy.arange(-10,10,2):
            color = 'black'
            print 'fitting'
            omega_m = 0.27
            omega_lambda = 0.73
            p, redchi = fit_mass(zs_f[:],
                                 scipy.array(amps_f)[:],
                                 scipy.array(ampErrs_f)[:], clusterz, w,
                                 omega_m, omega_lambda)
            print 'finished fitting'

            fit_val[str(w)] = redchi

            d_cluster = advanced_calc.compute(clusterz, w)
            import scipy
            ratios = []
            zsrat = []
            for z in scipy.arange(clusterz, 2, 0.01):
                zsrat.append(z)
                ratios.append(p[0] *
                              (advanced_calc.compute(z, w) - d_cluster) /
                              advanced_calc.compute(z, w))

            print p[0], w
            print ratios, zsrat

            pylab.plot(scipy.array(zsrat),
                       scipy.array(ratios),
                       color=color,
Ejemplo n.º 6
0
def run(C, U, P):
    import pickle
    f = open('DA.pickle', 'r')
    m = pickle.Unpickler(f)
    dict_DCMR = m.load()

    import scipy, pylab, math
    r = scipy.arange(0.8, 1.2, 0.02)
    masses = dict(zip(r, scipy.zeros(len(r))))
    masses_onepoint = dict(zip(r, scipy.zeros(len(r))))
    zs = scipy.arange(0.01000, 4.0100, 0.0100)

    def parse(i, Z, Z_onepoint):

        import scipy
        from scipy import stats
        an = scipy.stats.norm.rvs() * 0.3
        true_shear = (angdist_ratio(Z) + an)

        y = scipy.array([float(x) for x in P[i + 1][:-1].split(' ')[1:-1]])
        vec = zip(zs, y)
        for m in masses.keys():
            prob = 0
            for v in vec:
                if v[1] > 0:

                    prob += v[1] * math.exp(
                        -1. * (m * angdist_ratio(v[0]) - true_shear)**2. /
                        0.3**2.) / (2. * math.pi)**0.5
                    #print true_shear, angdist_ratio(v[0]), v[1], prob, m
                    #raw_input()

            #print prob, m
            masses[m] += math.log(prob)

            masses_onepoint[m] += math.exp(
                -1. * (m * angdist_ratio(Z_onepoint) - true_shear)**2. /
                0.3**2.) / (2. * math.pi)**0.5

    import advanced_calc
    cluster_z = 0.5
    WM = 0.27
    w = -1
    d_cluster = advanced_calc.compute(cluster_z, w)
    DS = advanced_calc.compute(0.75, w, WM=WM)  #dict_DCMR[]
    norm = (DS - d_cluster) / DS

    def angdist_ratio(z):
        #d_cluster = dict_DCMR['%.2f' % cluster_z + '_' + '%.2f' % w + '_' + '%.2f' % WM] #advanced_calc.compute(clusterz,w)
        key = '%.2f' % z + '_' + '%.2f' % w + '_' + '%.2f' % WM
        if key in dict_DCMR:
            DS = dict_DCMR[key]
        else:
            DS = advanced_calc.compute(z, w, WM=WM)  #dict_DCMR[]
            dict_DCMR[key] = DS
        ratio = (DS - d_cluster) / DS
        if ratio < 0: ratio = 0

        return ratio / norm * 0.1

    CZ = []
    UZ = []
    fracs = []
    vals = []
    num = 0
    for i in range(40000, 60000):
        if i % 10: print i
        cosmos_z = C.field('zp_best')[i]
        our_z = U.field('BPZ_Z_B')[i]
        mag = U.field('BPZ_M_0')[i]
        if mag < 25 and U.field(
                'BPZ_ODDS'
        )[i] > 0.5 and our_z > cluster_z + 0.1 and our_z < 1. and cosmos_z > 0 and cosmos_z < 1.5:  # and not (0.18 < cosmos_z < 0.025): # and our_z > 0.5:
            num += 1
            CZ.append(cosmos_z)
            UZ.append(our_z)
            frac = parse(i, cosmos_z, our_z)
            fracs.append(frac)

            vals.append(angdist_ratio(our_z) / angdist_ratio(cosmos_z))
            #print w, str(float(w)), '%.2f' % z + '_' + '%.2f' % w + '_' + '%.2f' % WM

    import pylab
    #pylab.hist(vals,bins=40)
    pylab.scatter(masses_onepoint.keys(), masses.values())
    pylab.title(str(num))
    pylab.show()

    pylab.scatter(masses.keys(), masses.values())
    pylab.title(str(num))
    pylab.show()
Ejemplo n.º 7
0
        
        ''' fit for each cosmology '''
        #for w,color in [[-1.,'orange'],[-0.5,'red'],[-1.5,'blue'],[0,'black']]:
        
        import scipy
        for w in [-1]: #scipy.arange(-10,10,2):
            color = 'black'
            print 'fitting'
            omega_m = 0.27
            omega_lambda = 0.73
            p, redchi = fit_mass(zs_f[:],scipy.array(amps_f)[:],scipy.array(ampErrs_f)[:],clusterz,w,omega_m,omega_lambda)
            print 'finished fitting'
        
            fit_val[str(w)] = redchi
        
            d_cluster = advanced_calc.compute(clusterz,w)
            import scipy
            ratios = []
            zsrat = []
            infinite = p[0] * (advanced_calc.compute(10000,w) - d_cluster)/advanced_calc.compute(10000,w)

            for z in scipy.arange(clusterz,3,0.02):
              zsrat.append(z)
              ratios.append((p[0] * (advanced_calc.compute(z,w) - d_cluster)/advanced_calc.compute(z,w)) / infinite)
            
            print p[0], w
            print ratios, zsrat
                                                                   
            pylab.plot(scipy.array(zsrat), scipy.array(ratios), color=color) #,label=str(w))
        pylab.legend()