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_energy_bounds(
    "0.1 TeV", "10 TeV", nbin=3, 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() # doctest: +SKIP

Attributes Summary

data

Access the PSFKernel numpy array.

psf_kernel_map

The map object holding the kernel as a 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.

peek([figsize])

Quick-look summary plots.

plot_kernel([ax, energy, add_cbar])

Plot PSF kernel.

read(*args, **kwargs)

Read kernel Map from file.

slice_by_idx(slices)

Slice by index.

to_image([spectral_model, 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 as a 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, optional

Desired kernel map size. Default is None.

factorint, optional

Oversample factor to compute the PSF. Default is 4.

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, optional

Desired kernel map size. Default is None.

factorint, optional

Oversample factor to compute the PSF. Default is 4.

Returns:
kernelPSFKernel

The kernel Map with reduced geometry according to the max_radius.

normalize()[source]#

Force normalisation of the kernel.

peek(figsize=(15, 5))[source]#

Quick-look summary plots.

Parameters:
figsizetuple, optional

Size of the figure. Default is (15, 5).

plot_kernel(ax=None, energy=None, add_cbar=False, **kwargs)[source]#

Plot PSF kernel.

Parameters:
axAxes, optional

Matplotlib axes. Default is None.

energyQuantity, optional

If None, the PSF kernel is summed over the energy axis. Otherwise, the kernel corresponding to the energy bin including the given energy is shown.

add_cbarbool, optional

Add a colorbar. Default is False.

kwargs: dict

Keyword arguments passed to imshow.

Returns:
axAxes

Matplotlib axes.

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

Read kernel Map from file.

slice_by_idx(slices)[source]#

Slice by index.

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

Transform 3D PSFKernel into a 2D PSFKernel.

Parameters:
spectral_modelSpectralModel, optional

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

exposureQuantity or ndarray, optional

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, optional

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.