def test_integrate_wcs_geom(): center = SkyCoord("0d", "0d", frame="icrs") model_0_0d = GaussianSpatialModel(lon="0.234d", lat="-0.172d", sigma=1e-4 * u.deg, frame="icrs") model_0_01d = GaussianSpatialModel(lon="0.234d", lat="-0.172d", sigma=0.01 * u.deg, frame="icrs") model_0_005d = GaussianSpatialModel(lon="0.234d", lat="-0.172d", sigma=0.005 * u.deg, frame="icrs") geom = WcsGeom.create(skydir=center, npix=100, binsz=0.02) # TODO: solve issue with small radii integrated_0_0d = model_0_0d.integrate_geom(geom) integrated_0_01d = model_0_01d.integrate_geom(geom) integrated_0_005d = model_0_005d.integrate_geom(geom) assert_allclose(integrated_0_0d.data.sum(), 1, atol=2e-4) assert_allclose(integrated_0_01d.data.sum(), 1, atol=2e-4) assert_allclose(integrated_0_005d.data.sum(), 1, atol=2e-4)
def test_integrate_geom(): center = SkyCoord("0d", "0d", frame='icrs') model = GaussianSpatialModel(lon="0d", lat="0d", sigma=0.1*u.deg, frame='icrs') radius_large = 1 * u.deg circle_large = CircleSkyRegion(center, radius_large) radius_small = 0.1 * u.deg circle_small = CircleSkyRegion(center, radius_small) geom_large, geom_small = RegionGeom(region=circle_large), RegionGeom(region=circle_small) integral_large, integral_small = model.integrate_geom(geom_large).data, model.integrate_geom(geom_small).data assert_allclose(integral_large[0], 1, rtol=0.01) assert_allclose(integral_small[0], 0.3953, rtol=0.01)
def test_integrate_geom_energy_axis(): center = SkyCoord("0d", "0d", frame='icrs') model = GaussianSpatialModel(lon="0d", lat="0d", sigma=0.1*u.deg, frame='icrs') radius = 1 * u.deg square = RectangleSkyRegion(center, radius, radius) axis = MapAxis.from_energy_bounds("1 TeV", "10 TeV", nbin=10) geom = RegionGeom(region=square, axes=[axis]) integral = model.integrate_geom(geom).data assert_allclose(integral, 1, rtol=0.01)