2017-05-27 74 views
0

我有一套大型的,> 10M的对象,带有R.A.s和Declinations的文件。我想制作这些日志密度全天空地图,使用我认为healpix/healpy。我当前的代码如下所示:想用healpy制作healpix日志密度全天空地图

m = hp.ang2pix(512, ra, dec, lonlat=True) 
NSIDE = 512 
np.arange(hp.nside2npix(NSIDE)) 
hp.visufunc.mollview(m) 

,我得到的错误:

ValueError: Wrong pixel number (it is not 12*nside**2) 

我在做什么错?

谢谢, 尼克

+0

Healpix贴图需要的点的固定数目的,如由错误给出:12 * N^2,n的整数数(通常,这些点也均匀分布在天空中)。你没有合适的积分。请注意,'np.arange(hp.nside2npix(NSIDE))'会给你所需要的点数(或者说,索引),但现在,它只是一个空函数调用,因为你不会把它分配给任何东西。 – Evert

回答

1

这里m是长度RA,(和DEC)的阵列。您首先需要将m转换为长度为12 * NSIDE^2的healpix映射[[或数组]。

要做到这一点,你可以使用numpy.bincount [非常快,并给你每个像素的对象数],或scipy.stats.binned_statistic,[非常慢,但可以让你计算任何'统计'像np.std等你喜欢,数据的坐落在每个像素]

def gen_fast_map(ip_, nside=512): 
    npixel = hp.nside2npix(nside) 
    map_ = np.bincount(ip_,minlength=npixel) 
    return map_ 

map = gen_fast_map(m) 
hp.visufunc.mollview(map)