Пример #1
0
    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
Пример #2
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 = {
Пример #3
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 = { "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
Пример #4
0
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)
Пример #5
0
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:
Пример #6
0
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")
Пример #7
0
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)