예제 #1
0
    def get_sim(self,season,patch,array,sim_num, save_alm=True, save_map=False, set_idx=0,mask_patch=None,fgflux="15mjy"):
        shape,wcs = self.noise_gen.load_covsqrt(season,patch,array,coadd=True,mask_patch=mask_patch,get_geometry=True)
        # (nfreqs,nsplits,npol,Ny,Nx)
        noises,ivars = self.get_noise(season=season,patch=patch,array=array, sim_num=sim_num,mask_patch=mask_patch,set_idx=set_idx,apply_ivar=False)
        #noises,ivars = self.get_noise(season=season,patch=patch,array=array, sim_num=0,mask_patch=mask_patch,set_idx=set_idx,apply_ivar=False)
        afreqs = self.noise_gen.dm.array_freqs[array]
        #afreqs  = ['pa1_f090', 'pa1_f150'] 
        signals = []
        for afreq in afreqs:
            # This could be improved
            if self.model=='act_mr3': pfreq = afreq.split('_')[1] 
            elif self.model=='planck_hybrid': 
                pfreq = afreq
                assert season is None
                season = "planck"
                patch = "planck"
                array = "planck"

            imap = self.get_signal(season, patch, array, pfreq, sim_num, save_alm=save_alm, save_map=save_map, set_idx=set_idx,oshape=shape,owcs=wcs,fgflux=fgflux)
            signals.append(imap)
        owcs = imap.wcs
        # (nfreqs,npol,Ny,Nx)
        signals = enmap.enmap(np.stack(signals),owcs)[:,None,...]
        del imap
        assert wcsutils.equal(wcs,noises.wcs)
        assert wcsutils.equal(owcs,noises.wcs)
        return self._footprint(noise.apply_ivar_window(signals + noises,ivars))
예제 #2
0
 def test_wcsunequal(self):
     shape1,wcs1 = enmap.geometry(pos=(0,0),shape=(100,100),res=1*u.arcmin,proj='car')
     shape1,wcs2 = enmap.geometry(pos=(0,0),shape=(100,100),res=1*u.arcmin,proj='cea')
     shape1,wcs3 = enmap.geometry(pos=(10,10),shape=(100,100),res=1*u.arcmin,proj='car')
     shape1,wcs4 = enmap.geometry(pos=(0,0),shape=(100,100),res=2*u.arcmin,proj='car')
     assert not(wcsutils.equal(wcs1,wcs2))
     assert not(wcsutils.equal(wcs1,wcs3))
     assert not(wcsutils.equal(wcs1,wcs4))
예제 #3
0
 def test_lensing(self):
     lensed,unlensed = get_lens_result(1.,400,np.float64)
     lensed0 = enmap.read_map(DATA_PREFIX+"MM_lensed_%s.fits"  % lens_version)
     unlensed0 = enmap.read_map(DATA_PREFIX+"MM_unlensed_%s.fits"  % lens_version)
     y,x = lensed0.posmap()
     assert np.all(np.isclose(lensed,lensed0))
     assert np.all(np.isclose(unlensed,unlensed0))
     assert wcsutils.equal(lensed.wcs,lensed0.wcs)
     assert wcsutils.equal(unlensed.wcs,unlensed0.wcs)
     assert wcsutils.equal(unlensed.wcs,lensed.wcs)
예제 #4
0
 def test_offset(self):
     obs_pos,grad,raw_pos = get_offset_result(1.)
     obs_pos0 = enmap.read_map(DATA_PREFIX+"MM_offset_obs_pos_%s.fits" % lens_version)
     grad0 = enmap.read_map(DATA_PREFIX+"MM_offset_grad_%s.fits"  % lens_version)
     raw_pos0 = enmap.read_map(DATA_PREFIX+"MM_offset_raw_pos_%s.fits"  % lens_version)
     assert np.all(np.isclose(obs_pos,obs_pos0))
     assert np.all(np.isclose(raw_pos,raw_pos0))
     assert np.all(np.isclose(grad,grad0))
     assert wcsutils.equal(grad.wcs,grad0.wcs)
     assert wcsutils.equal(obs_pos.wcs,obs_pos0.wcs)
     assert wcsutils.equal(raw_pos.wcs,raw_pos0.wcs)
예제 #5
0
def test_lensing():
    lensed, unlensed = get_lens_result(1., 400, np.float64)
    path = os.path.dirname(enmap.__file__) + "/../tests/"
    lensed0 = enmap.read_map(path + "data/MM_lensed_042219.fits")
    unlensed0 = enmap.read_map(path + "data/MM_unlensed_042219.fits")
    y, x = lensed0.posmap()
    assert np.all(np.isclose(lensed, lensed0))
    assert np.all(np.isclose(unlensed, unlensed0))
    assert wcsutils.equal(lensed.wcs, lensed0.wcs)
    assert wcsutils.equal(unlensed.wcs, unlensed0.wcs)
    assert wcsutils.equal(unlensed.wcs, lensed.wcs)
예제 #6
0
def test_offset():
    obs_pos, grad, raw_pos = get_offset_result(1.)
    path = os.path.dirname(enmap.__file__) + "/../tests/"
    obs_pos0 = enmap.read_map(path + "data/MM_offset_obs_pos_042219.fits")
    grad0 = enmap.read_map(path + "data/MM_offset_grad_042219.fits")
    raw_pos0 = enmap.read_map(path + "data/MM_offset_raw_pos_042219.fits")
    assert np.all(np.isclose(obs_pos, obs_pos0))
    assert np.all(np.isclose(raw_pos, raw_pos0))
    assert np.all(np.isclose(grad, grad0))
    assert wcsutils.equal(grad.wcs, grad0.wcs)
    assert wcsutils.equal(obs_pos.wcs, obs_pos0.wcs)
    assert wcsutils.equal(raw_pos.wcs, raw_pos0.wcs)
예제 #7
0
 def test_extract(self):
     # Tests that extraction is sensible
     shape, wcs = enmap.geometry(pos=(0, 0), shape=(500, 500), res=0.01)
     imap = enmap.enmap(np.random.random(shape), wcs)
     smap = imap[200:300, 200:300]
     sshape, swcs = smap.shape, smap.wcs
     smap2 = enmap.extract(imap, sshape, swcs)
     pixbox = enmap.pixbox_of(imap.wcs, sshape, swcs)
     # Do write and read test
     filename = "temporary_extract_map.fits"  # NOT THREAD SAFE
     enmap.write_map(filename, imap)
     smap3 = enmap.read_map(filename, pixbox=pixbox)
     os.remove(filename)
     assert np.all(np.isclose(smap, smap2))
     assert np.all(np.isclose(smap, smap3))
     assert wcsutils.equal(smap.wcs, smap2.wcs)
     assert wcsutils.equal(smap.wcs, smap3.wcs)
예제 #8
0
def check_equality(imap1, imap2):
    assert np.all(imap1.shape == imap2.shape)
    assert wcsutils.equal(imap1.wcs, imap2.wcs)
    try:
        assert np.all(np.isclose(imap1, imap2))
    except:
        from orphics import io
        io.plot_img(imap1, "i1.png", lim=[-1.5, 2])
        io.plot_img(imap2, "i2.png", lim=[-1.5, 2])
        io.plot_img((imap1 - imap2) / imap1, "ip.png", lim=[-0.1, 0.1])
        assert 1 == 0
예제 #9
0
        # get an edge taper map and apodize
        taper = maps.get_taper(
            l_stamp.shape,
            l_stamp.wcs,
            taper_percent=tap_per,
            pad_percent=pad_per,
            weight=None,
        )
        taper = taper[0]

        # get geometry and Fourier info
        shape = kstamp.shape
        wcs = kstamp.wcs
        modlmap = enmap.modlmap(shape, wcs)

        assert wcsutils.equal(kstamp.wcs, lstamp.wcs)

        # evaluate the 2D Gaussian beam on an isotropic Fourier grid
        beam2d = maps.gauss_beam(modlmap, fwhm)

        # build Fourier space masks for lensing reconstruction
        xmask = maps.mask_kspace(shape, wcs, lmin=xlmin, lmax=xlmax)
        ymask = maps.mask_kspace(shape,
                                 wcs,
                                 lmin=ylmin,
                                 lmax=ylmax,
                                 lxcut=ylcut,
                                 lycut=ylcut)
        kmask = maps.mask_kspace(shape, wcs, lmin=klmin, lmax=klmax)

        # get theory spectrum and build interpolated 2D Fourier CMB from theory and maps