TableModel¶
-
class
gammapy.spectrum.models.TableModel(energy, values, scale=1, scale_logy=True)[source]¶ Bases:
gammapy.spectrum.models.SpectralModelA model generated from a table of energy and value arrays.
the units returned will be the units of the values array provided at initialization. The model will return values interpolated in log-space, returning 0 for energies outside of the limits of the provided energy array.
Class implementation follows closely what has been done in
naima.models.TableModelParameters: energy :
QuantityarrayArray of energies at which the model values are given
values : array
Array with the values of the model at energies
energy.scale : float
Model scale that is multiplied to the supplied arrays. Defaults to 1.
scale_logy : boolean
interpolation can be done linearly or in logarithm
Methods Summary
__call__(energy)Call evaluate method of derived classes copy()A deep copy. energy_flux(emin, emax, **kwargs)Compute energy flux in given energy range. energy_flux_error(emin, emax, **kwargs)Compute energy flux in given energy range with error propagation. evaluate(energy, scale)Evaluate the model (static function). evaluate_error(energy)Evaluate spectral model with error propagation. from_dict(val)Create from dict. integral(emin, emax, **kwargs)Integrate spectral model numerically. integral_error(emin, emax, **kwargs)Integrate spectral model numerically with error propagation. inverse(value[, emin, emax])Return energy for a given function value of the spectral model. plot(energy_range[, ax, energy_unit, n_points])Plot spectral model curve. plot_error(energy_range[, ax, energy_unit, …])Plot spectral model error band. read_xspec_model(filename, param)A Table containing absorbed values from a XSPEC model as a function of energy. spectral_index(energy[, epsilon])Compute spectral index at given energy. to_dict()Convert to dict. to_sherpa([name])Convert to Sherpa model. Methods Documentation
-
__call__(energy)¶ Call evaluate method of derived classes
-
copy()¶ A deep copy.
-
energy_flux(emin, emax, **kwargs)¶ Compute energy flux in given energy range.
\[G(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}}E \phi(E)dE\]Parameters: emin, emax :
QuantityLower and upper bound of integration range.
**kwargs : dict
Keyword arguments passed to func:
integrate_spectrum
-
energy_flux_error(emin, emax, **kwargs)¶ Compute energy flux in given energy range with error propagation.
\[G(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}}E \phi(E)dE\]Parameters: emin, emax :
QuantityLower bound of integration range.
**kwargs : dict
Keyword arguments passed to
func:`~gammapy.spectrum.integrate_spectrumReturns: energy_flux, energy_flux_error : tuple of
QuantityTuple of energy flux and energy flux error.
-
evaluate_error(energy)¶ Evaluate spectral model with error propagation.
Parameters: energy :
QuantityEnergy at which to evaluate
Returns: flux, flux_error : tuple of
QuantityTuple of flux and flux error.
-
from_dict(val)¶ Create from dict.
-
integral(emin, emax, **kwargs)¶ Integrate spectral model numerically.
\[F(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}}\phi(E)dE\]If array input for
eminandemaxis given you have to setintervals=Trueif you want the integral in each energy bin.Parameters: emin, emax :
QuantityLower and upper bound of integration range.
**kwargs : dict
Keyword arguments passed to
integrate_spectrum()
-
integral_error(emin, emax, **kwargs)¶ Integrate spectral model numerically with error propagation.
Parameters: emin, emax :
QuantityLower adn upper bound of integration range.
**kwargs : dict
Keyword arguments passed to func:
integrate_spectrumReturns: integral, integral_error : tuple of
QuantityTuple of integral flux and integral flux error.
-
inverse(value, emin=<Quantity 0.1 TeV>, emax=<Quantity 100. TeV>)¶ Return energy for a given function value of the spectral model.
Calls the
scipy.optimize.brentqnumerical root finding method.Parameters: value :
QuantityFunction value of the spectral model.
emin :
QuantityLower bracket value in case solution is not unique.
emax :
QuantityUpper bracket value in case solution is not unique.
Returns: energy :
QuantityEnergies at which the model has the given
value.
-
plot(energy_range, ax=None, energy_unit='TeV', n_points=100, **kwargs)[source]¶ Plot spectral model curve.
kwargs are forwarded to
plot()Parameters: energy_range :
QuantityPlot range
ax :
Axes, optionalAxis
energy_unit : str,
Unit, optionalUnit of the energy axis
n_points : int, optional
Number of evaluation nodes
Returns: ax :
Axes, optionalAxis
-
plot_error(energy_range, ax=None, energy_unit='TeV', flux_unit='cm-2 s-1 TeV-1', energy_power=0, n_points=100, **kwargs)¶ Plot spectral model error band.
Note
This method calls
ax.set_yscale("log", nonposy='clip')andax.set_xscale("log", nonposx='clip')to create a log-log representation. The additional argumentnonposx='clip'avoids artefacts in the plot, when the error band extends to negative values (see also https://github.com/matplotlib/matplotlib/issues/8623).When you call
plt.loglog()orplt.semilogy()explicitely in your plotting code and the error band extends to negative values, it is not shown correctly. To circumvent this issue also useplt.loglog(nonposx='clip', nonposy='clip')orplt.semilogy(nonposy='clip').Parameters: ax :
Axes, optionalAxis
energy_range :
QuantityPlot range
energy_unit : str,
Unit, optionalUnit of the energy axis
flux_unit : str,
Unit, optionalUnit of the flux axis
energy_power : int, optional
Power of energy to multiply flux axis with
n_points : int, optional
Number of evaluation nodes
**kwargs : dict
Keyword arguments forwarded to
matplotlib.pyplot.fill_betweenReturns: ax :
Axes, optionalAxis
-
classmethod
read_xspec_model(filename, param)[source]¶ A Table containing absorbed values from a XSPEC model as a function of energy. Todo: Format of the file should be described and discussed in https://gamma-astro-data-formats.readthedocs.io/en/latest/index.html
Parameters: filename :
strFile containing the XSPEC model
param : float
Model parameter value
Examples
Fill table from an EBL model (Franceschini, 2008)
>>> from gammapy.spectrum.models import TableModel >>> filename = '$GAMMAPY_EXTRA/datasets/ebl/ebl_franceschini.fits.gz' >>> table_model = TableModel.read_xspec_model(filename=filename, param=0.3)
-
spectral_index(energy, epsilon=1e-05)¶ Compute spectral index at given energy.
Parameters: energy :
QuantityEnergy at which to estimate the index
epsilon : float
Fractional energy increment to use for determining the spectral index.
Returns: index : float
Estimated spectral index.
-
to_dict()¶ Convert to dict.
-
to_sherpa(name='default')¶ Convert to Sherpa model.
To be implemented by subclasses
-