2017-05-27 4 views
0

J'ai un ensemble de grand, objet> 10M, dossiers avec R.A.s et Declinations. Je voudrais faire des cartes de densité de diagraphie de tous ceux-ci, en utilisant, je présume, un healpix/healpy. Mon code actuel ressemble à ceci:Je voudrais faire une carte de ciel de densité de journal de santé de healpix avec healpy

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

et je reçois l'erreur:

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

Qu'est-ce que je fais mal ??

Merci, Nic

+0

cartes Healpix exiger un nombre fixe de points, telle que donnée par l'erreur: 12 * n^2, avec n un nombre entier (normalement, ces points sont également répartis uniformément dans le ciel). Vous n'avez pas la bonne quantité de points. Notez que 'np.arange (hp.nside2npix (NSIDE))' vous donnerait le nombre de points requis (ou plutôt, les indices), mais maintenant, c'est juste un appel de fonction vide, puisque vous ne l'attribuez à rien . – Evert

Répondre

1

Ici m est un tableau de longueur ra, (et diminuer). Vous devez d'abord convertir m en une carte de healpix, [ou tableau] de longueur 12 * NSIDE^2. Pour ce faire, vous pouvez utiliser numpy.bincount [très rapide, et vous donne le nombre d'objets dans chaque pixel], ou scipy.stats.binned_statistic, [très lent, mais vous permet de calculer toute «statistique» comme np.std etc vous le souhaitez, des données se trouve dans le chaque pixel]

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)