def __init__(self,full_sky_pix,wdeg,hdeg,yoffset,mpi_comm=None,nsims=1,lmax=7000,pix_intermediate=None,bin_lmax=3000): self.dtype = np.float32 self.bin_edges = np.arange(80,bin_lmax,100) self.fshape, self.fwcs = enmap.fullsky_geometry(res=full_sky_pix*np.pi/180./60., proj="car") self.fshape = self.fshape[-2:] self.shape = {} self.wcs = {} self.taper = {} self.w2 = {} self.w3 = {} self.w4 = {} self.pix_intermediate = full_sky_pix if (pix_intermediate is None) else pix_intermediate self.wdeg = wdeg self.hdeg = hdeg degree = u.degree vwidth = hdeg/2. hwidth = wdeg/2. self.pos_south=np.array([[-vwidth+yoffset,-hwidth],[vwidth+yoffset,hwidth]])*degree self.pos_eq=np.array([[-vwidth,-hwidth],[vwidth,hwidth]])*degree # Get MPI comm self.comm = mpi_comm try: self.rank = mpi_comm.Get_rank() self.numcores = mpi_comm.Get_size() except: self.rank = 0 self.numcores = 1 if self.rank==0: self.logger = io.get_logger("rotrecon") num_each,each_tasks = mpi_distribute(nsims,self.numcores) self.mpibox = MPIStats(self.comm,num_each,tag_start=333) if self.rank==0: self.logger.info( "At most "+ str(max(num_each)) + " tasks...") self.tasks = each_tasks[self.rank] theory_file_root = "data/Aug6_highAcc_CDM" powspec_file = "data/Aug6_highAcc_CDM_lenspotentialCls.dat" self.ps = powspec.read_camb_full_lens(powspec_file).astype(self.dtype) self.theory = cmb.loadTheorySpectraFromCAMB(theory_file_root,unlensedEqualsLensed=False, useTotal=False,TCMB = 2.7255e6,lpad=9000,get_dimensionless=False) self.lmax = lmax self.count = 0
extra = { "NAME": "DUST", "BEAM": "GAUSS", "FWHM": 0.07, "SPEC": "GRAY", "TBODY": 19.6, "BETA": 1.59, "FREF": 600e9, "SUNIT": 1e-20, } enmap.write_map(args.odir + "/map_dust.fits", map_dust, extra=extra) del heal_dust, map_dust print print colors.green + "Simulating CMB" + colors.reset ps = powspec.read_camb_full_lens(args.idir + "/cl_lensinput.dat") map_raw, map_lens, map_cmb = pixie.sim_cmb_map(shape, wcs, ps, verbose=True) extra = {"NAME": "CMB", "BEAM": "NONE", "SPEC": "BLACK"} enmap.write_map(args.odir + "/map_cmb.fits", map_cmb, extra=extra) del map_raw, map_lens, map_cmb print print colors.green + "Simulating grid of point sources" + colors.reset beam_fwhm = 1.0 map_sgrid = pixie.sim_source_grid(shape, wcs, amp=10, beam_sigma=beam_fwhm * utils.fwhm * utils.degree, polfrac=0.01) extra = {
extra = { "NAME": "DUST", "BEAM": "GAUSS", "FWHM": 0.07, "SPEC": "GRAY", "TBODY": 19.6, "BETA": 1.59, "FREF": 600e9, "SUNIT": 1e-20, } enmap.write_map(args.odir + "/map_dust.fits", map_dust, extra=extra) del heal_dust, map_dust print print colors.green + "Simulating CMB" + colors.reset ps = powspec.read_camb_full_lens(args.idir + "/cl_lensinput.dat") map_raw, map_lens, map_cmb = pixie.sim_cmb_map(shape, wcs, ps, verbose=True) extra = { "NAME": "CMB", "BEAM": "NONE", "SPEC": "BLACK" } enmap.write_map(args.odir + "/map_cmb.fits", map_cmb, extra=extra) del map_raw, map_lens, map_cmb print print colors.green + "Simulating grid of point sources" + colors.reset beam_fwhm = 1.0 map_sgrid = pixie.sim_source_grid(shape, wcs, amp=10, beam_sigma=beam_fwhm*utils.fwhm*utils.degree, polfrac=0.01) extra = { "NAME": "SGRID", "BEAM": "GAUSS", "FWHM": beam_fwhm, "SPEC": "GRAY", "TBODY": 10, "BETA": 1.0, "FREF": 100e9, "SUNIT": 1e-20} enmap.write_map(args.odir + "/map_sgrid.fits", map_sgrid, extra=extra) del map_sgrid print print colors.green + "Simulating a single point source" + colors.reset
shape = (args.ncomp, ) + shape lmax = args.lmax or None maplmax = args.maplmax or None seed = args.seed if args.seed is not None else np.random.randint(0, 100000000) dtype = {32: np.float32, 64: np.float64}[args.bits] verbose = args.verbose - args.quiet > 0 def make_beam(nl, bsize): l = np.arange(nl) return np.exp(-l * (l + 1) * bsize**2) for i in range(comm.rank, args.nsim, comm.size): if args.lensed: ps = powspec.read_camb_full_lens(args.powspec).astype(dtype) if args.beam: raise NotImplementedError("Beam not supported for lensed sims yet") if args.geometry == "curved": m, = lensing.rand_map(shape, wcs, ps, lmax=lmax, maplmax=maplmax, seed=(seed, i), verbose=verbose, dtype=dtype) else: maps = enmap.rand_map((shape[0] + 1, ) + shape[1:], wcs, ps) phi, unlensed = maps[0], maps[1:] m = lensing.lens_map_flat(unlensed, phi)
comm = mpi.COMM_WORLD enmap.extent_model.append(args.extent) shape, wcs = enmap.read_map_geometry(args.template) shape = (args.ncomp,)+shape lmax = args.lmax or None maplmax = args.maplmax or None seed = args.seed if args.seed is not None else np.random.randint(0,100000000) dtype= {32:np.float32, 64:np.float64}[args.bits] verbose = args.verbose - args.quiet > 0 def make_beam(nl, bsize): l = np.arange(nl) return np.exp(-l*(l+1)*bsize**2) for i in range(comm.rank, args.nsim, comm.size): if args.lensed: ps = powspec.read_camb_full_lens(args.powspec).astype(dtype) if args.beam: raise NotImplementedError("Beam not supported for lensed sims yet") if args.geometry == "curved": m, = lensing.rand_map(shape, wcs, ps, lmax=lmax, maplmax=maplmax, seed=(seed,i), verbose=verbose, dtype=dtype) else: maps = enmap.rand_map((shape[0]+1,)+shape[1:], wcs, ps) phi, unlensed = maps[0], maps[1:] m = lensing.lens_map_flat(unlensed, phi) else: ps = powspec.read_spectrum(args.powspec).astype(type) beam = make_beam(ps.shape[-1], args.beam*utils.arcmin*utils.fwhm) ps *= beam if args.geometry == "curved": m = curvedsky.rand_map(shape, wcs, ps, lmax=lmax, seed=(seed,i), method=args.method, direct=args.direct, dtype=dtype, verbose=verbose) else:
lmax = args.lmax or None maplmax = args.maplmax if args.maplmax is not None else lmax io.dout_dir = args.path Nsims = args.nsim comm = MPI.COMM_WORLD rank = comm.Get_rank() numcores = comm.Get_size() Ntot = Nsims num_each, each_tasks = mpi_distribute(Ntot, numcores) mpibox = Stats(comm, tag_start=333) if rank == 0: print("At most ", max(num_each), " tasks...") my_tasks = each_tasks[rank] ps = powspec.read_camb_full_lens(args.theory + "_lenspotentialCls.dat") shape, wcs = enmap.fullsky_geometry(res=args.res * np.pi / 180. / 60., proj="car") shape = (args.ncomp, ) + shape def save(suffix, imap, index): enmap.write_fits( args.path + "_" + suffix + "_" + str(index).zfill(int(np.log10(args.nsim)) + 1) + ".fits", imap) def load(suffix, index): return enmap.read_fits(args.path + "_" + suffix + "_" + str(index).zfill(int(np.log10(args.nsim)) + 1) + ".fits")
from enlib import lensing, powspec, utils, enmap, bench import numpy as np, sys powspec_file = "data/Aug6_highAcc_CDM_lenspotentialCls.dat" ps = powspec.read_camb_full_lens(powspec_file).astype(np.float64) geom = lambda x: enmap.fullsky_geometry(res=x * np.pi / 180. / 60., proj="car") shape, wcs = geom(4.0) #obs = enmap.posmap(shape,wcs) #sys.exit() with bench.show("2arc"): full, = lensing.rand_map(shape, wcs, ps, lmax=4000, maplmax=4000, verbose=False, delta_theta=2. * np.pi / 180., seed=1) with bench.show("2arc"): full2, = lensing.rand_map(shape, wcs, ps, lmax=4000, maplmax=4000, verbose=True, seed=1)