Пример #1
0
    def test_synfast_stats(self):
        #Temperature only
        m_t = nmt.synfast_spherical(self.nside,
                                    self.cltt,
                                    beam=self.beam,
                                    seed=1234)
        #Polarization (omitting EB and TB)
        m_p1 = nmt.synfast_spherical(self.nside,
                                     self.cl4,
                                     pol=True,
                                     beam=self.beam,
                                     seed=1234)
        #Polarization (full monty)
        m_p2 = nmt.synfast_spherical(self.nside,
                                     self.cl6,
                                     pol=True,
                                     beam=self.beam,
                                     seed=1234)
        ctt1 = self.anafast(m_t)
        ctt2, cee2, cbb2, cte2, ceb2, ctb2 = self.anafast(m_p1)
        ctt3, cee3, cbb3, cte3, ceb3, ctb3 = self.anafast(m_p2)

        def get_diff(c_d, c_t, c11, c22, c12, facsig=5):
            diff = np.fabs(c_d - c_t)  #Residuals
            sig = np.sqrt((c11 * c22 + c12**2) /
                          (2 * self.larr + 1.))  #1-sigma expected errors
            return diff < facsig * sig

        #Check TT
        self.assertTrue(
            get_diff(ctt1, self.cltt, self.cltt, self.cltt, self.cltt).all())
        self.assertTrue(
            get_diff(ctt2, self.cltt, self.cltt, self.cltt, self.cltt).all())
        self.assertTrue(
            get_diff(ctt3, self.cltt, self.cltt, self.cltt, self.cltt).all())
        #Check EE
        self.assertTrue(
            get_diff(cee2, self.clee, self.clee, self.clee, self.clee).all())
        self.assertTrue(
            get_diff(cee3, self.clee, self.clee, self.clee, self.clee).all())
        #Check BB
        self.assertTrue(
            get_diff(cbb2, self.clbb, self.clbb, self.clbb, self.clbb).all())
        self.assertTrue(
            get_diff(cbb3, self.clbb, self.clbb, self.clbb, self.clbb).all())
        #Check TE
        self.assertTrue(
            get_diff(cte2, self.clte, self.cltt, self.clee, self.clte).all())
        self.assertTrue(
            get_diff(cte3, self.clte, self.cltt, self.clee, self.clte).all())
        #Check EB
        self.assertTrue(
            get_diff(ceb2, self.cleb, self.clbb, self.clee, self.cleb).all())
        self.assertTrue(
            get_diff(ceb3, self.cleb, self.clbb, self.clee, self.cleb).all())
        #Check TB
        self.assertTrue(
            get_diff(ctb2, self.cltb, self.clbb, self.cltt, self.cltb).all())
        self.assertTrue(
            get_diff(ctb3, self.cltb, self.clbb, self.cltt, self.cltb).all())
Пример #2
0
    def synfast_stats(self, spin):
        # Temperature only
        m_t = nmt.synfast_spherical(self.nside,
                                    self.cl1, [0],
                                    beam=np.array([self.beam]),
                                    seed=1234)
        # Polarization
        m_p1 = nmt.synfast_spherical(self.nside,
                                     self.cl12, [0, spin],
                                     beam=np.array([self.beam, self.beam]),
                                     seed=1234)
        ctt1 = self.anafast(m_t, 0)[0]
        ctt2 = self.anafast([m_p1[0]], 0)[0]
        cte2, ctb2 = self.anafast([m_p1[0]], 0, m_p1[1:], spin)
        cee2, ceb2, _, cbb2 = self.anafast(m_p1[1:], spin, m_p1[1:], spin)

        def get_diff(c_d, c_t, c11, c22, c12, facsig=5):
            diff = np.fabs(c_d - c_t)  # Residuals
            # 1-sigma expected errors
            sig = np.sqrt((c11 * c22 + c12**2) / (2 * self.larr + 1.))
            return diff[2 * self.nside] < facsig * sig[2 * self.nside]

        # Check TT
        assert (get_diff(ctt1, self.cltt, self.cltt, self.cltt,
                         self.cltt).all())
        assert (get_diff(ctt2, self.cltt, self.cltt, self.cltt,
                         self.cltt).all())
        # Check EE
        assert (get_diff(cee2, self.clee, self.clee, self.clee,
                         self.clee).all())
        # Check BB
        assert (get_diff(cbb2, self.clbb, self.clbb, self.clbb,
                         self.clbb).all())
        # Check TE
        assert (get_diff(cte2, self.clte, self.cltt, self.clee,
                         self.clte).all())
        # Check EB
        assert (get_diff(ceb2, self.cleb, self.clbb, self.clee,
                         self.cleb).all())
        # Check TB
        assert (get_diff(ctb2, self.cltb, self.clbb, self.cltt,
                         self.cltb).all())
Пример #3
0
def test_synfast_errors():
    with pytest.raises(ValueError):  # Negative spin
        nmt.synfast_spherical(ST.nside, ST.cl1, [-1], seed=1234)
    with pytest.raises(ValueError):  # Not enough power spectra
        nmt.synfast_spherical(ST.nside, ST.cl2, [0, 2], seed=1234)
    with pytest.raises(ValueError):  # Not enough beams
        nmt.synfast_spherical(ST.nside,
                              ST.cl12, [0, 2],
                              beam=np.array([ST.beam]),
                              seed=1234)
    with pytest.raises(ValueError):  # Inconsistent beam
        nmt.synfast_spherical(ST.nside,
                              ST.cl12, [0, 2],
                              beam=np.array([ST.beam[:15], ST.beam[:15]]),
                              seed=1234)
    m = nmt.synfast_spherical(ST.nside, ST.cl12, [0, 2], beam=None, seed=-1)
    assert m.shape == (3, hp.nside2npix(ST.nside))
Пример #4
0
    def test_synfast_stats(self):
        # Temperature only
        m_t = nmt.synfast_spherical(self.nside,
                                    self.cl1, [0],
                                    beam=np.array([self.beam]),
                                    seed=1234)
        # Polarization
        m_p1 = nmt.synfast_spherical(self.nside,
                                     self.cl12, [0, 2],
                                     beam=np.array([self.beam, self.beam]),
                                     seed=1234)
        ctt1 = self.anafast(m_t)
        ctt2, cee2, cbb2, cte2, ceb2, ctb2 = self.anafast(m_p1)

        def get_diff(c_d, c_t, c11, c22, c12, facsig=5):
            diff = np.fabs(c_d - c_t)  # Residuals
            # 1-sigma expected errors
            sig = np.sqrt((c11 * c22 + c12**2) / (2 * self.larr + 1.))
            return diff < facsig * sig

        # Check TT
        self.assertTrue(
            get_diff(ctt1, self.cltt, self.cltt, self.cltt, self.cltt).all())
        self.assertTrue(
            get_diff(ctt2, self.cltt, self.cltt, self.cltt, self.cltt).all())
        # Check EE
        self.assertTrue(
            get_diff(cee2, self.clee, self.clee, self.clee, self.clee).all())
        # Check BB
        self.assertTrue(
            get_diff(cbb2, self.clbb, self.clbb, self.clbb, self.clbb).all())
        # Check TE
        self.assertTrue(
            get_diff(cte2, self.clte, self.cltt, self.clee, self.clte).all())
        # Check EB
        self.assertTrue(
            get_diff(ceb2, self.cleb, self.clbb, self.clee, self.cleb).all())
        # Check TB
        self.assertTrue(
            get_diff(ctb2, self.cltb, self.clbb, self.cltt, self.cltb).all())
Пример #5
0
def get_fields():
    mppt, mppq, mppu = nmt.synfast_spherical(nside, [cltt, clee, clbb, clte],
                                             pol=True)
    if w_cont:  #Not ready yet
        mppq += alpha_cont_2 * fgq
        mppu += alpha_cont_2 * fgu
        ff2 = nmt.NmtField(mask, [mppq, mppu], [[fgq, fgu]])
    else:
        ff2 = nmt.NmtField(mask, [mppq, mppu],
                           purify_e=ispure_e,
                           purify_b=ispure_b,
                           n_iter_mask_purify=10)
    return mppq, mppu, ff2
Пример #6
0
def get_fields():
    mppt, mppq, mppu = nmt.synfast_spherical(nside, [cltt, clee, clbb, clte],
                                             pol=True)
    if w_cont:
        mppt += alpha_cont_0 * fgt
        mppq += alpha_cont_2 * fgq
        mppu += alpha_cont_2 * fgu
        ff0 = nmt.NmtField(mask, [mppt], templates=[[fgt]])
        ff2 = nmt.NmtField(mask, [mppq, mppu], [[fgq, fgu]])
    else:
        ff0 = nmt.NmtField(mask, [mppt])
        ff2 = nmt.NmtField(mask, [mppq, mppu])
    return mppt, mppq, mppu, ff0, ff2
Пример #7
0
 def test_synfast_errors(self):
     with self.assertRaises(ValueError):  # Spin != 0 or 2
         nmt.synfast_spherical(self.nside, self.cl1, [1], seed=1234)
     with self.assertRaises(ValueError):  # Not enough power spectra
         nmt.synfast_spherical(self.nside, self.cl2, [0, 2], seed=1234)
     with self.assertRaises(ValueError):  # Not enough beams
         nmt.synfast_spherical(self.nside,
                               self.cl12, [0, 2],
                               beam=np.array([self.beam]),
                               seed=1234)
     with self.assertRaises(ValueError):  # Inconsistent beam
         nmt.synfast_spherical(self.nside,
                               self.cl12, [0, 2],
                               beam=np.array(
                                   [self.beam[:15], self.beam[:15]]),
                               seed=1234)
     m = nmt.synfast_spherical(self.nside,
                               self.cl12, [0, 2],
                               beam=np.array([self.beam, self.beam]),
                               seed=1234)
     self.assertEqual(m.shape, (3, hp.nside2npix(self.nside)))
Пример #8
0
 def test_synfast_errors(self):
     with self.assertRaises(ValueError):  #Single array for polarization
         nmt.synfast_spherical(self.nside, self.cltt, pol=True, seed=1234)
     with self.assertRaises(
             ValueError):  #Inconsistent array for polarization
         nmt.synfast_spherical(self.nside, [self.cltt, self.clee],
                               pol=True,
                               seed=1234)
     with self.assertRaises(
             ValueError):  #Inconsistent array for temperature-only
         nmt.synfast_spherical(self.nside, self.cl4, seed=1234)
     with self.assertRaises(ValueError):  #Inconsistent beam
         nmt.synfast_spherical(self.nside,
                               self.cl4,
                               pol=True,
                               beam=self.beam[:15],
                               seed=1234)
     m = nmt.synfast_spherical(self.nside,
                               self.cl4,
                               pol=True,
                               beam=self.beam,
                               seed=1234)
     self.assertEqual(m.shape, (3, hp.nside2npix(self.nside)))
Пример #9
0
    def generate_maps(self):
        """
        Generates a set of maps by computing correlated realisations of the
        provided power spectra.
        :return:
        """

        logger.info('Generating Gaussian maps for one realization')
        np.random.seed(seed=None)
        # Now create the maps with the correlations between both spin-0 and spin-2 fields

        #        print("tests")
        #        print("nside", self.params['nside'])
        #        print("cl shape", self.cls.shape)
        #        print("spins", self.params['spins'])
        #        print("pixwinarr shape", self.pixwinarr.shape)
        #
        #        print('Cl = '+str(self.cls))
        #        print('min/max Cl = '+str(np.min(self.cls))+', '+str(np.max(self.cls)))
        #

        maps = nmt.synfast_spherical(self.params['nside'], self.cls, spin_arr=self.params['spins'], seed=-1, \
                                     beam=self.pixwinarr)
        #        maps = nmt.synfast_spherical(self.params['nside'], self.cls, spin_arr=self.params['spins'], seed=-1, \
        #                                     beam=None)

        print('Mean of all map values' + str(np.mean(maps)))
        logger.info('Gaussian maps done for one realization')

        if self.params['nspin2'] > 0:
            logger.info('Spin 2 fields present. Reordering maps.')
            reordered_maps = self.reorder_maps(maps)

            if self.params['nspin2'] == 1:
                assert np.sum([np.all(maps[i] == reordered_maps[i]) for i in range(len(maps))]) == len(maps), \
                    'Something went wrong with map reordering.'
        else:
            logger.info('No spin 2 fields. Keeping map ordering.')
            reordered_maps = copy.deepcopy(maps)

        return reordered_maps
Пример #10
0
def get_fields(mask_ar, w_cont=False):
    """
    Generate a simulated field.
    It returns two NmtField objects for a spin-0 and a spin-2 field.

    :param mask: a sky mask.
    :param w_cont: deproject any contaminants? (not implemented yet)
    """
    nbins = 2
    spins = [0, 2] * nbins
    # maps == [st1, sq1, su1, st2, sq2, su2, ...] (oredered as in spins)
    maps = nmt.synfast_spherical(nside, clTh_all, spins)
    st1, sq1, su1, st2, sq2, su2 = maps

    if w_cont:
        raise ValueError('Contaminants not implemented yet')
    else:
        ff0_1 = nmt.NmtField(mask_ar[0], [st1])
        ff0_2 = nmt.NmtField(mask_ar[1], [st2])
        ff2_1 = nmt.NmtField(mask_ar[0], [sq1, su1])
        ff2_2 = nmt.NmtField(mask_ar[1], [sq2, su2])

    return (ff0_1, ff2_1), (ff0_2, ff2_2)
Пример #11
0
    mask_apo = mask_apo.reshape([w._naxis2, w._naxis1])
    return mask_apo


dra = 1.
ddec = -1.
nx = 360
ny = 181
wcs = WCS(naxis=2)
wcs.wcs.cdelt = [dra, ddec]
wcs.wcs.crval = [0, 0]
wcs.wcs.ctype = ['RA---CAR', 'DEC--CAR']
wcs.wcs.crpix = [1 + 180 / dra, 1 + 90 / np.fabs(ddec)]
dl, dw_q, dw_u = nmt.synfast_spherical(
    -1,
    [cltt + nltt, clte + nlte, 0 * cltt, clee + nlee, 0 * clee, clbb + nlbb],
    [0, 2],
    wcs=wcs)
sl, sw_q, sw_u = nmt.synfast_spherical(-1, [
    cltt / (l + 1.)**1.5, 0 * clte, 0 * cltt, clee /
    (l + 1.)**1.5, 0 * clee, 0.5 * clee / (l + 1.)**1.5
], [0, 2],
                                       wcs=wcs)
wcs._naxis2, wcs._naxis1 = dl.shape

mask = getmaskapoana_car(wcs, 20., 0.4, dec0=90.)
write_flat_map("mps_car_small.fits", np.array([dl, dw_q, dw_u]), wcs,
               ["T", "Q", "U"])
write_flat_map("tmp_car_small.fits", np.array([sl, sw_q, sw_u]), wcs,
               ["T", "Q", "U"])
write_flat_map("msk_car_small.fits", mask, wcs, "mask")
Пример #12
0
np.random.seed(1001)
fsky = 0.2
rholes = 1.
if not os.path.isfile(fname_mask + '.fits'):
    print "Generating mask"
    mask = getmaskapoana(nside, aposize, fsk=fsky)
    hp.write_map(fname_mask + ".fits", mask)
mask = hp.read_map(fname_mask + ".fits")
if plotres:
    hp.mollview(mask)

if w_cont:  #Not ready yet
    if not os.path.isfile(prefix + "_contaminants.fits"):
        fgt, fgq, fgu = nmt.synfast_spherical(nside,
                                              [clttfg, cleefg, clbbfg, cltefg],
                                              pol=True)
        hp.write_map(prefix + "_contaminants.fits", [fgt, fgq, fgu])
    else:
        fgt, fgq, fgu = hp.read_map(prefix + "_contaminants.fits",
                                    field=[0, 1, 2],
                                    verbose=False)

#Binning scheme
d_ell = int(1. / fsky)
b = nmt.NmtBin(nside, nlb=d_ell)

#Generate some initial fields
print " - Res: %.3lf arcmin. " % (np.sqrt(
    4 * np.pi * (180 * 60 / np.pi)**2 / hp.nside2npix(nside)))