2017-05-27 32 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)