コード例 #1
0
 def __call__(self, TEBlms):
     TQUlms = SM.TEB2TQUlms(_type, self.cov.lib_skyalm, TEBlms)
     for i, f in enumerate(_type):
         self.cov.apply_alm(f, TQUlms[i], inplace=True)
     ret = SM.apply_pinvTEBmat(_type, self.lib_alm, self.cov.cls,
                               TEBlms) + SM.TQU2TEBlms(
                                   _type, self.lib_alm, TQUlms)
     return filtTEBlms(ret, self.cov)
コード例 #2
0
def calc_prep(maps, cov, *args, **kwargs):
    """
    Pre operation for primordial CMB modes.
    R^t Ni data projected onto T E alms
    """
    print "This is calc prep for %s W. Filtering" % _type, _prefix
    TQUalms = np.empty((len(_type), cov.lib_skyalm.alm_size), dtype=complex)
    for i, f in enumerate(_type):
        _map = cov.apply_map(f, maps[i], inplace=False)
        TQUalms[i] = cov.apply_Rt(f, _map)
    return filtTEBlms(SM.TQU2TEBlms(_type, cov.lib_skyalm, TQUalms), cov)
コード例 #3
0
def apply_fini_BINV(soltn, cov, maps, **kwargs):
    """
    Output TEB skyalms shaped
    B^t Cov^-1 d = B^t Ni data - (B^t Ni B) MLIK(data)
             = B^t Ni (data - B MLIK(data))
    """
    TQUmlik = SM.TEB2TQUlms(_type, cov.lib_skyalm,
                            apply_fini_MLIK(soltn, cov, maps, **kwargs))
    for i, f in enumerate(_type):
        _map = maps[i] - cov.apply_R(f, TQUmlik[i])
        cov.apply_map(f, _map, inplace=True)
        TQUmlik[i] = cov.apply_Rt(f, _map)
    del _map
    return SM.TQU2TEBlms(_type, cov.lib_skyalm, TQUmlik)
コード例 #4
0
def MLIK2BINV(soltn, cov, maps, **kwargs):
    """
    Output TEB skyalms shaped
    B^t Cov^-1 d = B^t Ni data - (B^t Ni B) MLIK(data)
             = B^t Ni (data - B MLIK(data))
    """
    assert len(soltn) == TEBlen(_type)
    assert len(maps) == TQUlen(_type), (maps.shape, _type)
    TQUmlik = SM.TE2TQUlms(_type, cov.lib_skyalm, soltn)
    for i, f in enumerate(_type):
        _map = maps[i] - cov.apply_R(f, TQUmlik[i])
        cov.apply_map(f, _map, inplace=True)
        TQUmlik[i] = cov.apply_Rt(f, _map)
    del _map
    return opfilt_cinv.filtTEBlms(SMwBB.TQU2TEBlms(_type, cov.lib_skyalm, TQUmlik),cov)
コード例 #5
0
def MLIK2BINV(soltn, cov, maps, **kwargs):
    """
    Output TEB skyalms shaped
    R^t Cov^-1 d = R^t Ni data - (R^t Ni R) MLIK(data)
             = R^t Ni (data - R MLIK(data))
    """
    assert len(soltn) == TEBlen(_type)
    assert len(maps) == TQUlen(_type)
    TQUmlik = SM.TEB2TQUlms(_type, cov.lib_skyalm, soltn)
    for i, f in enumerate(_type):
        _map = maps[i] - cov.apply_R(f, TQUmlik[i])
        cov.apply_map(f, _map, inplace=True)
        TQUmlik[i] = cov.apply_Rt(f, _map)
    del _map
    return SM.TQU2TEBlms(_type, cov.lib_skyalm, TQUmlik)
コード例 #6
0
    def apply_Rts(self, TQUtype, _maps):
        """
        Apply tranposed transfer function, from T Q U real space to T E B skyalm.
        B^t X
        """
        assert TQUtype in ['T', 'QU', 'TQU']
        assert _maps.shape == (len(TQUtype), self.lib_datalm.shape[0],
                               self.lib_datalm.shape[1]), (self.npix, TQUtype,
                                                           _maps.shape)
        TEBtype = {'T': 'T', 'QU': 'EB', 'TQU': 'TEB'}[TQUtype]

        alms = ffs_specmat.TQU2TEBlms(
            TQUtype, self.lib_skyalm,
            np.array([self._upg(self.lib_datalm.map2alm(_m)) for _m in _maps]))
        TEBret = np.zeros_like(alms)
        for i, f in enumerate(TEBtype):
            for j, g in enumerate(TEBtype):
                cl_t = self.cltransf_dict.get(f + g, None)  # transposed
                if cl_t is not None:
                    TEBret[i] += self.lib_skyalm.almxfl(alms[j], cl_t)
        return TEBret