PSFKernel#

class gammapy.irf.PSFKernel(psf_kernel_map, normalize=True)[source]#

Bases: object

PSF kernel for Map.

This is a container class to store a PSF kernel that can be used to convolve WcsNDMap objects. It is usually computed from an PSFMap.

Parameters
psf_kernel_mapMap

PSF kernel stored in a Map

Examples

from gammapy.maps import Map, WcsGeom, MapAxis
from gammapy.irf import PSFMap
from astropy import units as u

# Define energy axis
energy_axis_true = MapAxis.from_edges(np.logspace(-1., 1., 4), unit="TeV", name="energy_true")

# Create WcsGeom and map
geom = WcsGeom.create(binsz=0.02 * u.deg, width=2.0 * u.deg, axes=[energy_axis_true])
some_map = Map.from_geom(geom)

# Fill map at three positions
some_map.fill_by_coord([[0, 0, 0], [0, 0, 0], [0.3, 1, 3]])

psf = PSFMap.from_gauss(
    energy_axis_true=energy_axis_true, sigma=[0.3, 0.2, 0.1] * u.deg
)

kernel = psf.get_psf_kernel(geom=geom, max_radius=1*u.deg)

# Do the convolution
some_map_convolved = some_map.convolve(kernel)

some_map_convolved.plot_grid();

Attributes Summary

data

Access the PSFKernel numpy array

psf_kernel_map

The map object holding the kernel (Map)

Methods Summary

from_gauss(geom, sigma[, max_radius, factor])

Create Gaussian PSF.

from_spatial_model(model, geom[, ...])

Create PSF kernel from spatial model

normalize()

Force normalisation of the kernel

read(*args, **kwargs)

Read kernel Map from file.

slice_by_idx(slices)

Slice by idx

to_image([spectrum, exposure, keepdims])

Transform 3D PSFKernel into a 2D PSFKernel.

write(*args, **kwargs)

Write the Map object which contains the PSF kernel to file.

Attributes Documentation

data#

Access the PSFKernel numpy array

psf_kernel_map#

The map object holding the kernel (Map)

Methods Documentation

classmethod from_gauss(geom, sigma, max_radius=None, factor=4)[source]#

Create Gaussian PSF.

This is used for testing and examples. The map geometry parameters (pixel size, energy bins) are taken from geom. The Gaussian width sigma is a scalar,

TODO : support array input if it should vary along the energy axis.

Parameters
geomWcsGeom

Map geometry

sigmaAngle

Gaussian width.

max_radiusAngle

Desired kernel map size.

factorint

Oversample factor to compute the PSF

Returns
kernelPSFKernel

the kernel Map with reduced geometry according to the max_radius

classmethod from_spatial_model(model, geom, max_radius=None, factor=4)[source]#

Create PSF kernel from spatial model

Parameters
geomWcsGeom

Map geometry

modelSpatiaModel

Gaussian width.

max_radiusAngle

Desired kernel map size.

factorint

Oversample factor to compute the PSF

Returns
kernelPSFKernel

the kernel Map with reduced geometry according to the max_radius

normalize()[source]#

Force normalisation of the kernel

classmethod read(*args, **kwargs)[source]#

Read kernel Map from file.

slice_by_idx(slices)[source]#

Slice by idx

to_image(spectrum=None, exposure=None, keepdims=True)[source]#

Transform 3D PSFKernel into a 2D PSFKernel.

Parameters
spectrumSpectralModel

Spectral model to compute the weights. Default is power-law with spectral index of 2.

exposureQuantity or ndarray

1D array containing exposure in each true energy bin. It must have the same size as the PSFKernel energy axis. Default is uniform exposure over energy.

keepdimsbool

If true, the resulting PSFKernel will keep an energy axis with one bin. Default is True.

Returns
weighted_kernelPSFKernel

the weighted kernel summed over energy

write(*args, **kwargs)[source]#

Write the Map object which contains the PSF kernel to file.