def synfast(cls, nside, lmax=None, mmax=None, alm=False, pol=True, pixwin=False, fwhm=0.0, sigma=None, new=False): """Create a map(s) from cl(s). Parameters ---------- cls : array or tuple of array A cl or a list of cl (either 4 or 6, see :func:`synalm`) nside : int, scalar The nside of the output map(s) lmax : int, scalar, optional Maximum l for alm. Default: 3*nside-1 mmax : int, scalar, optional Maximum m for alm. Default: 3*nside-1 alm : bool, scalar, optional If True, return also alm(s). Default: False. pol : bool, optional If True, assumes input cls are TEB and correlation. Output will be TQU maps. (input must be 1, 4 or 6 cl's) If False, fields are assumed to be described by spin 0 spherical harmonics. (input can be any number of cl's) If there is only one input cl, it has no effect. Default: True. pixwin : bool, scalar, optional If True, convolve the alm by the pixel window function. Default: False. fwhm : float, scalar, optional The fwhm of the Gaussian used to smooth the map (applied on alm) [in radians] sigma : float, scalar, optional The sigma of the Gaussian used to smooth the map (applied on alm) [in radians] Returns ------- maps : array or tuple of arrays The output map (possibly list of maps if polarized input). or, if alm is True, a tuple of (map,alm) (alm possibly a list of alm if polarized input) Notes ----- The order of the spectra will change in a future release. The new= parameter help to make the transition smoother. You can start using the new order by setting new=True. In the next version of healpy, the default will be new=True. This change is done for consistency between the different tools (alm2cl, synfast, anafast). In the new order, the spectra are ordered by diagonal of the correlation matrix. Eg, if fields are T, E, B, the spectra are TT, EE, BB, TE, EB, TB with new=True, and TT, TE, TB, EE, EB, BB if new=False. """ if not pixelfunc.isnsideok(nside): raise ValueError("Wrong nside value (must be a power of two).") if lmax is None or lmax < 0: lmax = 3 * nside - 1 alms = synalm(cls, lmax=lmax, mmax=mmax, new=new) maps = alm2map(alms, nside, lmax=lmax, mmax=mmax, pixwin=pixwin, pol=pol, fwhm=fwhm, sigma=sigma, inplace=True) if alm: return maps, alms else: return maps
def pixwin(nside, pol = False): """Return the pixel window function for the given nside. Parameters ---------- nside : int The nside for which to return the pixel window function pol : bool, optional If True, return also the polar pixel window. Default: False Returns ------- pw or pwT,pwP : array or tuple of 2 arrays The temperature pixel window function, or a tuple with both temperature and polarisation pixel window functions. """ datapath = DATAPATH if not pixelfunc.isnsideok(nside): raise ValueError("Wrong nside value (must be a power of two).") fname = os.path.join(datapath, 'pixel_window_n%04d.fits'%nside) if not os.path.isfile(fname): raise ValueError("No pixel window for this nside " "or data files missing") # return hfitslib._pixwin(nside,datapath,pol) ## BROKEN -> seg fault... try: import pyfits except ImportError: print "*********************************************************" print "** You need to install pyfits to use this function **" print "*********************************************************" raise pw = pyfits.getdata(fname) pw_temp, pw_pol = pw.field(0), pw.field(1) if pol: return pw_temp, pw_pol else: return pw_temp
def synfast(cls, nside, lmax = None, mmax = None, alm = False, pol = True, pixwin = False, fwhm = 0.0, sigma = None, new = False): """Create a map(s) from cl(s). Parameters ---------- cls : array or tuple of array A cl or a list of cl (either 4 or 6, see :func:`synalm`) nside : int, scalar The nside of the output map(s) lmax : int, scalar, optional Maximum l for alm. Default: 3*nside-1 mmax : int, scalar, optional Maximum m for alm. Default: 3*nside-1 alm : bool, scalar, optional If True, return also alm(s). Default: False. pol : bool, optional If True, assumes input cls are TEB and correlation. Output will be TQU maps. (input must be 1, 4 or 6 cl's) If False, fields are assumed to be described by spin 0 spherical harmonics. (input can be any number of cl's) If there is only one input cl, it has no effect. Default: True. pixwin : bool, scalar, optional If True, convolve the alm by the pixel window function. Default: False. fwhm : float, scalar, optional The fwhm of the Gaussian used to smooth the map (applied on alm) [in radians] sigma : float, scalar, optional The sigma of the Gaussian used to smooth the map (applied on alm) [in radians] Returns ------- maps : array or tuple of arrays The output map (possibly list of maps if polarized input). or, if alm is True, a tuple of (map,alm) (alm possibly a list of alm if polarized input) Notes ----- The order of the spectra will change in a future release. The new= parameter help to make the transition smoother. You can start using the new order by setting new=True. In the next version of healpy, the default will be new=True. This change is done for consistency between the different tools (alm2cl, synfast, anafast). In the new order, the spectra are ordered by diagonal of the correlation matrix. Eg, if fields are T, E, B, the spectra are TT, EE, BB, TE, EB, TB with new=True, and TT, TE, TB, EE, EB, BB if new=False. """ if not pixelfunc.isnsideok(nside): raise ValueError("Wrong nside value (must be a power of two).") if lmax is None or lmax < 0: lmax = 3 * nside - 1 alms = synalm(cls, lmax = lmax, mmax = mmax, new = new) maps = alm2map(alms, nside, lmax = lmax, mmax = mmax, pixwin = pixwin, pol = pol, fwhm = fwhm, sigma = sigma, inplace = True) if alm: return maps, alms else: return maps