Reputation: 245
I am new to HEALPix and fairly new to Python as well. I try to use healpy to convert a HEALPix index to RA,Dec. I get that I have to use pix2ang, but cannot figure how to convert the output theta,phi into RA,Dec... I tried this:
import healpy as hp
import numpy as np
theta, phi = hp.pix2ang(256, 632668 ,nest=True)
ra= phi*180./np.pi
dec = 90.-(theta*180./np.pi)
but it does not seem to give the correct result.
Hope someone can help!
Upvotes: 2
Views: 5451
Reputation: 31
You can see the example below, from here.
ipix = 123
theta, phi = hp.pix2ang(nside, ipix)
ra = np.rad2deg(phi)
dec = np.rad2deg(0.5 * np.pi - theta)
Upvotes: 1
Reputation: 848
First of all the method pix2ang(nside,indx)
gives you the coordinates of pixel with number indx. The pixel number is not directly related to a coordinate, i.e. two consecutive pixel numbers are not necessarily next to each other.
Second, as written in the manual of Healpix (which is the underlying code for healpy) (http://healpix.sourceforge.net/html/csubnode2.htm) the angle theta is defined in range [0,pi] and therefore it cannot directly represent declination [-pi/2,pi/2].
So what I do is I define a transformation and I implement it in two functions, for instance:
def IndexToDeclRa(index):
theta,phi=hp.pixelfunc.pix2ang(NSIDE,index)
return -np.degrees(theta-pi/2.),np.degrees(pi*2.-phi)
def DeclRaToIndex(decl,RA):
return hp.pixelfunc.ang2pix(NSIDE,np.radians(-decl+90.),np.radians(360.-RA))
then the map itself will not be in Decl&RA but if you stick to using IndexToDeclRa
and DeclRaToIndex
you'll effecively have what you need.
Upvotes: 4