Ich habe eine Liste von Galaxien, die auf einer Healpix-Karte (die ich mit healpy zu tun habe) gezeichnet habe. Jede Galaxie hat einen bestimmten Fluss und ich muss sie so aufzeichnen, dass der Fluss fließt für jede Galaxie ist auf der Karte erhalten.Mit HEALPy Pixelzählungen speichern
Dies ist mein 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]))
Das Ergebnis, das ich bekommen, ist 140 und nicht 30, welche die wahre Summe der Flüsse ist.
ich bekommen, was los ist und dass der gleiche Fluss wird mehrere Pixel verteilt (6 für die erste Galaxie und 4 Pixel für den zweiten) und ich bin mir bewusst, ich konnte einfach tun:
newimg = img * (np.sum(flux)/np.sum(img[img>0]))
und dies würde die gesamte Photonenzahl erhalten, aber es würde nicht unbedingt die Photonenzahl jeder Galaxie erhalten, die ich brauche. d. h. diese Methode endet damit, dass die erste Galaxie einen Fluss von 12,86 und die zweite Galaxie einen Fluss von 17,14 liefert.
Gibt es eine Möglichkeit herauszufinden, wie viele Pixel jede Koordinate aufnimmt, um die Flussmenge zu ändern, die auf dieser Basis ausgegeben wird?
Vielen Dank im Voraus!