J'ai une liste de galaxies à tracer sur une carte de santé (que j'utilise healpy pour faire) chaque galaxie a un flux défini et j'ai besoin de les tracer de manière à ce que le flux pour chaque galaxie est conservée sur la carte.Conserver le nombre de pixels avec HEALPy
Ceci est mon code:
import numpy as np
import matplotlib.pyplot as plt
import healpy as hp
pi = np.pi
nside = 8
xsize = 100
ra = np.array([pi/4,pi/3])
dec = np.array([pi/4,pi/3])
flux = np.array([10,20])
hpm = np.zeros(hp.nside2npix(nside)) #Blank healpix map
pixindex = hp.ang2pix(nside, dec, ra)
np.add.at(hpm,pixindex,flux) #Add flux onto correct pixels
img=hp.mollview(hpm,coord=['E'],xsize=xsize,return_projected_map=True)
print(np.sum(img[img>0]))
Le résultat est que je reçois 140 et non 30 qui est la véritable somme des flux.
je reçois ce qui se passe et que le même flux se propage sur plusieurs pixels (6 pour la première galaxie et 4 pixels pour le second) et je suis conscient que je pouvais faire:
newimg = img * (np.sum(flux)/np.sum(img[img>0]))
et cela permettrait de conserver le nombre total de photons, mais il ne conserverait pas nécessairement le nombre de photons de chaque galaxie qui est ce dont j'ai besoin. Si cette méthode se termine avec la première galaxie contribuant un flux de 12.86 et la deuxième galaxie un flux de 17.14.
Existe-t-il un moyen de déterminer le nombre de pixels que prendra chaque coordonnée, puis de modifier la quantité de flux déposée en fonction de cela?
Merci d'avance!