def build_single(ifile, srcs, beam, ofile, mask_level=0, apod_size=16): imap = enmap.read_map(ifile) omap, oslice = pointsrcs.sim_srcs(imap.shape[-2:], imap.wcs, srcs, beam, return_padded=True) if mask_level: mask = omap > mask_level omap = 1-np.cos(np.minimum(1,ndimage.distance_transform_edt(1-mask)/16.0)*np.pi) omap = enmap.samewcs(omap, imap) omap = omap[oslice] enmap.write_map(ofile, omap)
def build_single(ifile, srcs, beam, ofile, mask_level=0, apod_size=16): imap = enmap.read_map(ifile) omap, oslice = pointsrcs.sim_srcs(imap.shape[-2:], imap.wcs, srcs, beam, return_padded=True) if mask_level: mask = omap > mask_level omap = 1 - np.cos( np.minimum(1, ndimage.distance_transform_edt(1 - mask) / 16.0) * np.pi) omap = enmap.samewcs(omap, imap) omap = omap[oslice] enmap.write_map(ofile, omap)
barea = dory.calc_beam_profile_area(beam_prof) #print "subtract barea: %8.3f" % (barea*1e9) fluxconv = utils.flux_factor(barea, args.freq*1e9)/1e6 # Reformat the catalog to the format sim_srcs takes srcs = np.concatenate([[icat.dec, icat.ra], icat.flux.T/fluxconv],0).T dtype = enmap.read_map(args.imap, sel=(Ellipsis,slice(0,1),slice(0,1))).dtype # Evaluate the model in regions which we can mpi parallelize over models = [] omaps = [] for ri in range(comm.rank, len(regions), comm.size): reg_fid = regions[ri] reg_pad = dory.pad_region(reg_fid, args.pad) print("%3d region %3d/%d %5d %5d %6d %6d" % (comm.rank, ri+1, len(regions), reg_fid[0,0], reg_fid[1,0], reg_fid[0,1], reg_fid[1,1])) map = enmap.read_map(args.imap, pixbox=reg_pad) map = work_around_stupid_mpi4py_bug(map) model = pointsrcs.sim_srcs(map.shape, map.wcs, srcs, beam_prof, dtype=map.dtype, pixwin=True,verbose=args.verbose) model[map==0] = 0 omaps.append(map-model) if args.omodel: models.append(model) del model, map if comm.rank == 0: print("Merging map") omap = dory.merge_maps_onto(omaps, shape, wcs, comm, root=0, crop=args.pad, dtype=dtype) del omaps if comm.rank == 0: print("Writing map") if comm.rank == 0: enmap.write_map(args.omap, omap) del omap if args.omodel: if comm.rank == 0: print("Merging model") model = dory.merge_maps_onto(models, shape, wcs, comm, root=0, crop=args.pad, dtype=dtype) del models if comm.rank == 0: print("Writing model")
np.deg2rad(pfwhm / 60.)), div=divstamp, ps=ps, beam=pfwhm, n2d=None) # model = pointsrcs.sim_srcs(stamp.shape, stamp.wcs, # np.array((dec,ra,famp.reshape(-1)[0]))[None], # maps.sigma_from_fwhm(np.deg2rad(pfwhm/60.))) # io.plot_img(np.log10(stamp),"stamp_%d.png" % k) # io.plot_img(divstamp,"divstamp_%d.png" % k) # io.plot_img(model,"model_%d.png" % k) # io.plot_img(stamp-model,"residual_%d.png" % k) # if k==1: sys.exit() sdecs.append(dec) sras.append(ra) amps.append(famp.reshape(-1)[0]) print(famp, sns[k]) print("Done with source ", k + 1, " / ", len(ras)) srcs = np.stack((sdecs, sras, amps)).T shape, wcs = imap.shape, imap.wcs model = pointsrcs.sim_srcs(shape[-2:], wcs, srcs, maps.sigma_from_fwhm(np.deg2rad(pfwhm / 60.))) omap = imap - model mname = fname.replace('.fits', '_pccs_sub_model.fits') cname = fname.replace('.fits', '_pccs_sub_catalog.txt') io.save_cols(cname, (sras, sdecs, amps)) enmap.write_fits(mname, model[None]) enmap.write_fits(oname, omap[None])
icat = dory.read_catalog(args.icat) beam_prof = get_beam_profile(beam) barea = dory.calc_beam_profile_area(beam_prof) fluxconv = utils.flux_factor(barea, args.freq*1e9)/1e6 # Reformat the catalog to the format sim_srcs takes srcs = np.concatenate([[icat.dec, icat.ra], icat.flux.T/fluxconv],0).T # Evaluate the model in regions which we can mpi parallelize over models = [] omaps = [] for ri in range(comm.rank, len(regions), comm.size): reg_fid = regions[ri] reg_pad = dory.pad_region(reg_fid, args.pad) print "%3d region %3d/%d %5d %5d %6d %6d" % (comm.rank, ri+1, len(regions), reg_fid[0,0], reg_fid[1,0], reg_fid[0,1], reg_fid[1,1]) map = enmap.read_map(args.imap, pixbox=reg_pad) map = work_around_stupid_mpi4py_bug(map) model = pointsrcs.sim_srcs(map.shape, map.wcs, srcs, beam_prof, dtype=map.dtype, pixwin=True,verbose=args.verbose) omaps.append(map-model) if args.omodel: models.append(model) del model, map if comm.rank == 0: print "Merging map" omap = dory.merge_maps_onto(omaps, shape, wcs, comm, root=0, crop=args.pad) del omaps if comm.rank == 0: print "Writing map" if comm.rank == 0: enmap.write_map(args.omap, omap) del omap if args.omodel: if comm.rank == 0: print "Merging model" model = dory.merge_maps_onto(models, shape, wcs, comm, root=0, crop=args.pad) del models if comm.rank == 0: print "Writing model" if comm.rank == 0: enmap.write_map(args.omodel, model)
arrays.s16_01.rms = 40. arrays.s16_02.freq = 148 arrays.s16_02.fwhm = 1.4 arrays.s16_02.rms = 60. arrays.s16_03.freq = 93 arrays.s16_03.fwhm = 1.4 * (148. / 93.) arrays.s16_03.rms = 60. np.random.seed((1, seed)) ras, decs = catalogs.random_catalog(shape, wcs, Nclusters, edge_avoid_deg=0.) for qind, qid in enumerate(arrays.keys()): fwhm = arrays[qid].fwhm freq = arrays[qid].freq rms = arrays[qid].rms amps = get_amps(freq) srcs = np.stack((decs * putils.degree, ras * putils.degree, amps)).T szmap = sim_srcs(shape, wcs, srcs, beam=fwhm * putils.arcmin) kbeam = maps.gauss_beam(modlmap, fwhm) signal = maps.filter_map(cmb, kbeam) + szmap # io.hplot(signal,os.environ['WORK'] + '/tiling/signal_%s' % qid) for i in range(nsplits): noise = maps.white_noise(shape, wcs, rms, seed=(2, qind, seed, i)) omap = signal + noise fname = os.environ['WORK'] + '/sim_tiling/%s_split_%d.fits' % (qid, i) enmap.write_map(fname, omap) io.hplot(omap, os.environ['WORK'] + '/tiling/total_%s_%d' % (qid, i))
idirpath = dirs[ind] odirpath = args.odir + "/" + os.path.basename(idirpath) if args.cont and os.path.isfile(odirpath + "/rhs.fits"): continue print "Processing %s" % (idirpath) info = planet9.hget(idirpath + "/info.hdf") rhs = enmap.read_map(idirpath + "/rhs.fits") div = enmap.read_map(idirpath + "/div.fits") dmjd = info.mjd - mjd0 earth_pos = -ephemeris.ephem_vec("Sun", info.mjd)[:, 0] # Set the position and amplitude uK of each simulated source srcs = np.zeros([len(params), 3]) srcs[:, :2] = planet9.displace_pos(params.T[1::-1] * utils.degree, earth_pos, params.T[2], params.T[4:2:-1] * ym * dmjd).T srcs[:, 2] = params[:, 5] * info.rfact sim = pointsrcs.sim_srcs(rhs.shape, rhs.wcs, srcs, info.beam) ## (Could also sim ths using planet9 rmat) #R = planet9.Rmat(rhs.shape, rhs.wcs, info.beam, info.rfact, lmax=args.lmax) #dmap = rhs*0 #for i, src in enumerate(srcs): # planet9.add_delta(dmap, dmap.sky2pix(src[:2]), params[i,5]) #sim2 = R.apply(dmap) rhs += div * sim # And output utils.mkdir(odirpath) planet9.hput(odirpath + "/info.hdf", info) enmap.write_map(odirpath + "/rhs.fits", rhs) enmap.write_map(odirpath + "/div.fits", div) del rhs, div, info, sim elif mode == "filter":