簡體   English   中英

healpy anafast 導致大的 Cl 的

[英]healpy anafast leads to large Cl's

我正在使用 HEALPy 的 anafast 從普朗克地圖(數據 map [1] 或模擬地圖)中提取 Cl。 似乎即使在我應用了他們的 Intensity common mask [2] 之后,我的功率譜也比他們的發布 [3] 大五倍。

# extract Cl's
filename = 'path/to/COM_CMB_IQU-commander_2048_R3.00_full.fits'
test_map = read_map(filename)

path = 'path/to/COM_Mask_CMB-common-Mask-Int_2048_R3.00.fits'
mask = hp.read_map(path)
map_masked = hp.ma(test_map)
map_masked.mask = np.logical_not(mask)

test_cls_meas_frommap = anafast(map_masked, lmax=3000)

# load up Planck meas powerspectrum
path = '/path/to/powerspectrum'
T2 = 10**12*2.7255**2  # in muK^2
datalist = {
    'tt': 'COM_PowerSpect_CMB-TT-binned_R3.01.txt',
    'ee': 'COM_PowerSpect_CMB-EE-binned_R3.02.txt',
    'te': 'COM_PowerSpect_CMB-TE-binned_R3.02.txt'
}
targ = os.path.join(path, datalist['tt'])
res = cmb.load_meas(targ)
ll_meas = res[:, 0]
test_cls_meas = res[:, 1]/ll_meas/(ll_meas+1)*2.*np.pi/T2

# output
plt.subplots()
plt.plot(ll_meas, ll_meas*(ll_meas+1.)*test_cls_meas*T2/2./np.pi, '--', alpha=0.6, label='Planck 2018 PS release')
plt.plot(ll, ll*(ll+1.)*test_cls_meas_frommap*T2/2./np.pi, '--', alpha=0.6, label='Planck 2018 PS from Data Map')
plt.xlabel(r'$\ell$')
plt.ylabel(r'$D_\ell$')
#plt.xscale('log')
plt.legend(loc='best')

另一方面,如果我自己使用 synfast 合成一個 map,然后使用 anafast 提取功率譜,我可以驗證我得到了輸入功率譜。 我想知道與普朗克方法相比,是否存在任何可能導致功率譜計算不匹配的潛在陷阱?

數據源:

[1] 數據 map: (wget -O COM_CMB_IQU-commander_2048_R3.00_full "pla.esac.esa.int/pla-sl/data-action?MAP.MAP_OID=13470)

[2] 掩碼 map: (wget -O COM_Mask_CMB-common-Mask-Int_2048_R3.00.fits "http://pla.esac.esa.int/pla/aio/product-action?MAP.common-ID掩碼-Int_2048_R3.00.fits")

[3] 官方功率譜:(wget -O COM_PowerSpect_CMB-TT-binned_R3.01.txt "http://pla.esac.esa.int/pla/aio/product-action?COSMOLOGY.FILE_ID=COM_PowerSpect_CMB-TT-binned_R3 .01.txt")

您的計算中有幾個問題:

  • 合並后的功率譜已經在 D_ell 中,您不應將其乘以 ell(ell+1) 因子,也不應乘以 T2
  • 當您計算切割天空上的光譜時,您必須除以天空分數

所以這應該工作:

cmb_binned_spectrum = np.loadtxt('COM_PowerSpect_CMB-TT-binned_R3.01.txt')
k2muK = 1e6
plt.plot(cmb_binned_spectrum[:,0], cmb_binned_spectrum[:,1], '--', alpha=1, label='Planck 2018 PS release')
plt.plot(ll, ll*(ll+1.)*test_cls_meas_frommap*k2muK**2/2./np.pi / sky_fraction, '--', alpha=0.6, label='Planck 2018 PS from Data Map')
plt.xlabel(r'$\ell$')
plt.ylabel(r'$D_\ell~[\mu K^2]$')
plt.grid()
plt.legend(loc='best')

我解釋了它並完成了這個筆記本中的所有步驟: https://zonca.dev/2021/02/compute-planck-spectra-healpy-anafast.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM