FluxPoints#
- class gammapy.estimators.FluxPoints(data, reference_model, meta=None, gti=None, filter_success_nan=True)[source]#
Bases:
FluxMaps
Flux points container.
The supported formats are described here: SED.
In summary, the following formats and minimum required columns are:
Format
dnde
: columnse_ref
anddnde
Format
e2dnde
: columnse_ref
,e2dnde
Format
flux
: columnse_min
,e_max
,flux
Format
eflux
: columnse_min
,e_max
,eflux
Examples
The
FluxPoints
object is most easily created by reading a file with flux points given in one of the formats documented above:>>> from gammapy.estimators import FluxPoints >>> filename = '$GAMMAPY_DATA/hawc_crab/HAWC19_flux_points.fits' >>> flux_points = FluxPoints.read(filename) >>> flux_points.plot()
An instance of
FluxPoints
can also be created by passing an instance ofastropy.table.Table
, which contains the required columns, such as'e_ref'
and'dnde'
. The correspondingsed_type
has to be defined in the meta data of the table:>>> import numpy as np >>> from astropy import units as u >>> from astropy.table import Table >>> from gammapy.estimators import FluxPoints >>> from gammapy.modeling.models import PowerLawSpectralModel >>> table = Table() >>> pwl = PowerLawSpectralModel() >>> e_ref = np.geomspace(1, 100, 7) * u.TeV >>> table["e_ref"] = e_ref >>> table["dnde"] = pwl(e_ref) >>> table["dnde_err"] = pwl.evaluate_error(e_ref)[0] >>> table.meta["SED_TYPE"] = "dnde" >>> flux_points = FluxPoints.from_table(table) >>> flux_points.plot(sed_type="flux")
If you have flux points in a different data format, the format can be changed by renaming the table columns and adding meta data:
>>> from astropy import units as u >>> from astropy.table import Table >>> from gammapy.estimators import FluxPoints >>> from gammapy.utils.scripts import make_path
>>> filename = make_path('$GAMMAPY_DATA/tests/spectrum/flux_points/flux_points_ctb_37b.txt') >>> table = Table.read(filename ,format='ascii.csv', delimiter=' ', comment='#') >>> table.rename_column('Differential_Flux', 'dnde') >>> table['dnde'].unit = 'cm-2 s-1 TeV-1'
>>> table.rename_column('lower_error', 'dnde_errn') >>> table['dnde_errn'].unit = 'cm-2 s-1 TeV-1'
>>> table.rename_column('upper_error', 'dnde_errp') >>> table['dnde_errp'].unit = 'cm-2 s-1 TeV-1'
>>> table.rename_column('E', 'e_ref') >>> table['e_ref'].unit = 'TeV'
>>> flux_points = FluxPoints.from_table(table, sed_type="dnde") >>> flux_points.plot(sed_type="e2dnde")
Note: In order to reproduce the example you need the tests datasets folder. You may download it with the command
gammapy download datasets --tests --out $GAMMAPY_DATA
Attributes Summary
The acceptance in the off region
The acceptance in the on region.
The normalisation, alpha, for differences between the on and off regions.
Available quantities
Predicted counts null hypothesis.
Return differential flux (dnde) SED values.
Return differential flux (dnde) SED errors.
Return differential flux (dnde) SED negative errors.
Return differential flux (dnde) SED positive errors.
Reference differential flux.
Fit statistic norm scan values.
Return differential flux (dnde) SED upper limit.
Return differential energy flux (e2dnde) SED values.
Return differential energy flux (e2dnde) SED errors.
Return differential energy flux (e2dnde) SED negative errors.
Return differential energy flux (e2dnde) SED positive errors.
Reference differential flux * energy ** 2.
Return differential energy flux (e2dnde) SED upper limit.
Return energy flux (eflux) SED values.
Return energy flux (eflux) SED errors.
Return energy flux (eflux) SED negative errors.
Return energy flux (eflux) SED positive errors.
Reference energy flux.
Return energy flux (eflux) SED upper limits.
Energy axis as a
MapAxis
.Energy maximum.
Energy minimum.
Reference energy.
Return integral flux (flux) SED values.
Return integral flux (flux) SED values.
Return integral flux (flux) SED negative errors.
Return integral flux (flux) SED positive errors.
Reference integral flux.
Sensitivity given as the flux for which the significance is
self.meta["n_sigma_sensitivity]
.Return integral flux (flux) SED upper limits.
Reference map geometry as a
Geom
.Whether the flux estimate has either sqrt(TS) or test statistic defined.
Whether the flux estimate has test statistic profiles.
Whether the flux estimate has the fit status.
Whether the flux estimate has norm_ul defined.
Check whether differential SED type is convertible to integral SED type.
Whether data is an upper limit.
Number of degrees of freedom of the fit per energy bin.
n sigma
n sigma UL.
Number of iterations of fit.
Norm values.
Norm error.
Negative norm error.
Positive norm error.
Norm sensitivity.
Norm upper limit.
Predicted counts from best fit hypothesis.
Predicted background counts from best fit hypothesis.
Predicted excess count from best fit hypothesis.
Predicted excess counts error.
Predicted excess counts negative error.
Predicted excess counts positive error.
Predicted excess reference counts.
Predicted excess counts upper limits.
Reference model as a
SkyModel
.Reference model default as a
SkyModel
.Reference spectral model as a
SpectralModel
Initial SED type.
Initial SED type.
sqrt(TS) as defined by:
sqrt(TS) threshold for upper limits.
Fit statistic value.
Fit statistic value for the null hypothesis.
Fit statistic scan value.
Fit success flag.
Test statistic map as a
Map
object.Test statistic scan as a
Map
objectMethods Summary
all_quantities
(sed_type)All quantities allowed for a given SED type.
copy
([reference_model])Deep copy
from_hdulist
(hdulist[, hdu_bands, sed_type, ...])Create flux map dataset from list of HDUs.
from_maps
(maps[, sed_type, reference_model, ...])Create FluxMaps from a dictionary of maps.
from_stack
(maps, axis[, meta])Create flux points by stacking list of flux points.
from_table
(table[, sed_type, format, ...])Create flux points from a table.
get_flux_points
([position])Extract flux point at a given position.
iter_by_axis
(axis_name)Create a set of FluxMaps by splitting along an axis.
plot
([ax, sed_type, energy_power, time_format])Plot flux points.
plot_ts_profiles
([ax, sed_type, add_cbar])Plot fit statistic SED profiles as a density plot.
read
(filename[, sed_type, format, ...])Read precomputed flux points.
recompute_ul
([n_sigma_ul])Recompute upper limits corresponding to the given value.
resample_axis
(axis_new)Rebin the flux point object along the new axis.
slice_by_coord
(slices)Slice flux maps by coordinate values
slice_by_energy
(energy_min, energy_max)Slice flux maps by coordinate values along the energy axis.
slice_by_idx
(slices)Slice flux maps by index.
slice_by_time
(time_min, time_max)Slice flux maps by coordinate values along the time axis.
to_hdulist
([sed_type, hdu_bands])Convert flux map to list of HDUs.
to_maps
([sed_type])Return maps in a given SED type.
to_table
([sed_type, format, formatted])Create table for a given SED type.
write
(filename[, sed_type, format, ...])Write flux points.
Attributes Documentation
- acceptance_off#
The acceptance in the off region
- acceptance_on#
The acceptance in the on region.
- alpha#
The normalisation, alpha, for differences between the on and off regions.
- available_quantities#
Available quantities
- counts#
Predicted counts null hypothesis.
- dnde#
Return differential flux (dnde) SED values.
- dnde_err#
Return differential flux (dnde) SED errors.
- dnde_errn#
Return differential flux (dnde) SED negative errors.
- dnde_errp#
Return differential flux (dnde) SED positive errors.
- dnde_ref#
Reference differential flux.
- dnde_scan_values#
Fit statistic norm scan values.
- dnde_ul#
Return differential flux (dnde) SED upper limit.
- e2dnde#
Return differential energy flux (e2dnde) SED values.
- e2dnde_err#
Return differential energy flux (e2dnde) SED errors.
- e2dnde_errn#
Return differential energy flux (e2dnde) SED negative errors.
- e2dnde_errp#
Return differential energy flux (e2dnde) SED positive errors.
- e2dnde_ref#
Reference differential flux * energy ** 2.
- e2dnde_ul#
Return differential energy flux (e2dnde) SED upper limit.
- eflux#
Return energy flux (eflux) SED values.
- eflux_err#
Return energy flux (eflux) SED errors.
- eflux_errn#
Return energy flux (eflux) SED negative errors.
- eflux_errp#
Return energy flux (eflux) SED positive errors.
- eflux_ref#
Reference energy flux.
- eflux_ul#
Return energy flux (eflux) SED upper limits.
- energy_ref#
Reference energy.
Defined by
energy_ref
column inFluxPoints.table
or computed as log center, ifenergy_min
andenergy_max
columns are present inFluxEstimate.data
.- Returns:
- energy_ref
Quantity
Reference energy.
- energy_ref
- filter_success_nan#
- flux#
Return integral flux (flux) SED values.
- flux_err#
Return integral flux (flux) SED values.
- flux_errn#
Return integral flux (flux) SED negative errors.
- flux_errp#
Return integral flux (flux) SED positive errors.
- flux_ref#
Reference integral flux.
- flux_sensitivity#
Sensitivity given as the flux for which the significance is
self.meta["n_sigma_sensitivity]
.
- flux_ul#
Return integral flux (flux) SED upper limits.
- has_any_ts#
Whether the flux estimate has either sqrt(TS) or test statistic defined.
- has_stat_profiles#
Whether the flux estimate has test statistic profiles.
- has_success#
Whether the flux estimate has the fit status.
- has_ul#
Whether the flux estimate has norm_ul defined.
- is_convertible_to_flux_sed_type#
Check whether differential SED type is convertible to integral SED type.
- is_ul#
Whether data is an upper limit.
- n_dof#
Number of degrees of freedom of the fit per energy bin.
- n_sigma#
n sigma
- n_sigma_ul#
n sigma UL.
- niter#
Number of iterations of fit.
- norm#
Norm values.
- norm_err#
Norm error.
- norm_errn#
Negative norm error.
- norm_errp#
Positive norm error.
- norm_sensitivity#
Norm sensitivity.
- norm_ul#
Norm upper limit.
- npred#
Predicted counts from best fit hypothesis.
- npred_background#
Predicted background counts from best fit hypothesis.
- npred_excess#
Predicted excess count from best fit hypothesis.
- npred_excess_err#
Predicted excess counts error.
- npred_excess_errn#
Predicted excess counts negative error.
- npred_excess_errp#
Predicted excess counts positive error.
- npred_excess_ref#
Predicted excess reference counts.
- npred_excess_ul#
Predicted excess counts upper limits.
- reference_spectral_model#
Reference spectral model as a
SpectralModel
- sed_type_init#
Initial SED type.
- sed_type_plot_default#
Initial SED type.
- sqrt_ts#
sqrt(TS) as defined by:
\[\begin{split}\sqrt{TS} = \left \{ \begin{array}{ll} -\sqrt{TS} & : \text{if} \ norm < 0 \\ \sqrt{TS} & : \text{else} \end{array} \right.\end{split}\]- Returns:
- sqrt_ts
Map
sqrt(TS) map.
- sqrt_ts
- sqrt_ts_threshold_ul#
sqrt(TS) threshold for upper limits.
- stat#
Fit statistic value.
- stat_null#
Fit statistic value for the null hypothesis.
- stat_scan#
Fit statistic scan value.
- success#
Fit success flag.
Methods Documentation
- static all_quantities(sed_type)#
All quantities allowed for a given SED type.
- Parameters:
- sed_type{“likelihood”, “dnde”, “e2dnde”, “flux”, “eflux”}
SED type.
- Returns:
- listlist of str
All allowed quantities for a given SED type.
- copy(reference_model=None)#
Deep copy
- classmethod from_hdulist(hdulist, hdu_bands=None, sed_type=None, checksum=False)#
Create flux map dataset from list of HDUs.
- Parameters:
- hdulist
HDUList
List of HDUs.
- hdu_bandsstr, optional
Name of the HDU with the BANDS table. Default is ‘BANDS’ If set to None, each map should have its own hdu_band. Default is None.
- sed_type{“dnde”, “flux”, “e2dnde”, “eflux”, “likelihood”}, optional
Sed type. Default is None.
- hdulist
- Returns:
- flux_maps
FluxMaps
Flux maps object.
- flux_maps
- classmethod from_maps(maps, sed_type=None, reference_model=None, gti=None, meta=None)#
Create FluxMaps from a dictionary of maps.
- Parameters:
- maps
Maps
Maps object containing the input maps.
- sed_typestr, optional
SED type of the input maps. If None, set to “likelihood”. Default is None.
- reference_model
SkyModel
, optional Reference model to use for conversions. If None, a model consisting of a point source with a power law spectrum of index 2 is assumed. Default is None.
- gti
GTI
, optional Maps GTI information. Default is None.
- meta
dict
Meta dictionary.
- maps
- Returns:
- flux_maps
FluxMaps
Flux maps object.
- flux_maps
- classmethod from_stack(maps, axis, meta=None)#
Create flux points by stacking list of flux points.
The first
FluxPoints
object in the list is taken as a reference to infer column names and units for the stacked object.
- classmethod from_table(table, sed_type=None, format=None, reference_model=None, gti=None)[source]#
Create flux points from a table. The table column names must be consistent with the sed_type.
- Parameters:
- table
Table
Table.
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”, “likelihood”}, optional
SED type. Default is None.
- format{“gadf-sed”, “lightcurve”, “profile”}, optional
Table format. If None, it is extracted from the table column content. Default is None.
- reference_model
SpectralModel
, optional Reference spectral model. Default is None.
- gti
GTI
, optional Good time intervals. Default is None.
- table
- Returns:
- flux_points
FluxPoints
Flux points.
- flux_points
- get_flux_points(position=None)#
Extract flux point at a given position.
- Parameters:
- position
SkyCoord
Position where the flux points are extracted.
- position
- Returns:
- flux_points
FluxPoints
Flux points object.
- flux_points
- iter_by_axis(axis_name)#
Create a set of FluxMaps by splitting along an axis.
- Parameters:
- axis_namestr
Name of the axis to split on.
- Returns:
- flux_maps
FluxMap
FluxMap iteration.
- flux_maps
- plot(ax=None, sed_type=None, energy_power=0, time_format='iso', **kwargs)[source]#
Plot flux points.
- Parameters:
- ax
Axes
, optional Axis object to plot on. Default is None.
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”}, optional
SED type. Default is None.
- energy_powerfloat, optional
Power of energy to multiply flux axis with. Default is 0.
- time_format{“iso”, “mjd”}
Used time format is a time axis is present. Default is “iso”.
- **kwargsdict, optional
Keyword arguments passed to
plot
.
- ax
- Returns:
- ax
Axes
Axis object.
- ax
- plot_ts_profiles(ax=None, sed_type=None, add_cbar=True, **kwargs)[source]#
Plot fit statistic SED profiles as a density plot.
- Parameters:
- ax
Axes
, optional Axis object to plot on. Default is None.
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”}, optional
SED type. Default is None.
- add_cbarbool, optional
Whether to add a colorbar to the plot. Default is True.
- **kwargsdict, optional
Keyword arguments passed to
pcolormesh
.
- ax
- Returns:
- ax
Axes
Axis object.
- ax
- classmethod read(filename, sed_type=None, format=None, reference_model=None, checksum=False, **kwargs)[source]#
Read precomputed flux points.
- Parameters:
- filenamestr
Filename.
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”, “likelihood”}
SED type.
- format{“gadf-sed”, “lightcurve”, “profile”}, optional
Format string. If None, the format is extracted from the input. Default is None.
- reference_model
SpectralModel
Reference spectral model.
- checksumbool
If True checks both DATASUM and CHECKSUM cards in the file headers. Default is False.
- **kwargsdict, optional
Keyword arguments passed to
astropy.table.Table.read
.
- Returns:
- flux_points
FluxPoints
Flux points.
- flux_points
- recompute_ul(n_sigma_ul=2, **kwargs)[source]#
Recompute upper limits corresponding to the given value. The pre-computed statistic profiles must exist for the re-computation.
- Parameters:
- n_sigma_ulint
Number of sigma to use for upper limit computation. Default is 2.
- **kwargsdict, optional
Keyword arguments passed to
brentq
.
- Returns:
- flux_points
FluxPoints
A new FluxPoints object with modified upper limits.
- flux_points
Examples
>>> from gammapy.estimators import FluxPoints >>> filename = '$GAMMAPY_DATA/tests/spectrum/flux_points/binlike.fits' >>> flux_points = FluxPoints.read(filename) >>> flux_points_recomputed = flux_points.recompute_ul(n_sigma_ul=3) >>> print(flux_points.meta["n_sigma_ul"], flux_points.flux_ul.data[0]) 2.0 [[3.95451985e-09]] >>> print(flux_points_recomputed.meta["n_sigma_ul"], flux_points_recomputed.flux_ul.data[0]) 3 [[6.22245374e-09]]
- resample_axis(axis_new)[source]#
Rebin the flux point object along the new axis. The log-likelihoods profiles in each bin are summed to compute the resultant quantities. Stat profiles must be present on the fluxpoints object for this method to work.
For now, works only for flat fluxpoints.
- Parameters:
- axis_new
MapAxis
orTimeMapAxis
The new axis to resample along
- axis_new
- Returns:
- flux_points
FluxPoints
A new FluxPoints object with modified axis.
- flux_points
- slice_by_coord(slices)#
Slice flux maps by coordinate values
- Parameters:
- slicesdict
Dictionary of axes names and
astropy.Quantity
orastropy.Time
orslice
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.
- Returns:
- flux_maps
FluxMaps
Sliced flux maps object.
- flux_maps
Examples
>>> from gammapy.estimators import FluxPoints >>> import astropy.units as u >>> lc_1d = FluxPoints.read("$GAMMAPY_DATA/estimators/pks2155_hess_lc/pks2155_hess_lc.fits") >>> slices = {"time": slice(2035.93*u.day, 2036.05*u.day)} >>> sliced = lc_1d.slice_by_coord(slices)
- slice_by_energy(energy_min, energy_max)#
Slice flux maps by coordinate values along the energy axis.
- Parameters:
- energy_min, energy_max
Quantity
Energy bounds used to slice the flux map.
- energy_min, energy_max
- Returns:
- flux_maps
FluxMaps
Sliced flux maps object.
- flux_maps
Examples
>>> from gammapy.estimators import FluxPoints >>> import astropy.units as u >>> fp = FluxPoints.read("$GAMMAPY_DATA/estimators/crab_hess_fp/crab_hess_fp.fits") >>> sliced = fp.slice_by_energy(energy_min=2*u.TeV, energy_max=10*u.TeV)
- slice_by_idx(slices)#
Slice flux maps by index.
- Parameters:
- slicesdict
Dictionary 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.
- Returns:
- flux_maps
FluxMaps
Sliced flux maps object.
- flux_maps
Examples
>>> from gammapy.estimators import FluxPoints >>> import astropy.units as u >>> fp = FluxPoints.read("$GAMMAPY_DATA/estimators/crab_hess_fp/crab_hess_fp.fits") >>> slices = {"energy": slice(0, 2)} >>> sliced = fp.slice_by_idx(slices)
- slice_by_time(time_min, time_max)#
Slice flux maps by coordinate values along the time axis.
- Parameters:
- time_min, time_max
Time
Time bounds used to slice the flux map.
- time_min, time_max
- Returns:
- flux_maps
FluxMaps
Sliced flux maps object.
- flux_maps
Examples
>>> from gammapy.estimators import FluxPoints >>> import astropy.units as u >>> lc_1d = FluxPoints.read("$GAMMAPY_DATA/estimators/pks2155_hess_lc/pks2155_hess_lc.fits") >>> sliced = lc_1d.slice_by_time(time_min=2035.93*u.day, time_max=2036.05*u.day)
- to_hdulist(sed_type=None, hdu_bands=None)#
Convert flux map to list of HDUs.
For now, one cannot export the reference model.
- Parameters:
- sed_typestr, optional
SED type to convert to. If None, set to “likelihood”. Default is None.
- hdu_bandsstr, optional
Name of the HDU with the BANDS table. Default is ‘BANDS’ If set to None, each map will have its own hdu_band. Default is None.
- Returns:
- hdulist
HDUList
Map dataset list of HDUs.
- hdulist
- to_maps(sed_type=None)#
Return maps in a given SED type.
- Parameters:
- sed_type{“likelihood”, “dnde”, “e2dnde”, “flux”, “eflux”}, optional
SED type to convert to. If None, set to
Likelihood
. Default is None.
- Returns:
- maps
Maps
Maps object containing the requested maps.
- maps
- to_table(sed_type=None, format=None, formatted=False)[source]#
Create table for a given SED type.
- Parameters:
- sed_type{“likelihood”, “dnde”, “e2dnde”, “flux”, “eflux”}
SED type to convert to. Default is
likelihood
.- format{“gadf-sed”, “lightcurve”, “binned-time-series”, “profile”}, optional
Format specification. The following formats are supported:
“gadf-sed”: format for SED flux points see SED for details
“lightcurve”: Gammapy internal format to store energy dependent lightcurves. Basically a generalisation of the “gadf” format, but currently there is no detailed documentation available.
“binned-time-series”: table format support by Astropy’s
BinnedTimeSeries
.“profile”: Gammapy internal format to store energy dependent flux profiles. Basically a generalisation of the “gadf” format, but currently there is no detailed documentation available.
If None, the format will be guessed by looking at the axes that are present in the object. Default is None.
- formattedbool
Formatted version with column formats applied. Numerical columns are formatted to .3f and .3e respectively. Default is False.
- Returns:
- table
Table
Flux points table.
- table
Examples
This is how to read and plot example flux points:
>>> from gammapy.estimators import FluxPoints >>> fp = FluxPoints.read("$GAMMAPY_DATA/hawc_crab/HAWC19_flux_points.fits") >>> table = fp.to_table(sed_type="flux", formatted=True) >>> print(table[:2]) e_ref e_min e_max flux flux_err flux_ul ts sqrt_ts is_ul TeV TeV TeV 1 / (s cm2) 1 / (s cm2) 1 / (s cm2) ----- ----- ----- ----------- ----------- ----------- -------- ------- ----- 1.334 1.000 1.780 1.423e-11 3.135e-13 nan 2734.000 52.288 False 2.372 1.780 3.160 5.780e-12 1.082e-13 nan 4112.000 64.125 False
- write(filename, sed_type=None, format=None, overwrite=False, checksum=False)[source]#
Write flux points.
- Parameters:
- filenamestr
Filename.
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”, “likelihood”}, optional
SED type. Default is None.
- format{“gadf-sed”, “lightcurve”, “binned-time-series”, “profile”}, optional
Format specification. The following formats are supported:
“gadf-sed”: format for SED flux points see SED for details
“lightcurve”: Gammapy internal format to store energy dependent lightcurves. Basically a generalisation of the “gadf” format, but currently there is no detailed documentation available.
“binned-time-series”: table format support by Astropy’s
BinnedTimeSeries
.“profile”: Gammapy internal format to store energy dependent flux profiles. Basically a generalisation of the “gadf” format, but currently there is no detailed documentation available.
If None, the format will be guessed by looking at the axes that are present in the object. Default is None.
- overwritebool, optional
Overwrite existing file. Default is False.
- checksumbool, optional
When True adds both DATASUM and CHECKSUM cards to the headers written to the file. Default is False.