コード例 #1
0
ファイル: plot_1D.py プロジェクト: hr203/c2raytools
def dbt_histogram():
    for i in range(len(redshifts)):
        print "Doing redshift " + str(redshifts[i]) + "..."
        dbt = IO.readbin("map_dbt_"+str('%.3f' % redshifts[i])+'.bin')
        data = dbt.flatten()
        print "Generating histogram..."
        plot_dbt_histogram(data,"Differential Brightness Temperature, Redshift:" +str('%.3f' % redshifts[i]),"loghist_dbt_shortrange_"+str(i+10)+'_'+str('%.3f' % redshifts[i]),"Differential Brightness Temperature(K)")
コード例 #2
0
ファイル: map.py プロジェクト: hr203/c2raytools
def smoothed_coeval_box(ht=""):
    log2 = open("coeval_stats.dat", "w")
    for z in range(len(redshifts)):
        infile = "map_dbt_" + ht + str("%0.3f" % redshifts[z]) + ".bin"
        dT_box = IO.readbin(infile)
        dT_box3 = np.zeros((len(dT_box[:, 1, 1]) / 2, len(dT_box[1, :, 1]) / 2, len(dT_box[1, 1, :])))
        dT_box2 = np.zeros((len(dT_box[:, 1, 1]) / 2, len(dT_box[1, :, 1]) / 2, len(dT_box[1, 1, :])))
        wl = 0.21 * (1 + redshifts[z])
        c = 299792.458
        omm = 0.27
        oml = 0.73
        omr = 0.0
        omk = 1.0 - omm - oml - omr
        H0 = 70.0

        def integrand(x, omm, oml, omr, omk):
            return 1.0 / np.sqrt(omr * ((1 + x) ** 4) + omm * ((1 + x) ** 3) + oml + omk * ((1 + x) ** 2))

        def dc(z, omm, oml, omr, omk):
            return quad(integrand, 0, z, args=(omm, oml, omr, omk))[0]  # /(1.0+z)

        vec_dc = np.vectorize(dc)
        bw_r = wl / (2.0e3)  # radians
        bw = bw_r * 3437.74677  # arcminutesi
        log2.write("Wavelength of 21-cm from redshift " + str(redshifts[z]) + " is " + str(wl) + "m\n")
        log2.write("At redshift: " + str(redshifts[z]) + " smoothing with a " + str(bw) + " arc minute beam.\n")

        rc = bw_r * c / H0 * vec_dc(redshifts[z], omm, oml, omr, omk)  # comoving Mpc
        Hz = H0 * np.sqrt(
            omr * (1 + redshifts[z]) ** 4 + omm * (1 + redshifts[z]) ** 3 + oml + omk * (1 + redshifts[z]) ** 2
        )
        log2.write("rc = " + str(rc) + "\n")
        dz = rc * Hz / c
        log2.write("$\Delta$ z = " + str(dz) + "\n")
        ncs = rc * 250.0 * 0.7 / 244.0
        log2.write(str(ncs) + " cells in the z direction\n")
        log2.write("\n")
        for k in range(len(dT_box2[1, 1, :])):
            dT_box2[:, :, k] = c2t.beam_convolve(dT_box[:, :, k], redshifts[z], 244.0, beam_w=bw)
        for i in range(0):  # len(dT_box2[:,1,1])):
            for j in range(0):  # len(dT_box2[1,:,1])):
                for k in range(0):  # len(dT_box2[1,1,:])):
                    L = len(dT_box2[1, 1, :])
                    if k - ncs / 2 > 0 and k + ncs / 2 < L:
                        dT_box3[i, j, k] = np.mean(dT_box2[i, j, k - ncs / 2.0 : k + ncs / 2.0])
                        if k + ncs / 2.0 - k + ncs / 2.0 != ncs:
                            print "Wrong smoothing width for tophat function!!"
                    elif (k - ncs) / 2 < 0:
                        if k + ncs / 2.0 + k - ncs / 2 != ncs:
                            print "Wrong smoothing width for tophat function!!"
                        dT_box3[i, j, k] = (
                            np.sum(dT_box2[i, j, 0 : (k + ncs / 2.0)]) + np.sum(dT_box2[i, j, L - ncs / 2 + k : L])
                        ) / ncs
                    elif (k + ncs) / 2 > 10:
                        if L - k + ncs / 2 + L - k + ncs / 2 != ncs:
                            print "Wrong smoothing width for tophat function!!"
                        dT_box3[i, j, k] = (
                            np.sum(dT_box2[i, j, k - ncs / 2 : L]) + np.sum(dT_box2[i, j, L - k + ncs / 2 : L])
                        ) / ncs

        IO.writebin(
            dT_box2, setup_dirs.resultsdir() + "smooth_coevalmap_dbt_" + ht + str("%.3f" % redshifts[z]) + ".bin"
        )
        print np.mean(dT_box2)
        print "Written map"