我运行healpy.sphtfunc。Alm2map将alm作为l_max = 256的数组传递,并要求输出l_max = 191的映射,但该函数似乎不能正确接受新的l_max。
下面是我所做的示例代码,使用人工生成的施舍:
import healpy as hp
import numpy as np
#nside and lmax
nside_high = 128
lmax_high= 2*nside_high
nside_low = 64
lmax_low= 3*nside_low-1
#Cl
Cl = np.ones(lmax_high)
#Alm
Alm = hp.synalm(Cl, lmax = lmax_high)
#Map
Map = hp.alm2map(Alm, nside = nside_low, lmax = lmax_low)
我得到这个错误:
ValueError Traceback (most recent call last)
/var/folders/k_/2j08yy711tb17zmmsznfx1zh0000gn/T/ipykernel_9189/2207532576.py in <cell line: 18>()
16
17 #Map
---> 18 Map = hp.alm2map(Alm, nside = nside_l, lmax = lmax_l)
/opt/anaconda3/lib/python3.8/site-packages/astropy/utils/decorators.py in wrapper(*args, **kwargs)
552 warnings.warn(msg, warning_type, stacklevel=2)
553
--> 554 return function(*args, **kwargs)
555
556 return wrapper
/opt/anaconda3/lib/python3.8/site-packages/healpy/sphtfunc.py in alm2map(alms, nside, lmax, mmax, pixwin, fwhm, sigma, pol, inplace, verbose)
502 mmax = -1
503 if pol:
--> 504 output = sphtlib._alm2map(
505 alms_new[0] if lonely else tuple(alms_new), nside, lmax=lmax, mmax=mmax
506 )
ValueError: Wrong alm size.
有人能帮忙吗?
alm2map
中lmax
参数的作用只是处理具有mmax != lmax
的输入救济品,它们不能用于裁剪救济品
目前最简单的裁剪方法是:
alm_clipped = hp.almxfl(Alm, np.ones(lmax_low+1))
Map = hp.alm2map(alm_clipped, nside = nside_low)
下一个版本的healpy
将有一个专用的功能resize_alm
:
https://github.com/healpy/healpy/pull/803
在将来使用这个函数来自动处理这个会很好,我打开了一个问题来跟踪这个:
https://github.com/healpy/healpy/issues/817