【问题标题】:healpy anafast leads to large Cl'shealpy anafast 导致大的 Cl 的
【发布时间】:2021-02-28 10:22:12
【问题描述】:

我正在使用 HEALPy 的 anafast 从普朗克图(数据图 [1] 或模拟图)中提取 Cl。似乎即使在我应用了他们的 Intensity common mask [2] 之后,我的功率谱也比他们的 release [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 合成一张地图,然后使用 anafast 提取功率谱,我可以验证我得到了输入功率谱。我想知道与普朗克方法相比,是否存在任何可能导致功率谱计算不匹配的潜在陷阱?

数据来源:

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

[2] 掩码图:(wget -O COM_Mask_CMB-common-Mask-Int_2048_R3.00.fits "http://pla.esac.esa.int/pla/aio/product-action?MAP.MAP_ID=COM_Mask_CMB -common-Mask-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")

【问题讨论】:

    标签: python healpy


    【解决方案1】:

    您的计算中有几个问题:

    • 分箱功率谱已在 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

    【讨论】:

    • 非常感谢安德里亚的回复。我的错 - 我太习惯于定义 Cl 的无量纲的 CLASS 方式。你的笔记也很有帮助。只是好奇,大家对地图级CMB分析的初学者有好的参考吗?我的意思是一些关于基本概念的介绍,例如由掩蔽产生的光束和模式耦合等,将非常有帮助。据我了解,普朗克论文是一个很好的资源,但目前分析的细节有点超出我的想象。作为专家,也许您知道一些学习曲线不那么陡峭的更简单的教科书/讲义?
    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 2014-11-16
    • 2012-11-08
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多