def main(args=None): p = parser() opts = parser().parse_args(args) import astropy_healpix as ah import astropy.units as u try: from mocpy import MOC except ImportError: p.error('This command-line tool requires mocpy >= 0.8.2. ' 'Please install it by running "pip install mocpy".') from ..io import read_sky_map # Read multi-order sky map skymap = read_sky_map(opts.input.name, moc=True) uniq = skymap['UNIQ'] probdensity = skymap['PROBDENSITY'] level, ipix = ah.uniq_to_level_ipix(uniq) area = ah.nside_to_pixel_area( ah.level_to_nside(level)).to_value(u.steradian) prob = probdensity * area # Create MOC contour_decimal = opts.contour / 100 moc = MOC.from_valued_healpix_cells( uniq, prob, cumul_from=0.0, cumul_to=contour_decimal) # Write MOC moc.write(opts.output, format='fits', overwrite=True)
def _contour_more_detectors(self, levels=[0.68], colors=["green"], ax=None, **kwargs): assert len(levels) == len(colors) mocs = [ MOC.from_valued_healpix_cells(self._uniq, self._prob, cumul_to=c) for c in levels ] for moc, col in zip(mocs, colors[::-1]): skycoords = moc.get_boundaries() for sc in skycoords: x, y = skycoord_to_pixel(sc, ax.wcs) p = Path(np.vstack((x, y)).T) patch = PathPatch(p, color=col, **kwargs) ax.add_patch(patch)
probdensity=data['PROBDENSITY'] import astropy_healpix as ah import astropy.units as u level, ipix = ah.uniq_to_level_ipix(uniq) area = ah.nside_to_pixel_area(ah.level_to_nside(level)).to_value(u.steradian) prob = probdensity * area from mocpy import MOC import numpy as np cumul_to = np.linspace(0.5, 0.9, 5)[::-1] colors = ['blue', 'green', 'yellow', 'orange', 'red'] mocs = [MOC.from_valued_healpix_cells(uniq, prob, cumul_to=c) for c in cumul_to] from mocpy import World2ScreenMPL from astropy.coordinates import Angle, SkyCoord import astropy.units as u # Plot the MOC using matplotlib import matplotlib.pyplot as plt fig = plt.figure(111, figsize=(15, 10)) # Define a astropy WCS easily with World2ScreenMPL(fig, fov=50 * u.deg, center=SkyCoord(315, 15, unit='deg', frame='icrs'), coordsys="icrs", rotation=Angle(0, u.degree), projection="AIT") as wcs: