Source code for m4opt.skygrid._healpix

import numpy as np
from astropy import units as u
from astropy.coordinates import ICRS
from astropy_healpix import HEALPix
from ligo.skymap.bayestar.filter import ceil_pow_2


[docs] def healpix(area: u.Quantity[u.physical.solid_angle]): """Generate a grid in HEALPix coordinates. Parameters ---------- area The average area per tile in any Astropy solid angle units: for example, :samp:`10 * astropy.units.deg**2` or :samp:`0.1 * astropy.units.steradian`. Returns ------- : The coordinates of the tiles. """ nside = np.sqrt(u.spat / (12 * area)).to_value(u.dimensionless_unscaled) nside = int(max(ceil_pow_2(nside), 1)) hpx = HEALPix(nside, frame=ICRS()) return hpx.healpix_to_skycoord(np.arange(hpx.npix))