Map¶
-
class
gammapy.maps.Map(geom, data, meta=None, unit='')[source]¶ Bases:
objectAbstract map class.
This can represent WCS- or HEALPIX-based maps with 2 spatial dimensions and N non-spatial dimensions.
Parameters: geom :
MapGeomGeometry
data :
ndarrayData array
meta :
OrderedDictDictionary to store meta data.
unit : str or
UnitData unit
Attributes Summary
dataData array ( ndarray)geomMap geometry ( MapGeom)metaMap meta ( OrderedDict)quantityMap data times unit ( Quantity)unitMap unit ( Unit)Methods Summary
coadd(map_in)Add the contents of map_into this map.copy(**kwargs)Copy map instance and overwrite given attributes, except for geometry. create(**kwargs)Create an empty map object. crop(crop_width)Crop the spatial dimension of the map by removing a number of pixels from the edge of the map. downsample(factor[, preserve_counts])Downsample the spatial dimension by a given factor. fill_by_coord(coords[, weights])Fill pixels at coordswith givenweights.fill_by_idx(idx[, weights])Fill pixels at idxwith givenweights.fill_by_pix(pix[, weights])Fill pixels at pixwith givenweights.from_geom(geom[, meta, data, map_type, unit])Generate an empty map from a MapGeominstance.from_hdulist(hdulist[, hdu, hdu_bands, map_type])Create from astropy.io.fits.HDUList.get_by_coord(coords)Return map values at the given map coordinates. get_by_idx(idx)Return map values at the given pixel indices. get_by_pix(pix)Return map values at the given pixel coordinates. get_image_by_coord(coords)Return spatial map at the given axis coordinates. get_image_by_idx(idx)Return spatial map at the given axis pixel indices. get_image_by_pix(pix)Return spatial map at the given axis pixel coordinates interp_by_coord(coords[, interp, fill_value])Interpolate map values at the given map coordinates. interp_by_pix(pix[, interp, fill_value])Interpolate map values at the given pixel coordinates. iter_by_coord([buffersize])Iterate over elements of the map returning a tuple with values and map coordinates. iter_by_image()Iterate over image planes of the map returning a tuple with the image array and image plane index. iter_by_pix([buffersize])Iterate over elements of the map returning a tuple with values and pixel coordinates. pad(pad_width[, mode, cval, order])Pad the spatial dimension of the map by extending the edge of the map by the given number of pixels. plot_interactive([rc_params])Plot map with interactive widgets to explore the non spatial axes. read(filename[, hdu, hdu_bands, map_type])Read a map from a FITS file. reproject(geom[, order, mode])Reproject this map to a different geometry. set_by_coord(coords, vals)Set pixels at coordswith givenvals.set_by_idx(idx, vals)Set pixels at idxwith givenvals.set_by_pix(pix, vals)Set pixels at pixwith givenvals.slice_by_idx(slices)Slice sub map from map object. sum_over_axes()Reduce to a 2D image by summing over non-spatial dimensions. upsample(factor[, order, preserve_counts])Upsample the spatial dimension by a given factor. write(filename[, overwrite])Write to a FITS file. Attributes Documentation
-
meta¶ Map meta (
OrderedDict)
Methods Documentation
-
coadd(map_in)[source]¶ Add the contents of
map_into this map. This method can be used to combine maps containing integral quantities (e.g. counts) or differential quantities if the maps have the same binning.Parameters: map_in :
MapInput map.
-
copy(**kwargs)[source]¶ Copy map instance and overwrite given attributes, except for geometry.
Parameters: **kwargs : dict
Keyword arguments to overwrite in the map constructor.
Returns: copy :
MapCopied Map.
-
static
create(**kwargs)[source]¶ Create an empty map object.
This method accepts generic options listed below, as well as options for
HpxMapandWcsMapobjects. For WCS-specific options, seeWcsMap.createand for HPX-specific options, seeHpxMap.create.Parameters: coordsys : str
Coordinate system, either Galactic (‘GAL’) or Equatorial (‘CEL’).
map_type : {‘wcs’, ‘wcs-sparse’, ‘hpx’, ‘hpx-sparse’}
Map type. Selects the class that will be used to instantiate the map.
binsz : float or
ndarrayPixel size in degrees.
skydir :
SkyCoordCoordinate of map center.
axes : list
List of
MapAxisobjects for each non-spatial dimension. If None then the map will be a 2D image.dtype : str
Data type, default is ‘float32’
unit : str or
UnitData unit.
meta :
OrderedDictDictionary to store meta data.
Returns: map :
MapEmpty map object.
-
crop(crop_width)[source]¶ Crop the spatial dimension of the map by removing a number of pixels from the edge of the map.
Parameters: crop_width : {sequence, array_like, int}
Number of pixels cropped from the edges of each axis. Defined analogously to
pad_withfromnumpy.pad.Returns: map :
MapCropped map.
-
downsample(factor, preserve_counts=True)[source]¶ Downsample the spatial dimension by a given factor.
Parameters: factor : int
Downsampling factor.
preserve_counts : bool
Preserve the integral over each bin. This should be true if the map is an integral quantity (e.g. counts) and false if the map is a differential quantity (e.g. intensity).
Returns: map :
MapDownsampled map.
-
fill_by_coord(coords, weights=None)[source]¶ Fill pixels at
coordswith givenweights.Parameters: coords : tuple or
MapCoordCoordinate arrays for each dimension of the map. Tuple should be ordered as (lon, lat, x_0, …, x_n) where x_i are coordinates for non-spatial dimensions of the map.
weights :
ndarrayWeights vector. Default is weight of one.
-
fill_by_idx(idx, weights=None)[source]¶ Fill pixels at
idxwith givenweights.Parameters: idx : tuple
Tuple of pixel index arrays for each dimension of the map. Tuple should be ordered as (I_lon, I_lat, I_0, …, I_n) for WCS maps and (I_hpx, I_0, …, I_n) for HEALPix maps.
weights :
ndarrayWeights vector. Default is weight of one.
-
fill_by_pix(pix, weights=None)[source]¶ Fill pixels at
pixwith givenweights.Parameters: pix : tuple
Tuple of pixel index arrays for each dimension of the map. Tuple should be ordered as (I_lon, I_lat, I_0, …, I_n) for WCS maps and (I_hpx, I_0, …, I_n) for HEALPix maps. Pixel indices can be either float or integer type. Float indices will be rounded to the nearest integer.
weights :
ndarrayWeights vector. Default is weight of one.
-
static
from_geom(geom, meta=None, data=None, map_type='auto', unit='')[source]¶ Generate an empty map from a
MapGeominstance.Parameters: geom :
MapGeomMap geometry.
data :
numpy.ndarraydata array
meta :
OrderedDictDictionary to store meta data.
map_type : {‘wcs’, ‘wcs-sparse’, ‘hpx’, ‘hpx-sparse’, ‘auto’}
Map type. Selects the class that will be used to instantiate the map. The map type should be consistent with the geometry. If map_type is ‘auto’ then an appropriate map type will be inferred from type of
geom.unit : str or
UnitData unit.
Returns: map_out :
MapMap object
-
static
from_hdulist(hdulist, hdu=None, hdu_bands=None, map_type='auto')[source]¶ Create from
astropy.io.fits.HDUList.
-
get_by_coord(coords)[source]¶ Return map values at the given map coordinates.
Parameters: coords : tuple or
MapCoordCoordinate arrays for each dimension of the map. Tuple should be ordered as (lon, lat, x_0, …, x_n) where x_i are coordinates for non-spatial dimensions of the map.
Returns: vals :
ndarrayValues of pixels in the map. np.nan used to flag coords outside of map.
-
get_by_idx(idx)[source]¶ Return map values at the given pixel indices.
Parameters: idx : tuple
Tuple of pixel index arrays for each dimension of the map. Tuple should be ordered as (I_lon, I_lat, I_0, …, I_n) for WCS maps and (I_hpx, I_0, …, I_n) for HEALPix maps.
Returns: vals :
ndarrayArray of pixel values. np.nan used to flag coordinate outside of map
-
get_by_pix(pix)[source]¶ Return map values at the given pixel coordinates.
Parameters: pix : tuple
Tuple of pixel index arrays for each dimension of the map. Tuple should be ordered as (I_lon, I_lat, I_0, …, I_n) for WCS maps and (I_hpx, I_0, …, I_n) for HEALPix maps. Pixel indices can be either float or integer type.
Returns: vals :
ndarrayArray of pixel values. np.nan used to flag coordinates outside of map
-
get_image_by_coord(coords)[source]¶ Return spatial map at the given axis coordinates.
Parameters: coords : tuple or dict
Tuple should be ordered as (x_0, …, x_n) where x_i are coordinates for non-spatial dimensions of the map. Dict should specify the axis names of the non-spatial axes such as {‘axes0’: x_0, …, ‘axesn’: x_n}.
Returns: map_out :
MapMap with spatial dimensions only.
See also
Examples
import numpy as np from gammapy.maps import Map, MapAxis from astropy.coordinates import SkyCoord from astropy import units as u # Define map axes energy_axis = MapAxis.from_edges( np.logspace(-1., 1., 4), unit='TeV', name='energy', ) time_axis = MapAxis.from_edges( np.linspace(0., 10, 20), unit='h', name='time', ) # Define map center skydir = SkyCoord(0, 0, frame='galactic', unit='deg') # Create map m_wcs = Map.create( map_type='wcs', binsz=0.02, skydir=skydir, width=10.0, axes=[energy_axis, time_axis], ) # Get image by coord tuple image = m_wcs.get_image_by_coord(('500 GeV', '1 h')) # Get image by coord dict with strings image = m_wcs.get_image_by_coord({'energy': '500 GeV', 'time': '1 h'}) # Get image by coord dict with quantities image = m_wcs.get_image_by_coord({'energy': 0.5 * u.TeV, 'time': 1 * u.h})
-
get_image_by_idx(idx)[source]¶ Return spatial map at the given axis pixel indices.
Parameters: idx : tuple
Tuple of scalar indices for each non spatial dimension of the map. Tuple should be ordered as (I_0, …, I_n).
Returns: map_out :
MapMap with spatial dimensions only.
See also
-
get_image_by_pix(pix)[source]¶ Return spatial map at the given axis pixel coordinates
Parameters: pix : tuple
Tuple of scalar pixel coordinates for each non-spatial dimension of the map. Tuple should be ordered as (I_0, …, I_n). Pixel coordinates can be either float or integer type.
Returns: map_out :
MapMap with spatial dimensions only.
See also
-
interp_by_coord(coords, interp=None, fill_value=None)[source]¶ Interpolate map values at the given map coordinates.
Parameters: coords : tuple or
MapCoordCoordinate arrays for each dimension of the map. Tuple should be ordered as (lon, lat, x_0, …, x_n) where x_i are coordinates for non-spatial dimensions of the map.
interp : {None, ‘nearest’, ‘linear’, ‘cubic’, 0, 1, 2, 3}
Method to interpolate data values. By default no interpolation is performed and the return value will be the amplitude of the pixel encompassing the given coordinate. Integer values can be used in lieu of strings to choose the interpolation method of the given order (0=’nearest’, 1=’linear’, 2=’quadratic’, 3=’cubic’). Note that only ‘nearest’ and ‘linear’ methods are supported for all map types.
fill_value : None or float value
The value to use for points outside of the interpolation domain. If None, values outside the domain are extrapolated.
Returns: vals :
ndarrayInterpolated pixel values.
-
interp_by_pix(pix, interp=None, fill_value=None)[source]¶ Interpolate map values at the given pixel coordinates.
Parameters: pix : tuple
Tuple of pixel coordinate arrays for each dimension of the map. Tuple should be ordered as (p_lon, p_lat, p_0, …, p_n) where p_i are pixel coordinates for non-spatial dimensions of the map.
interp : {None, ‘nearest’, ‘linear’, ‘cubic’, 0, 1, 2, 3}
Method to interpolate data values. By default no interpolation is performed and the return value will be the amplitude of the pixel encompassing the given coordinate. Integer values can be used in lieu of strings to choose the interpolation method of the given order (0=’nearest’, 1=’linear’, 2=’quadratic’, 3=’cubic’). Note that only ‘nearest’ and ‘linear’ methods are supported for all map types.
fill_value : None or float value
The value to use for points outside of the interpolation domain. If None, values outside the domain are extrapolated.
Returns: vals :
ndarrayInterpolated pixel values.
-
iter_by_coord(buffersize=1)[source]¶ Iterate over elements of the map returning a tuple with values and map coordinates.
Parameters: buffersize : int
Set the size of the buffer. The map will be returned in chunks of the given size.
Returns: val :
ndarrayMap values.
coords : tuple
Tuple of map coordinates.
-
iter_by_image()[source]¶ Iterate over image planes of the map returning a tuple with the image array and image plane index.
The image plane index is in data order, so that the data array can be indexed directly. See Iterating on a Map for further information.
Returns: val :
ndarrayArray of image plane values.
idx : tuple
Index of image plane.
-
iter_by_pix(buffersize=1)[source]¶ Iterate over elements of the map returning a tuple with values and pixel coordinates.
Parameters: buffersize : int
Set the size of the buffer. The map will be returned in chunks of the given size.
Returns: val :
ndarrayMap values.
pix : tuple
Tuple of pixel coordinates.
-
pad(pad_width, mode='constant', cval=0, order=1)[source]¶ Pad the spatial dimension of the map by extending the edge of the map by the given number of pixels.
Parameters: pad_width : {sequence, array_like, int}
Number of pixels padded to the edges of each axis.
mode : {‘edge’, ‘constant’, ‘interp’}
Padding mode. ‘edge’ pads with the closest edge value. ‘constant’ pads with a constant value. ‘interp’ pads with an extrapolated value.
cval : float
Padding value when mode=’consant’.
order : int
Order of interpolation when mode=’constant’ (0 = nearest-neighbor, 1 = linear, 2 = quadratic, 3 = cubic).
Returns: map :
MapPadded map.
-
plot_interactive(rc_params=None, **kwargs)[source]¶ Plot map with interactive widgets to explore the non spatial axes.
Parameters: rc_params : dict
Passed to
matplotlib.rc_context(rc=rc_params)to style the plot.**kwargs : dict
Keyword arguments passed to
WcsNDMap.plot.Examples
You can try this out e.g. using a Fermi-LAT diffuse model cube with an energy axis:
from gammapy.maps import Map m = Map.read("$GAMMAPY_EXTRA/datasets/vela_region/gll_iem_v05_rev1_cutout.fits") m.plot_interactive(cmap='gnuplot2')
If you would like to adjust the figure size you can use the
rc_paramsargument:rc_params = {'figure.figsize': (12, 6), 'font.size': 12} m.plot_interactive(rc_params=rc_params)
-
static
read(filename, hdu=None, hdu_bands=None, map_type='auto')[source]¶ Read a map from a FITS file.
Parameters: filename : str or
PathName of the FITS file.
hdu : str
Name or index of the HDU with the map data.
hdu_bands : str
Name or index of the HDU with the BANDS table. If not defined this will be inferred from the FITS header of the map HDU.
map_type : {‘wcs’, ‘wcs-sparse’, ‘hpx’, ‘hpx-sparse’, ‘auto’}
Map type. Selects the class that will be used to instantiate the map. The map type should be consistent with the format of the input file. If map_type is ‘auto’ then an appropriate map type will be inferred from the input file.
Returns: map_out :
MapMap object
-
reproject(geom, order=1, mode='interp')[source]¶ Reproject this map to a different geometry.
Only spatial axes are reprojected, if you would like to reproject non-spatial axes consider using
Map.interp_by_coord()instead.Parameters: geom :
MapGeomGeometry of projection.
mode : {‘interp’, ‘exact’}
Method for reprojection. ‘interp’ method interpolates at pixel centers. ‘exact’ method integrates over intersection of pixels.
order : int or str
Order of interpolating polynomial (0 = nearest-neighbor, 1 = linear, 2 = quadratic, 3 = cubic).
Returns: map :
MapReprojected map.
-
set_by_coord(coords, vals)[source]¶ Set pixels at
coordswith givenvals.Parameters: coords : tuple or
MapCoordCoordinate arrays for each dimension of the map. Tuple should be ordered as (lon, lat, x_0, …, x_n) where x_i are coordinates for non-spatial dimensions of the map.
vals :
ndarrayValues vector.
-
set_by_idx(idx, vals)[source]¶ Set pixels at
idxwith givenvals.Parameters: idx : tuple
Tuple of pixel index arrays for each dimension of the map. Tuple should be ordered as (I_lon, I_lat, I_0, …, I_n) for WCS maps and (I_hpx, I_0, …, I_n) for HEALPix maps.
vals :
ndarrayValues vector.
-
set_by_pix(pix, vals)[source]¶ Set pixels at
pixwith givenvals.Parameters: pix : tuple
Tuple of pixel index arrays for each dimension of the map. Tuple should be ordered as (I_lon, I_lat, I_0, …, I_n) for WCS maps and (I_hpx, I_0, …, I_n) for HEALPix maps. Pixel indices can be either float or integer type. Float indices will be rounded to the nearest integer.
vals :
ndarrayValues vector.
-
slice_by_idx(slices)[source]¶ Slice sub map from map object.
For usage examples, see Indexing and Slicing.
Parameters: slices : dict
Dict of axes names and integers or
sliceobject pairs. Contains one element for each non-spatial dimension. For integer indexing the corresponding axes is dropped from the map. Axes not specified in the dict are kept unchanged.Returns: map_out :
MapSliced map object.
-
upsample(factor, order=0, preserve_counts=True)[source]¶ Upsample the spatial dimension by a given factor.
Parameters: factor : int
Upsampling factor.
order : int
Order of the interpolation used for upsampling.
preserve_counts : bool
Preserve the integral over each bin. This should be true if the map is an integral quantity (e.g. counts) and false if the map is a differential quantity (e.g. intensity).
Returns: map :
MapUpsampled map.
-
write(filename, overwrite=False, **kwargs)[source]¶ Write to a FITS file.
Parameters: filename : str
Output file name.
overwrite : bool
Overwrite existing file?
hdu : str
Set the name of the image extension. By default this will be set to SKYMAP (for BINTABLE HDU) or PRIMARY (for IMAGE HDU).
hdu_bands : str
Set the name of the bands table extension. By default this will be set to BANDS.
conv : str
FITS format convention. By default files will be written to the gamma-astro-data-formats (GADF) format. This option can be used to write files that are compliant with format conventions required by specific software (e.g. the Fermi Science Tools). Supported conventions are ‘gadf’, ‘fgst-ccube’, ‘fgst-ltcube’, ‘fgst-bexpcube’, ‘fgst-template’, ‘fgst-srcmap’, ‘fgst-srcmap-sparse’, ‘galprop’, and ‘galprop2’.
sparse : bool
Sparsify the map by dropping pixels with zero amplitude. This option is only compatible with the ‘gadf’ format.
-