示例#1
0
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)
示例#2
0
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)
示例#3
0
文件: dory.py 项目: guanyilun/tenki
	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])
示例#5
0
文件: dory.py 项目: amaurea/tenki
	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)
示例#6
0
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))
示例#7
0
        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":