WcsMap¶

class gammapy.maps.WcsMap(geom, data, meta=None, unit='')[source]

Base class for WCS map classes.

Parameters: geomWcsGeomA WCS geometry object. datandarrayData array.

Attributes Summary

 data Data array (ndarray) geom Map geometry (Geom) meta Map meta (dict) quantity Map data times unit (Quantity) unit Map unit (Unit)

Methods Summary

 coadd(self, map_in[, weights]) Add the contents of map_in to this map. copy(self, \*\*kwargs) Copy map instance and overwrite given attributes, except for geometry. create([map_type, npix, binsz, width, proj, …]) Factory method to create an empty WCS map. crop(self, crop_width) Crop the spatial dimensions of the map. downsample(self, factor[, preserve_counts, axis]) Downsample the spatial dimension by a given factor. fill_by_coord(self, coords[, weights]) Fill pixels at coords with given weights. fill_by_idx(self, idx[, weights]) Fill pixels at idx with given weights. fill_by_pix(self, pix[, weights]) Fill pixels at pix with given weights. fill_events(self, events) Fill event coordinates (EventList). from_geom(geom[, meta, data, map_type, …]) Generate an empty map from a Geom instance. from_hdulist(hdu_list[, hdu, hdu_bands]) Make a WcsMap object from a FITS HDUList. get_by_coord(self, coords) Return map values at the given map coordinates. get_by_idx(self, idx) Return map values at the given pixel indices. get_by_pix(self, pix) Return map values at the given pixel coordinates. get_image_by_coord(self, coords) Return spatial map at the given axis coordinates. get_image_by_idx(self, idx) Return spatial map at the given axis pixel indices. get_image_by_pix(self, pix) Return spatial map at the given axis pixel coordinates interp_by_coord(self, coords[, interp, …]) Interpolate map values at the given map coordinates. interp_by_pix(self, pix[, interp, fill_value]) Interpolate map values at the given pixel coordinates. iter_by_image(self) Iterate over image planes of the map. make_hdu(self[, hdu, hdu_bands, sparse, conv]) Make a FITS HDU from this map. pad(self, pad_width[, mode, cval, order]) Pad the spatial dimensions of the map. plot_interactive(self[, 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(self, geom[, order, mode]) Reproject this map to a different geometry. set_by_coord(self, coords, vals) Set pixels at coords with given vals. set_by_idx(self, idx, vals) Set pixels at idx with given vals. set_by_pix(self, pix, vals) Set pixels at pix with given vals. slice_by_idx(self, slices) Slice sub map from map object. sum_over_axes(self[, keepdims]) Reduce to a 2D image by summing over non-spatial dimensions. to_hdulist(self[, hdu, hdu_bands, sparse, conv]) Convert to HDUList. upsample(self, factor[, order, …]) Upsample the spatial dimension by a given factor. write(self, filename[, overwrite]) Write to a FITS file.

Attributes Documentation

data

Data array (ndarray)

geom

Map geometry (Geom)

meta

Map meta (dict)

quantity

Map data times unit (Quantity)

unit

Map unit (Unit)

Methods Documentation

coadd(self, map_in, weights=None)

Add the contents of map_in to 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_inMapInput map. weights: Map or ~numpy.ndarrayThe weight factors while adding
copy(self, **kwargs)

Copy map instance and overwrite given attributes, except for geometry.

Parameters: **kwargsdictKeyword arguments to overwrite in the map constructor. copyMapCopied Map.
classmethod create(map_type='wcs', npix=None, binsz=0.1, width=None, proj='CAR', coordsys='CEL', refpix=None, axes=None, skydir=None, dtype='float32', meta=None, unit='')[source]

Factory method to create an empty WCS map.

Parameters: map_type{‘wcs’, ‘wcs-sparse’}Map type. Selects the class that will be used to instantiate the map. npixint or tuple or listWidth of the map in pixels. A tuple will be interpreted as parameters for longitude and latitude axes. For maps with non-spatial dimensions, list input can be used to define a different map width in each image plane. This option supersedes width. widthfloat or tuple or listWidth of the map in degrees. A tuple will be interpreted as parameters for longitude and latitude axes. For maps with non-spatial dimensions, list input can be used to define a different map width in each image plane. binszfloat or tuple or listMap pixel size in degrees. A tuple will be interpreted as parameters for longitude and latitude axes. For maps with non-spatial dimensions, list input can be used to define a different bin size in each image plane. skydirtuple or SkyCoordSky position of map center. Can be either a SkyCoord object or a tuple of longitude and latitude in deg in the coordinate system of the map. coordsys{‘CEL’, ‘GAL’}, optionalCoordinate system, either Galactic (‘GAL’) or Equatorial (‘CEL’). axeslistList of non-spatial axes. projstring, optionalAny valid WCS projection type. Default is ‘CAR’ (cartesian). refpixtupleReference pixel of the projection. If None then this will be chosen to be center of the map. dtypestr, optionalData type, default is float32 conv{‘fgst-ccube’,’fgst-template’,’gadf’}, optionalFITS format convention. Default is ‘gadf’. metadictDictionary to store meta data. unitstr or UnitThe unit of the map mapWcsMapA WCS map object.
abstract crop(self, crop_width)

Crop the spatial dimensions of the map.

Parameters: crop_width{sequence, array_like, int}Number of pixels cropped from the edges of each axis. Defined analogously to pad_with from numpy.pad. mapMapCropped map.
abstract downsample(self, factor, preserve_counts=True, axis=None)

Downsample the spatial dimension by a given factor.

Parameters: factorintDownsampling factor. preserve_countsboolPreserve 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). axisstrWhich axis to downsample. By default spatial axes are downsampled. mapMapDownsampled map.
fill_by_coord(self, coords, weights=None)

Fill pixels at coords with given weights.

Parameters: coordstuple 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. weightsndarrayWeights vector. Default is weight of one.
abstract fill_by_idx(self, idx, weights=None)

Fill pixels at idx with given weights.

Parameters: idxtupleTuple 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. weightsndarrayWeights vector. Default is weight of one.
fill_by_pix(self, pix, weights=None)

Fill pixels at pix with given weights.

Parameters: pixtupleTuple 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. weightsndarrayWeights vector. Default is weight of one.
fill_events(self, events)

Fill event coordinates (EventList).

static from_geom(geom, meta=None, data=None, map_type='auto', unit='', dtype='float32')

Generate an empty map from a Geom instance.

Parameters: geomGeomMap geometry. datanumpy.ndarraydata array metadictDictionary 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. unitstr or UnitData unit. map_outMapMap object
classmethod from_hdulist(hdu_list, hdu=None, hdu_bands=None)[source]

Make a WcsMap object from a FITS HDUList.

Parameters: hdu_listHDUListHDU list containing HDUs for map data and bands. hdustrName or index of the HDU with the map data. hdu_bandsstrName or index of the HDU with the BANDS table. wcs_mapWcsMapMap object
get_by_coord(self, coords)

Return map values at the given map coordinates.

Parameters: coordstuple 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. valsndarrayValues of pixels in the map. np.nan used to flag coords outside of map.
abstract get_by_idx(self, idx)

Return map values at the given pixel indices.

Parameters: idxtupleTuple 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. valsndarrayArray of pixel values. np.nan used to flag coordinate outside of map
get_by_pix(self, pix)

Return map values at the given pixel coordinates.

Parameters: pixtupleTuple 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. valsndarrayArray of pixel values. np.nan used to flag coordinates outside of map
get_image_by_coord(self, coords)

Return spatial map at the given axis coordinates.

Parameters: coordstuple or dictTuple 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}. map_outMapMap with spatial dimensions only.

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(self, idx)

Return spatial map at the given axis pixel indices.

Parameters: idxtupleTuple of scalar indices for each non spatial dimension of the map. Tuple should be ordered as (I_0, …, I_n). map_outMapMap with spatial dimensions only.
get_image_by_pix(self, pix)

Return spatial map at the given axis pixel coordinates

Parameters: pixtupleTuple 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. map_outMapMap with spatial dimensions only.
abstract interp_by_coord(self, coords, interp=None, fill_value=None)

Interpolate map values at the given map coordinates.

Parameters: coordstuple 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_valueNone or float valueThe value to use for points outside of the interpolation domain. If None, values outside the domain are extrapolated. valsndarrayInterpolated pixel values.
abstract interp_by_pix(self, pix, interp=None, fill_value=None)

Interpolate map values at the given pixel coordinates.

Parameters: pixtupleTuple 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_valueNone or float valueThe value to use for points outside of the interpolation domain. If None, values outside the domain are extrapolated. valsndarrayInterpolated pixel values.
iter_by_image(self)

Iterate over image planes of the map.

This is a generator yielding (data, idx) tuples, where data is a numpy.ndarray view of the image plane data, and idx is a tuple of int, the index of the image plane.

The image plane index is in data order, so that the data array can be indexed directly. See Iterating by image for further information.

make_hdu(self, hdu='SKYMAP', hdu_bands=None, sparse=False, conv=None)[source]

Make a FITS HDU from this map.

Parameters: hdustrThe HDU extension name. hdu_bandsstrThe HDU extension name for BANDS table. sparseboolSet INDXSCHM to SPARSE and sparsify the map by only writing pixels with non-zero amplitude. hduHDU containing the map data.
abstract pad(self, pad_width, mode='constant', cval=0, order=1)

Pad the spatial dimensions of the map.

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. cvalfloatPadding value when mode=’consant’. orderintOrder of interpolation when mode=’constant’ (0 = nearest-neighbor, 1 = linear, 2 = quadratic, 3 = cubic). mapMapPadded map.
plot_interactive(self, rc_params=None, **kwargs)

Plot map with interactive widgets to explore the non spatial axes.

Parameters: rc_paramsdictPassed to matplotlib.rc_context(rc=rc_params) to style the plot. **kwargsdictKeyword 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



If you would like to adjust the figure size you can use the rc_params argument:

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')

Read a map from a FITS file.

Parameters: filenamestr or PathName of the FITS file. hdustrName or index of the HDU with the map data. hdu_bandsstrName 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. map_outMapMap object
reproject(self, geom, order=1, mode='interp')

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: geomGeomGeometry of projection. mode{‘interp’, ‘exact’}Method for reprojection. ‘interp’ method interpolates at pixel centers. ‘exact’ method integrates over intersection of pixels. orderint or strOrder of interpolating polynomial (0 = nearest-neighbor, 1 = linear, 2 = quadratic, 3 = cubic). mapMapReprojected map.
set_by_coord(self, coords, vals)

Set pixels at coords with given vals.

Parameters: coordstuple 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. valsndarrayValues vector.
abstract set_by_idx(self, idx, vals)

Set pixels at idx with given vals.

Parameters: idxtupleTuple 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. valsndarrayValues vector.
set_by_pix(self, pix, vals)

Set pixels at pix with given vals.

Parameters: pixtupleTuple 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. valsndarrayValues vector.
slice_by_idx(self, slices)

Slice sub map from map object.

For usage examples, see Indexing and Slicing.

Parameters: slicesdictDict of axes names and integers or slice object 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. map_outMapSliced map object.
abstract sum_over_axes(self, keepdims=False)

Reduce to a 2D image by summing over non-spatial dimensions.

to_hdulist(self, hdu=None, hdu_bands=None, sparse=False, conv='gadf')[source]

Convert to HDUList.

Parameters: hdustrName or index of the HDU with the map data. hdu_bandsstrName or index of the HDU with the BANDS table. sparseboolSparsify the map by only writing pixels with non-zero amplitude. conv{‘gadf’, ‘fgst-ccube’,’fgst-template’}FITS format convention. hdu_listHDUList
abstract upsample(self, factor, order=0, preserve_counts=True, axis=None)

Upsample the spatial dimension by a given factor.

Parameters: factorintUpsampling factor. orderintOrder of the interpolation used for upsampling. preserve_countsboolPreserve 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). axisstrWhich axis to upsample. By default spatial axes are upsampled. mapMapUpsampled map.
write(self, filename, overwrite=False, **kwargs)

Write to a FITS file.

Parameters: filenamestrOutput file name. overwriteboolOverwrite existing file? hdustrSet the name of the image extension. By default this will be set to SKYMAP (for BINTABLE HDU) or PRIMARY (for IMAGE HDU). hdu_bandsstrSet the name of the bands table extension. By default this will be set to BANDS. convstrFITS 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’. sparseboolSparsify the map by dropping pixels with zero amplitude. This option is only compatible with the ‘gadf’ format.