Ejemplo n.º 1
0
def coadd_maps(imaps, ihits, omap, ohit, cont=False):
	# The first map will be used as a reference. All subsequent maps
	# must fit in its boundaries.
	if cont and os.path.exists(omap): return
	if args.verbose: print "Reading %s" % imaps[0]
	m = read_map(imaps[0])
	if args.verbose: print"Reading %s" % ihits[0]
	w = apply_edge(apply_apod(apply_trim(read_div(ihits[0]))))
	wm = mul(w,m)

	for mif,wif in zip(imaps[1:],ihits[1:]):
		if args.verbose: print"Reading %s" % mif
		try:
			mi = read_map(mif)
		except IOError:
			if args.allow_missing:
				print "Can't read %s. Skipping" % mif
				continue
			else: raise
		if args.verbose: print"Reading %s" % wif

		wi = apply_edge(apply_apod(apply_trim(read_div(wif))))
		# We may need to reproject maps
		if mi.shape != m.shape or str(mi.wcs.to_header()) != str(m.wcs.to_header()):
			mi = enmap.project(mi, m.shape, m.wcs, mode="constant")
			wi = enmap.project(wi, w.shape, w.wcs, mode="constant")
		w  = add(w,wi)
		wm = add(wm,mul(wi,mi))

	if args.verbose: print"Solving"
	m = solve(w,wm)
	if args.verbose: print"Writing %s" % omap
	enmap.write_map(omap, m)
	if args.verbose: print"Writing %s" % ohit
	enmap.write_map(ohit, w)
Ejemplo n.º 2
0
def coadd_maps(imaps, ihits, omap, ohit, cont=False):
	# The first map will be used as a reference. All subsequent maps
	# must fit in its boundaries.
	if cont and os.path.exists(omap): return
	if args.verbose: print "Reading %s" % imaps[0]
	m = read_map(imaps[0])
	if args.verbose: print"Reading %s" % ihits[0]
	w = apply_edge(apply_apod(apply_trim(read_div(ihits[0]))))
	wm = mul(w,m)

	for mif,wif in zip(imaps[1:],ihits[1:]):
		if args.verbose: print"Reading %s" % mif
		try:
			mi = read_map(mif)
		except IOError:
			if args.allow_missing:
				print "Can't read %s. Skipping" % mif
				continue
			else: raise
		if args.verbose: print"Reading %s" % wif

		wi = apply_edge(apply_apod(apply_trim(read_div(wif))))
		# We may need to reproject maps
		if mi.shape != m.shape or str(mi.wcs.to_header()) != str(m.wcs.to_header()):
			mi = enmap.project(mi, m.shape, m.wcs, mode="constant")
			wi = enmap.project(wi, w.shape, w.wcs, mode="constant")
		w  = add(w,wi)
		wm = add(wm,mul(wi,mi))

	if args.verbose: print"Solving"
	m = solve(w,wm)
	if args.verbose: print"Writing %s" % omap
	enmap.write_map(omap, m)
	if args.verbose: print"Writing %s" % ohit
	enmap.write_map(ohit, w)
Ejemplo n.º 3
0
def getKappaSZ(bSims,snap,massIndex,px,thetaMapshape):
    b = bSims
    PIX = 2048
    maps, z, kappaSimDat, szMapuKDat, projectedM500, trueM500, trueR500, pxInRad, pxInRad = b.getMaps(snap,massIndex,freqGHz=150.)
    pxIn = pxInRad * 180.*60./np.pi
    hwidth = PIX*pxIn/2.
    print "At redshift ", z , " stamp is ", hwidth ," arcminutes wide."
    
    # input pixelization
    shapeSim, wcsSim = enmap.geometry(pos=[[-hwidth*arcmin,-hwidth*arcmin],[hwidth*arcmin,hwidth*arcmin]], res=pxIn*arcmin, proj="car")
    kappaSim = enmap.enmap(kappaSimDat,wcsSim)
    szMapuK = enmap.enmap(szMapuKDat,wcsSim)
    
    # downgrade to native
    shapeOut, wcsOut = enmap.geometry(pos=[[-hwidth*arcmin,-hwidth*arcmin],[hwidth*arcmin,hwidth*arcmin]], res=px*arcmin, proj="car")
    kappaMap = enmap.project(kappaSim,shapeOut,wcsOut)
    szMap = enmap.project(szMapuK,shapeOut,wcsOut)

    print thetaMapshape
    print szMap.shape

    if szMap.shape[0]>thetaMapshape[0]:
        kappaMap = enmap.project(kappaSim,thetaMapshape,wcsOut)
        szMap = enmap.project(szMapuK,thetaMapshape,wcsOut)
    else:
        diffPad = ((np.array(thetaMapshape) - np.array(szMap.shape))/2.+0.5).astype(int)
    
        apodWidth = 25
        kappaMap = enmap.pad(enmap.apod(kappaMap,apodWidth),diffPad)[:-1,:-1]
        szMap = enmap.pad(enmap.apod(szMap,apodWidth),diffPad)[:-1,:-1]
        # print szMap.shape
        assert szMap.shape==thetaMap.shape

    # print z, projectedM500
    # pl = Plotter()
    # pl.plot2d(kappaMap)
    # pl.done("output/kappasim.png")
    # pl = Plotter()
    # pl.plot2d(szMap)
    # pl.done("output/szsim.png")
    # sys.exit()

    # print "kappaint ", kappaMap[thetaMap*60.*180./np.pi<10.].mean()
    return kappaMap,szMap
Ejemplo n.º 4
0
import argparse
from enlib import enmap
parser = argparse.ArgumentParser()
parser.add_argument("imap")
parser.add_argument("template")
parser.add_argument("omap")
parser.add_argument("--order", type=int, default=3)
parser.add_argument("--mode", type=str, default="constant")
args = parser.parse_args()

m = enmap.read_map(args.imap)
t = enmap.read_map(args.template)
o = enmap.project(m, t.shape, t.wcs, order=args.order, mode=args.mode)
enmap.write_map(args.omap, o)
Ejemplo n.º 5
0
	ires = np.array([1,1./np.sin(R)])*res/args.supersample
	shape, wi = enmap.geometry(pos=[[np.pi/2-R,-np.pi],[np.pi/2,np.pi]], res=ires, proj="car")
	imap = enmap.zeros((ncomp,)+shape, wi)

# Define SHT for interpolation pixels
with dprint("construct sht"):
	minfo = curvedsky.map2minfo(imap)
	lmax_ideal = np.pi/res
	ps = ps[:,:,:lmax_ideal]
	lmax = ps.shape[-1]
	# We do not need all ms when centered on the pole. To reach 1e-10 relative
	# error up to R, we need mmax approx 9560*R in radians
	mmax = args.mmax or int(R*9560)
	ainfo = sharp.alm_info(lmax, mmax)
	sht = sharp.sht(minfo, ainfo)

with dprint("curvedsky tot"):
	with dprint("rand alm"):
		alm = curvedsky.rand_alm(ps, ainfo=ainfo, seed=1, m_major=False)
	with dprint("alm2map"):
		sht.alm2map(alm[:1], imap[:1].reshape(1,-1))
		if ncomp == 3:
			sht.alm2map(alm[1:3], imap[1:3,:].reshape(2,-1), spin=2)
		del alm
	# Make a test map to see if we can project between these
	with dprint("project"):
		omap = enmap.project(imap, omap.shape, omap.wcs, mode="constant", cval=np.nan)
		del imap

enmap.write_map(args.omap, omap)
Ejemplo n.º 6
0
# Define SHT for interpolation pixels
with dprint("construct sht"):
    minfo = curvedsky.map2minfo(imap)
    lmax_ideal = np.pi / res
    ps = ps[:, :, :lmax_ideal]
    lmax = ps.shape[-1]
    # We do not need all ms when centered on the pole. To reach 1e-10 relative
    # error up to R, we need mmax approx 9560*R in radians
    mmax = args.mmax or int(R * 9560)
    ainfo = sharp.alm_info(lmax, mmax)
    sht = sharp.sht(minfo, ainfo)

with dprint("curvedsky tot"):
    with dprint("rand alm"):
        alm = curvedsky.rand_alm(ps, ainfo=ainfo, seed=1, m_major=False)
    with dprint("alm2map"):
        sht.alm2map(alm[:1], imap[:1].reshape(1, -1))
        if ncomp == 3:
            sht.alm2map(alm[1:3], imap[1:3, :].reshape(2, -1), spin=2)
        del alm
    # Make a test map to see if we can project between these
    with dprint("project"):
        omap = enmap.project(imap,
                             omap.shape,
                             omap.wcs,
                             mode="constant",
                             cval=np.nan)
        del imap

enmap.write_map(args.omap, omap)
Ejemplo n.º 7
0
import numpy as np, argparse
from enlib import enmap, utils
parser = argparse.ArgumentParser()
parser.add_argument("imap")
parser.add_argument("template")
parser.add_argument("omap")
parser.add_argument("-O", "--order", type=int, default=3)
parser.add_argument("-m", "--mode", type=str, default="constant")
parser.add_argument("-M", "--mem", type=float, default=1e8)
args = parser.parse_args()

imap = enmap.read_map(args.imap)
shape, wcs = enmap.read_map_geometry(args.template)
omap = enmap.zeros(shape, wcs, imap.dtype)

blockpix = np.product(shape[:-2]) * shape[-1]
bsize = max(1, utils.nint(args.mem / (blockpix * imap.dtype.itemsize)))

nblock = (shape[-2] + bsize - 1) // bsize
for b in range(nblock):
    r1, r2 = b * bsize, (b + 1) * bsize
    osub = omap[..., r1:r2, :]
    omap[..., r1:r2, :] = enmap.project(imap,
                                        osub.shape,
                                        osub.wcs,
                                        order=args.order,
                                        mode=args.mode)
#o = enmap.project(m, t.shape, t.wcs, order=args.order, mode=args.mode)
enmap.write_map(args.omap, omap)