healpy.pixelfunc.get_interp_weights¶
- healpy.pixelfunc.get_interp_weights(nside, theta, phi=None, nest=False, lonlat=False)¶
Return the 4 closest pixels on the two rings above and below the location and corresponding weights. Weights are provided for bilinear interpolation along latitude and longitude
- Parameters:
- nsideint
the healpix nside
- theta, phifloat, scalar or array-like
if phi is not given, theta is interpreted as pixel number, otherwise theta[rad],phi[rad] are angular coordinates
- nestbool
if
True
, NESTED ordering, otherwise RING ordering.- lonlatbool
If True, input angles are assumed to be longitude and latitude in degree, otherwise, they are co-latitude and longitude in radians.
- Returns:
- restuple of length 2
contains pixel numbers in res[0] and weights in res[1]. Usual numpy broadcasting rules apply.
See also
Examples
Note that some of the test inputs below that are on pixel boundaries such as theta=pi/2, phi=pi/2, have a tiny value of 1e-15 added to them to make them reproducible on i386 machines using x87 floating point instruction set (see https://github.com/healpy/healpy/issues/528).
>>> import healpy as hp >>> pix, weights = hp.get_interp_weights(1, 0) >>> print(pix) [0 1 4 5] >>> weights array([ 1., 0., 0., 0.])
>>> pix, weights = hp.get_interp_weights(1, 0, 0) >>> print(pix) [1 2 3 0] >>> weights array([ 0.25, 0.25, 0.25, 0.25])
>>> pix, weights = hp.get_interp_weights(1, 0, 90, lonlat=True) >>> print(pix) [1 2 3 0] >>> weights array([ 0.25, 0.25, 0.25, 0.25])
>>> pix, weights = hp.get_interp_weights(1, [0, np.pi/2 + 1e-15], 0) >>> print(pix) [[ 1 4] [ 2 5] [ 3 11] [ 0 8]] >>> np.testing.assert_allclose( ... weights, ... np.array([[ 0.25, 1. ], ... [ 0.25, 0. ], ... [ 0.25, 0. ], ... [ 0.25, 0. ]]), rtol=0, atol=1e-14)