首页 > 解决方案 > 如何在 healpix 地图上有效地执行顶帽(类似圆盘)平滑?

问题描述

我有一个高分辨率的 healpix 贴图(nside = 4096),我想在给定半径的磁盘中平滑,比如说 10 arcmin。

作为一个非常新的healpy并阅读了文档,我发现一个 - 不太好的 - 方法是执行“锥形搜索”,即在每个像素周围找到磁盘内的像素,平均它们并给出这个中心像素的新值。然而,这是非常耗时的。

import numpy as np
import healpy as hp

kappa = hp.read_map("zs_1.0334.fits") #Reading my file

NSIDE = 4096

t = 0.00290888  #10 arcmin
new_array = []
n = len(kappa)
for i in range(n):
     a = hp.query_disc(NSIDE,hp.pix2vec(NSIDE,i),t)
     new_array.append(np.mean(kappa[a]))  

我认为 healpy.sphtfunc.smoothing 函数可能会有所帮助,因为它声明您可以输入任何自定义光束窗口函数,但我根本不明白它是如何工作的......

非常感谢你的帮助 !

标签: pythonsmoothinghealpy

解决方案


正如建议的那样,我可以通过指定自定义(圆形)光束窗口轻松地使用 healpy.sphtfunc.smoothing 函数。

要计算光束窗口,这是我的问题,healpy.sphtfunc.beam2bl 在礼帽的情况下非常有用且简单。

适当的 l_max 大约为 2*Nside,但根据具体地图,它可以更小。例如,可以计算角功率谱(Cls)并检查它是否衰减小于 l_max 的 l ,这有助于获得更多时间。

非常感谢在评论区提供帮助的每一个人!


推荐阅读