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)
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)
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)
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)
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)
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