def test_wcsndmap_fill_by_coord(npix, binsz, frame, proj, skydir, axes): geom = WcsGeom.create(npix=npix, binsz=binsz, skydir=skydir, proj=proj, frame=frame, axes=axes) m = WcsNDMap(geom) coords = m.geom.get_coord() fill_coords = tuple([qconcatenate(t, t) for t in coords]) fill_vals = fill_coords[1] m.fill_by_coord(fill_coords, fill_vals.value) assert_allclose(m.get_by_coord(coords), 2.0 * coords[1].value) # Test with SkyCoords m = WcsNDMap(geom) coords = m.geom.get_coord() skydir = coords.skycoord skydir_cel = skydir.transform_to("icrs") skydir_gal = skydir.transform_to("galactic") fill_coords_cel = (skydir_cel, ) + tuple(coords[2:]) fill_coords_gal = (skydir_gal, ) + tuple(coords[2:]) m.fill_by_coord(fill_coords_cel, coords[1].value) m.fill_by_coord(fill_coords_gal, coords[1].value) assert_allclose(m.get_by_coord(coords), 2.0 * coords[1].value)
def test_wcsndmap_set_get_by_coord(npix, binsz, frame, proj, skydir, axes): geom = WcsGeom.create( npix=npix, binsz=binsz, skydir=skydir, proj=proj, frame=frame, axes=axes ) m = WcsNDMap(geom) coords = m.geom.get_coord() m.set_by_coord(coords, coords[0]) assert_allclose(coords[0].value, m.get_by_coord(coords)) # Test with SkyCoords m = WcsNDMap(geom) coords = m.geom.get_coord() skydir = coords.skycoord skydir_cel = skydir.transform_to("icrs") skydir_gal = skydir.transform_to("galactic") m.set_by_coord((skydir_gal,) + tuple(coords[2:]), coords[0]) assert_allclose(coords[0].value, m.get_by_coord(coords)) assert_allclose( m.get_by_coord((skydir_cel,) + tuple(coords[2:])), m.get_by_coord((skydir_gal,) + tuple(coords[2:])), ) # Test with MapCoord m = WcsNDMap(geom) coords = m.geom.get_coord() coords_dict = dict(lon=coords[0], lat=coords[1]) if axes: for i, ax in enumerate(axes): coords_dict[ax.name] = coords[i + 2] map_coords = MapCoord.create(coords_dict, frame=frame) m.set_by_coord(map_coords, coords[0]) assert_allclose(coords[0].value, m.get_by_coord(map_coords))
def test_wcsndmap_set_get_by_coord(npix, binsz, coordsys, proj, skydir, axes): geom = WcsGeom.create(npix=npix, binsz=binsz, skydir=skydir, proj=proj, coordsys=coordsys, axes=axes) m = WcsNDMap(geom) coords = m.geom.get_coord() m.set_by_coord(coords, coords[0]) assert_allclose(coords[0], m.get_by_coord(coords)) if not geom.is_allsky: coords[1][...] = 0.0 assert_allclose(np.nan * np.ones(coords[0].shape), m.get_by_coord(coords)) # Test with SkyCoords m = WcsNDMap(geom) coords = m.geom.get_coord() skydir = SkyCoord(coords[0], coords[1], unit="deg", frame=coordsys_to_frame(geom.coordsys)) skydir_cel = skydir.transform_to("icrs") skydir_gal = skydir.transform_to("galactic") m.set_by_coord((skydir_gal, ) + tuple(coords[2:]), coords[0]) assert_allclose(coords[0], m.get_by_coord(coords)) assert_allclose( m.get_by_coord((skydir_cel, ) + tuple(coords[2:])), m.get_by_coord((skydir_gal, ) + tuple(coords[2:])), ) # Test with MapCoord m = WcsNDMap(geom) coords = m.geom.get_coord() coords_dict = dict(lon=coords[0], lat=coords[1]) if axes: for i, ax in enumerate(axes): coords_dict[ax.name] = coords[i + 2] map_coords = MapCoord.create(coords_dict, coordsys=coordsys) m.set_by_coord(map_coords, coords[0]) assert_allclose(coords[0], m.get_by_coord(map_coords))
def test_set_get_by_coord_quantities(): ax = MapAxis(np.logspace(0.0, 3.0, 3), interp="log", name="energy", unit="TeV") geom = WcsGeom.create(binsz=0.1, npix=(3, 4), axes=[ax]) m = WcsNDMap(geom) coords_dict = {"lon": 0, "lat": 0, "energy": 1000 * u.GeV} m.set_by_coord(coords_dict, 42) coords_dict["energy"] = 1 * u.TeV assert_allclose(42, m.get_by_coord(coords_dict))
print(exposure.geom.axes[0]) # In[ ]: # Exposure is almost constant accross the field of view exposure.slice_by_idx({"energy": 0}).plot(add_cbar=True); # In[ ]: # Exposure varies very little with energy at these high energies energy = [10, 100, 1000] * u.GeV exposure.get_by_coord({"skycoord": gc_pos, "energy": energy}) # ## Galactic diffuse background # The Fermi-LAT collaboration provides a galactic diffuse emission model, that can be used as a background model for # Fermi-LAT source analysis. # # Diffuse model maps are very large (100s of MB), so as an example here, we just load one that represents a small cutout for the Galactic center region. # In[ ]: diffuse_galactic_fermi = Map.read( "$GAMMAPY_EXTRA/datasets/fermi_3fhl/gll_iem_v06_cutout.fits" )