LogParabolaSpectralModel¶
-
class
gammapy.modeling.models.
LogParabolaSpectralModel
(**kwargs)[source]¶ Bases:
gammapy.modeling.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.Attributes Summary
A model parameter.
A model parameter.
A model parameter.
Spectral energy distribution peak energy (
Quantity
).Parameters (
Parameters
)A model parameter.
Methods Summary
__call__
(self, energy)Call self as a function.
copy
(self)A deep copy.
create
(tag, \*args, \*\*kwargs)Create a model instance.
energy_flux
(self, emin, emax, \*\*kwargs)Compute energy flux in given energy range.
evaluate
(energy, amplitude, reference, …)Evaluate the model (static function).
evaluate_error
(self, energy[, epsilon])Evaluate spectral model with error propagation.
from_dict
(data)from_log10
(amplitude, reference, alpha, beta)Construct from log10 parametrization.
integral
(self, emin, emax, \*\*kwargs)Integrate spectral model numerically.
inverse
(self, value[, emin, emax])Return energy for a given function value of the spectral model.
plot
(self, energy_range[, ax, energy_unit, …])Plot spectral model curve.
plot_error
(self, energy_range[, ax, …])Plot spectral model error band.
spectral_index
(self, energy[, epsilon])Compute spectral index at given energy.
to_dict
(self)Create dict for YAML serialisation
Attributes Documentation
-
alpha
¶ A model parameter.
Note that the parameter value has been split into a factor and scale like this:
value = factor x scale
Users should interact with the
value
,quantity
ormin
andmax
properties and consider the fact that there is afactor`
andscale
an implementation detail.That was introduced for numerical stability in parameter and error estimation methods, only in the Gammapy optimiser interface do we interact with the
factor
,factor_min
andfactor_max
properties, i.e. the optimiser “sees” the well-scaled problem.
-
amplitude
¶ A model parameter.
Note that the parameter value has been split into a factor and scale like this:
value = factor x scale
Users should interact with the
value
,quantity
ormin
andmax
properties and consider the fact that there is afactor`
andscale
an implementation detail.That was introduced for numerical stability in parameter and error estimation methods, only in the Gammapy optimiser interface do we interact with the
factor
,factor_min
andfactor_max
properties, i.e. the optimiser “sees” the well-scaled problem.
-
beta
¶ A model parameter.
Note that the parameter value has been split into a factor and scale like this:
value = factor x scale
Users should interact with the
value
,quantity
ormin
andmax
properties and consider the fact that there is afactor`
andscale
an implementation detail.That was introduced for numerical stability in parameter and error estimation methods, only in the Gammapy optimiser interface do we interact with the
factor
,factor_min
andfactor_max
properties, i.e. the optimiser “sees” the well-scaled problem.
-
default_parameters
= <gammapy.modeling.parameter.Parameters object>¶
-
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∗β)
-
parameters
¶ Parameters (
Parameters
)
-
reference
¶ A model parameter.
Note that the parameter value has been split into a factor and scale like this:
value = factor x scale
Users should interact with the
value
,quantity
ormin
andmax
properties and consider the fact that there is afactor`
andscale
an implementation detail.That was introduced for numerical stability in parameter and error estimation methods, only in the Gammapy optimiser interface do we interact with the
factor
,factor_min
andfactor_max
properties, i.e. the optimiser “sees” the well-scaled problem.
-
tag
= 'LogParabolaSpectralModel'¶
Methods Documentation
-
__call__
(self, energy)¶ Call self as a function.
-
copy
(self)¶ A deep copy.
-
static
create
(tag, *args, **kwargs)¶ Create a model instance.
Examples
>>> from gammapy.modeling import Model >>> spectral_model = Model.create("PowerLaw2SpectralModel", amplitude="1e-10 cm-2 s-1", index=3) >>> type(spectral_model) gammapy.modeling.models.spectral.PowerLaw2SpectralModel
-
energy_flux
(self, emin, emax, **kwargs)¶ Compute energy flux in given energy range.
G(Emin,Emax)=∫EmaxEminEϕ(E)dE- Parameters
- emin, emax
Quantity
Lower and upper bound of integration range.
- **kwargsdict
Keyword arguments passed to func:
integrate_spectrum
- emin, emax
-
static
evaluate
(energy, amplitude, reference, alpha, beta)[source]¶ Evaluate the model (static function).
-
evaluate_error
(self, energy, epsilon=0.0001)¶ Evaluate spectral model with error propagation.
-
classmethod
from_dict
(data)¶
-
classmethod
from_log10
(amplitude, reference, alpha, beta)[source]¶ Construct from log10 parametrization.
-
integral
(self, 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.
- **kwargsdict
Keyword arguments passed to
integrate_spectrum()
- emin, emax
-
inverse
(self, 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.
-
plot
(self, 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
By default a log-log scaling of the axes is used, if you want to change the y axis scaling to linear you can use:
from gammapy.modeling.models import ExpCutoffPowerLawSpectralModel from astropy import units as u pwl = ExpCutoffPowerLawSpectralModel() ax = pwl.plot(energy_range=(0.1, 100) * u.TeV) ax.set_yscale('linear')
- Parameters
- Returns
- ax
Axes
, optional Axis
- ax
-
plot_error
(self, 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
, optional Axis
- energy_range
Quantity
Plot range
- energy_unitstr,
Unit
, optional Unit of the energy axis
- flux_unitstr,
Unit
, optional Unit of the flux axis
- energy_powerint, optional
Power of energy to multiply flux axis with
- n_pointsint, optional
Number of evaluation nodes
- **kwargsdict
Keyword arguments forwarded to
matplotlib.pyplot.fill_between
- ax
- Returns
- ax
Axes
, optional Axis
- ax
-
spectral_index
(self, energy, epsilon=1e-05)¶ Compute spectral index at given energy.
- Parameters
- energy
Quantity
Energy at which to estimate the index
- epsilonfloat
Fractional energy increment to use for determining the spectral index.
- energy
- Returns
- indexfloat
Estimated spectral index.
-
to_dict
(self)¶ Create dict for YAML serialisation
-