Note
You are not reading the most up to date version of Gammapy documentation.
Access the latest stable version v1.3 or the list of Gammapy releases.
LogParabola¶
-
class
gammapy.spectrum.models.
LogParabola
(amplitude=<Quantity 1.e-12 1 / (cm2 s TeV)>, reference=<Quantity 10. TeV>, alpha=2, beta=1)[source]¶ Bases:
gammapy.spectrum.models.SpectralModel
Spectral log parabola model.
ϕ(E)=ϕ0(EE0)−α−βlog(EE0)Note that log refers to the natural logarithm. This is consistent with the Fermi Science Tools and ctools. The Sherpa package, however, uses log10. If you have parametrization based on log10 you can use the
from_log10()
method.Parameters: amplitude :
Quantity
ϕ0
reference :
Quantity
E0
alpha :
Quantity
α
beta :
Quantity
β
Examples
This is how to plot the default
LogParabola
model:from astropy import units as u from gammapy.spectrum.models import LogParabola log_parabola = LogParabola() log_parabola.plot(energy_range=[0.1, 100] * u.TeV) plt.show()
Attributes Summary
e_peak
Spectral energy distribution peak energy ( Quantity
).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, amplitude, reference, …)Evaluate the model (static function). evaluate_error
(energy)Evaluate spectral model with error propagation. from_dict
(val)Create from dict. from_log10
(amplitude, reference, alpha, beta)Construct LogParabola from log10 parametrization 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, …])Plot spectral model curve. plot_error
(energy_range[, ax, energy_unit, …])Plot spectral model error band. spectral_index
(energy[, epsilon])Compute spectral index at given energy. to_dict
()Convert to dict. to_sherpa
([name])Convert to Sherpa model. Attributes Documentation
-
e_peak
¶ Spectral energy distribution peak energy (
Quantity
).This is the peak in E^2 x dN/dE and is given by:
EPeak=E0exp(2−α)/(2∗β)
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(Emin,Emax)=∫EmaxEminEϕ(E)dEParameters: emin, emax :
Quantity
Lower 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(Emin,Emax)=∫EmaxEminEϕ(E)dEParameters: emin, emax :
Quantity
Lower bound of integration range.
**kwargs : dict
Keyword arguments passed to
func:`~gammapy.spectrum.integrate_spectrum
Returns: energy_flux, energy_flux_error : tuple of
Quantity
Tuple of energy flux and energy flux error.
-
static
evaluate
(energy, amplitude, reference, alpha, beta)[source]¶ Evaluate the model (static function).
-
evaluate_error
(energy)¶ Evaluate spectral model with error propagation.
Parameters: energy :
Quantity
Energy at which to evaluate
Returns: flux, flux_error : tuple of
Quantity
Tuple of flux and flux error.
-
from_dict
(val)¶ Create from dict.
-
classmethod
from_log10
(amplitude, reference, alpha, beta)[source]¶ Construct LogParabola from log10 parametrization
-
integral
(emin, emax, **kwargs)¶ Integrate spectral model numerically.
F(Emin,Emax)=∫EmaxEminϕ(E)dEIf array input for
emin
andemax
is given you have to setintervals=True
if you want the integral in each energy bin.Parameters: emin, emax :
Quantity
Lower 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 :
Quantity
Lower adn upper bound of integration range.
**kwargs : dict
Keyword arguments passed to func:
integrate_spectrum
Returns: integral, integral_error : tuple of
Quantity
Tuple 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.brentq
numerical root finding method.Parameters: value :
Quantity
Function value of the spectral model.
emin :
Quantity
Lower bracket value in case solution is not unique.
emax :
Quantity
Upper bracket value in case solution is not unique.
Returns: energy :
Quantity
Energies at which the model has the given
value
.
-
plot
(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 curve.
kwargs are forwarded to
matplotlib.pyplot.plot
Parameters: ax :
Axes
, optionalAxis
energy_range :
Quantity
Plot 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
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 :
Quantity
Plot 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_between
Returns: ax :
Axes
, optionalAxis
-
spectral_index
(energy, epsilon=1e-05)¶ Compute spectral index at given energy.
Parameters: energy :
Quantity
Energy 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
-