【问题标题】:Healpy: changing coordinates to a map and saving the new oneHealpy:将坐标更改为地图并保存新的
【发布时间】:2016-03-28 15:04:50
【问题描述】:

我有一张银河坐标地图,我需要将它以赤道坐标保存在另一个文件中。我知道我可以使用:

import healpy as hp
map=hp.read_map('file.fits')
map_rot=hp.mollview(map, coord=['G','C'], return_projected_map=True)

这应该返回一个存储在map_rot 中的二维numpy 数组。但是当我阅读map_rot 时,我发现它是一个仅填充有-inf 值和mask=Falsefill_value=-1.6735e+30 的masked_array(因此,显然-inf 不是掩码)。此外,map_rot 的元素总数与我期望的地图像素数 (npix=12*nside**2) 不匹配。例如,如果nside=256 我希望获得npix=786432,而map_rot400*800=320000 元素。这是怎么回事?

(我已经看过this post,但是我有一个极化图,所以我需要旋转斯托克斯的参数。由于mollview知道如何做到这一点,我试图直接从@获取新地图987654337@.)

【问题讨论】:

    标签: python numpy coordinate-systems healpy


    【解决方案1】:

    解决此问题的一种方法是保存输出,例如使用 pickle

    import healpy as hp, pickle
    map=hp.read_map('file.fits')
    map_rot=hp.mollview(map, coord=['G','C'], return_projected_map=True)
    pickle.dump(map_rot, open( "/path/map.p", "wb"))
    

    hp.mollview() 的返回值具有可以使用标准 imshow() 函数显示的格式。所以下次你想绘制它时,只需执行以下操作

    map_rot = pickle.load(open("/path/map.p"), 'rb'))
    plt.imshow(map_rot)
    

    map_rot 描述了整个 matplotlib 窗口中的像素,包括椭圆体周围的白色区域(-inf 颜色编码为白色)。

    相比之下,mollview() 只接受位于椭球体中的像素数组,即长度数组。

     len(hp.pixelfunc.nside2npix(NSIDE))
    

    【讨论】:

    • 非常感谢 Alex,这部分解决了我的问题。我也需要 .fits 格式的新地图。
    • 你试过astropy吗?在此处查看“从头开始创建 FITS 文件”部分:python4astronomers.github.io/astropy/fits.html。将 map_rot 转换为 .fits 文件应该可以在几行内完成(带有您选择的标题)。
    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多