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