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)")
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"