Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用“healpy”平滑HEALPix贴图:为什么会出现输出贴图";零零碎碎的;?_Python_Astronomy_Healpy - Fatal编程技术网

Python 使用“healpy”平滑HEALPix贴图:为什么会出现输出贴图";零零碎碎的;?

Python 使用“healpy”平滑HEALPix贴图:为什么会出现输出贴图";零零碎碎的;?,python,astronomy,healpy,Python,Astronomy,Healpy,我有一张HEALPix全天空地图,来自AKARI远红外探测器数据库(公开发布)。我曾尝试使用healpy来“平滑”地图,但结果看起来很奇怪。有更好的办法吗?然而,我的问题与任何全天HEALPix地图有关(即IRAS、普朗克、WISE、WMAP) 我的目标是将这张AKARI地图的有效点扩散函数“平滑”到1度的角度分辨率(原始数据的PSF约为1 arcminute)。这样我就可以比较远红外AKARI图和低分辨率微波图(特别是那些异常微波前景图) 在我下面的例子中,我使用的是一个降级版本的地图,所以它

我有一张HEALPix全天空地图,来自AKARI远红外探测器数据库(公开发布)。我曾尝试使用healpy来“平滑”地图,但结果看起来很奇怪。有更好的办法吗?然而,我的问题与任何全天HEALPix地图有关(即IRAS、普朗克、WISE、WMAP)

我的目标是将这张AKARI地图的有效点扩散函数“平滑”到1度的角度分辨率(原始数据的PSF约为1 arcminute)。这样我就可以比较远红外AKARI图和低分辨率微波图(特别是那些异常微波前景图)

在我下面的例子中,我使用的是一个降级版本的地图,所以它足够小,可以上传到Github。这意味着像素约为3.42弧分。通常情况下,在PSF平滑之前,我不会降低太多像素比例-但这只是一个示例:

#Load the packages needed for visualization, and HEALPix processing
%matplotlib inline
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import healpy as hp
import healpy.projector as pro

#Loads the HEALPix .FITS file into an array
map_in = hp.read_map("akari_WideL_1_1024.fits", nest = True)

#Visualizes the all-sky map, before any processing is done.
hp.mollview(map_in, title='AKARI All-Sky Map:', nest = True, norm = 'hist')

#Smoothes the map with a 1-degree FWHM Gaussian (fwhm given in radians).
map_out = hp.sphtfunc.smoothing(map_out, fwhm = 0.017, iter = 1)

#Visualizes the the map after smoothing
hp.mollview(map_out, title='AKARI All-Sky Map:', nest = True, norm = 'hist')
我已经尝试过healpy.sphtfunt.smoothing例程(据我所知,
平滑
将贴图转换为球谐函数,然后与高斯函数进行卷积,然后将其转换回空间贴图

我已将ipython笔记本和低分辨率FITS HEALpix地图保存在github存储库中,如下所示:

(您需要安装
healpy
软件包)

通过运行笔记本中的代码,您可以很容易地想象出我遇到的麻烦-在平滑贴图后,会出现一些奇怪的“瑕疵”,好像像素是迭代框平均的,而不是使用圆形guassian轮廓进行平滑。我希望看到的只是输入贴图的更模糊版本

我想在平滑完成之前,我缺少了一些关于球面谐波转换的基本知识

以前有人在HEALPix地图上尝试过这种全天平滑吗


我认为另一种选择是将贴图转换为标准的矩形数组,然后进行平滑处理。但是,我仍然对在不保留HEALPix格式的情况下解决问题感到好奇。

似乎
平滑处理仅适用于环形贴图(这对我来说有点道理,因为从数学上来说这似乎更容易处理)。因此,您需要将输入映射转换为环形格式:

map_ring = hp.pixelfunc.reorder(map_in, inp='NEST', out='RING')
map_out = hp.sphtfunc.smoothing(map_ring, fwhm = 0.17, iter = 1)
hp.mollview(map_out, title='AKARI All-Sky Map:', nest = False, norm = 'hist')


这个答案来自一点尝试和错误,因为我在文档中找不到任何关于它的明确信息,而且我还没有深入到源代码中(尽管,根据下面的结果,通过查看相关的源代码可以很容易地验证我的假设是否正确)。
或者,您可以直接询问healpix/healpy人员

(我认为这实际上是文档中的一个缺点:
healpy.sphtfunc.smoothing
的文档没有提到输入所需的表单。我想这是另一天的healpy问题/PR。)

顺便说一句,在Github上创建一个SSCCE作为笔记本文件的奖励积分!(现在,如果StackOverflow也渲染笔记本的话)