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 anEnergyDependentTablePSF
.- Parameters
- psf_kernel_map
Map
PSF kernel stored in a Map
- psf_kernel_map
Examples
import numpy as np from gammapy.maps import Map, WcsGeom, MapAxis from gammapy.irf import EnergyDependentMultiGaussPSF, PSFKernel from astropy import units as u # Define energy axis energy_axis = MapAxis.from_edges(np.logspace(-1., 1., 4), unit='TeV', name='energy') # Create WcsGeom and map geom = WcsGeom.create(binsz=0.02*u.deg, width=2.0*u.deg, axes=[energy_axis]) some_map = Map.from_geom(geom) # Fill map at two positions some_map.fill_by_coord([[0.2,0.4],[-0.1,0.6],[0.5,3.6]]) # Extract EnergyDependentTablePSF from CTA 1DC IRF filename = '$GAMMAPY_DATA/cta-1dc/caldb/data/cta/1dc/bcf/South_z20_50h/irf_file.fits' psf = EnergyDependentMultiGaussPSF.read(filename, hdu='POINT SPREAD FUNCTION') table_psf = psf.to_energy_dependent_table_psf(theta=0.5*u.deg) psf_kernel = PSFKernel.from_table_psf(table_psf,geom, max_radius=1*u.deg) # Do the convolution some_map_convolved = some_map.convolve(psf_kernel) some_map_convolved.get_image_by_coord(dict(energy=0.6*u.TeV)).plot()
Attributes Summary
Access the PSFKernel numpy array
The map object holding the kernel (
Map
)Methods Summary
from_gauss
(geom, sigma[, max_radius, …])Create Gaussian PSF.
from_table_psf
(table_psf, geom[, …])Create a PSF kernel from a TablePSF or an EnergyDependentTablePSF on a given Geom.
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
Methods Documentation
-
classmethod
from_gauss
(geom, sigma, max_radius=None, containment_fraction=0.99, 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 widthsigma
is a scalar,TODO : support array input if it should vary along the energy axis.
-
classmethod
from_table_psf
(table_psf, geom, max_radius=None, factor=4)[source]¶ Create a PSF kernel from a TablePSF or an EnergyDependentTablePSF on a given Geom.
If the Geom is not an image, the same kernel will be present on all axes.
The PSF is estimated by oversampling defined by a given factor.
- Parameters
- table_psf
EnergyDependentTablePSF
Input table PSF
- geom
WcsGeom
Target geometry. The PSF kernel will be centered on the central pixel. The geometry axes should contain an axis with name “energy”
- max_radius
Angle
Maximum radius of the PSF kernel.
- factorint
Oversample factor to compute the PSF
- table_psf
- Returns
- kernel
PSFKernel
the kernel Map with reduced geometry according to the max_radius
- kernel
-
to_image
(spectrum=None, exposure=None, keepdims=True)[source]¶ Transform 3D PSFKernel into a 2D PSFKernel.
- Parameters
- spectrum
SpectralModel
Spectral model to compute the weights. Default is power-law with spectral index of 2.
- exposure
Quantity
orndarray
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 wil keep an energy axis with one bin. Default is True.
- spectrum
- Returns
- weighted_kernel
PSFKernel
the weighted kernel summed over energy
- weighted_kernel