def test_convolve_pixel_scale_error(): m = WcsNDMap.create(binsz=0.05 * u.deg, width=5 * u.deg) kgeom = WcsGeom.create(binsz=0.04 * u.deg, width=0.5 * u.deg) kernel = PSFKernel.from_gauss(kgeom, sigma=0.1 * u.deg, max_radius=1.5 * u.deg) with pytest.raises(ValueError): m.convolve(kernel)
def test_convolve_pixel_scale_error(): m = WcsNDMap.create(binsz=0.05 * u.deg, width=5 * u.deg) kgeom = WcsGeom.create(binsz=0.04 * u.deg, width=0.5 * u.deg) kernel = PSFKernel.from_gauss(kgeom, sigma=0.1 * u.deg, max_radius=1.5 * u.deg) with pytest.raises(ValueError) as excinfo: m.convolve(kernel) assert "Pixel size of kernel and map not compatible." == str(excinfo.value)
def test_make_image(): energy_axis = MapAxis.from_edges([100, 200, 1000], name="energy", unit="TeV", interp="log") geom = WcsGeom.create(binsz=0.1, npix=20, axes=[energy_axis]) exposures = np.ones(geom.shape_axes) sigma = 0.5 * u.deg kernel = PSFKernel.from_gauss(geom, sigma) psf2D = kernel.make_image(exposures=exposures) assert_allclose(psf2D.psf_kernel_map.data.sum(), 1.0, rtol=1e-3) assert_allclose(psf2D.data[10, 14], 0.0038, rtol=1e-2)
def test_psf_kernel_from_gauss_read_write(tmp_path): sigma = 0.5 * u.deg binsz = 0.1 * u.deg geom = WcsGeom.create(binsz=binsz, npix=150, axes=[MapAxis((0, 1, 2))]) kernel = PSFKernel.from_gauss(geom, sigma) # Check that both maps are identical assert_allclose(kernel.psf_kernel_map.data[0], kernel.psf_kernel_map.data[1]) # Is there an odd number of pixels assert_allclose(np.array(kernel.psf_kernel_map.geom.npix) % 2, 1) kernel.write(tmp_path / "tmp.fits", overwrite=True) kernel2 = PSFKernel.read(tmp_path / "tmp.fits") assert_allclose(kernel.psf_kernel_map.data, kernel2.psf_kernel_map.data)
def test_psf_kernel_from_gauss_read_write(tmpdir): sigma = 0.5 * u.deg binsz = 0.1 * u.deg geom = WcsGeom.create(binsz=binsz, npix=150, axes=[MapAxis((0, 1, 2))]) kernel = PSFKernel.from_gauss(geom, sigma) # Check that both maps are identical assert_allclose(kernel.psf_kernel_map.data[0], kernel.psf_kernel_map.data[1]) # Is there an odd number of pixels assert_allclose(np.array(kernel.psf_kernel_map.geom.npix) % 2, 1) filename = str(tmpdir / "test_kernel.fits") # Test read and write kernel.write(filename, overwrite=True) newkernel = PSFKernel.read(filename) assert_allclose(kernel.psf_kernel_map.data, newkernel.psf_kernel_map.data)
def psf(geom_true): sigma = 0.5 * u.deg return PSFKernel.from_gauss(geom_true, sigma)