""" WMAP power spectrum analysis with HealPy ---------------------------------------- This demonstrates how to plot and take a power spectrum of the WMAP data using healpy, the python wrapper for healpix. Healpy is available for download at the `github site `_ """ # Author: Jake VanderPlas # License: BSD # The figure is an example from astroML: see http://astroML.github.com import numpy as np from matplotlib import pyplot as plt # warning: due to a bug in healpy, importing it before pylab can cause # a segmentation fault in some circumstances. import healpy as hp from astroML.datasets import fetch_wmap_temperatures #------------------------------------------------------------ # Fetch the data wmap_unmasked = fetch_wmap_temperatures(masked=False) wmap_masked = fetch_wmap_temperatures(masked=True) white_noise = np.ma.asarray(np.random.normal(0, 0.062, wmap_masked.shape)) #------------------------------------------------------------ # plot the unmasked map fig = plt.figure(1) hp.mollview(wmap_unmasked, min=-1, max=1, title='Unmasked map', fig=1, unit=r'$\Delta$T (mK)') #------------------------------------------------------------ # plot the masked map # filled() fills the masked regions with a null value. fig = plt.figure(2) hp.mollview(wmap_masked.filled(), title='Masked map', fig=2, unit=r'$\Delta$T (mK)') #------------------------------------------------------------ # compute and plot the power spectrum cl = hp.anafast(wmap_masked.filled(), lmax=1024) ell = np.arange(len(cl)) cl_white = hp.anafast(white_noise, lmax=1024) fig = plt.figure(3) ax = fig.add_subplot(111) ax.scatter(ell, ell * (ell + 1) * cl, s=4, c='black', lw=0, label='data') ax.scatter(ell, ell * (ell + 1) * cl_white, s=4, c='gray', lw=0, label='white noise') ax.set_xlabel(r'$\ell$') ax.set_ylabel(r'$\ell(\ell+1)C_\ell$') ax.set_title('Angular Power (not mask corrected)') ax.legend(loc='upper right') ax.grid() ax.set_xlim(0, 1100) plt.show()