Я хотел бы сгладить карту, которая не покрывает все небо. Эта карта не является гауссовой и не имеет нулевого значения, поэтому поведение healpy
по умолчанию, в котором она заполняет отсутствующие значения 0, приводит к смещению в сторону более низких значений на краях этой маски:
import healpy as hp
nside = 128
npix = hp.nside2npix(nside)
arr = np.ones(npix)
mask = np.zeros(npix, dtype=bool)
mask[:mask.size//2] = True
arr[~mask] = hp.UNSEEN
arr_sm = hp.smoothing(arr, fwhm=np.radians(5.))
hp.mollview(arr, title='Input array')
hp.mollview(arr_sm, title='Smoothed array')
Я хотел бы сохранить острый край, установив вес замаскированных значений равным нулю, а не устанавливая значения равными нулю. Это кажется трудным, потому что healpy
выполняет сглаживание в гармоническом пространстве.
Чтобы быть более конкретным, я хотел бы имитировать ключевое слово mode
в scipy.gaussian_filter()
. healpy.smoothing()
неявно использует mode=constant
с cval=0
, но мне нужно что-то вроде mode=reflect
.
Есть ли разумный способ решить эту проблему?