PowerLawSpectralModel¶
-
class
gammapy.modeling.models.
PowerLawSpectralModel
(**kwargs)[source]¶ Bases:
gammapy.modeling.models.SpectralModel
Spectral power-law model.
\[\phi(E) = \phi_0 \cdot \left( \frac{E}{E_0} \right)^{-\Gamma}\]Attributes Summary
A model parameter.
A model parameter.
Parameters (
Parameters
)The decorrelation energy is defined as:
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)Compute energy flux in given energy range analytically.
evaluate
(energy, index, amplitude, reference)Evaluate the model (static function).
evaluate_energy_flux
(emin, emax, index, …)Evaluate the energy flux (static function)
evaluate_error
(self, energy[, epsilon])Evaluate spectral model with error propagation.
evaluate_integral
(emin, emax, index, …)Evaluate the model integral (static function).
from_dict
(data)integral
(self, emin, emax, \*\*kwargs)Integrate power law analytically.
inverse
(self, value)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
-
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.
-
default_parameters
= <gammapy.modeling.parameter.Parameters object>¶
-
index
¶ 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.
-
parameters
¶ Parameters (
Parameters
)
-
pivot_energy
¶ The decorrelation energy is defined as:
\[E_D = E_0 * \exp{cov(\phi_0, \Gamma) / (\phi_0 \Delta \Gamma^2)}\]Formula (1) in https://arxiv.org/pdf/0910.4881.pdf
-
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
= 'PowerLawSpectralModel'¶
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)[source]¶ Compute energy flux in given energy range analytically.
\[G(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}}E \phi(E)dE = \left. \phi_0 \frac{E_0^2}{-\Gamma + 2} \left( \frac{E}{E_0} \right)^{-\Gamma + 2} \right \vert _{E_{min}}^{E_{max}}\]- Parameters
- emin, emax
Quantity
Lower and upper bound of integration range.
- emin, emax
-
static
evaluate_energy_flux
(emin, emax, index, amplitude, reference)[source]¶ Evaluate the energy flux (static function)
-
evaluate_error
(self, energy, epsilon=0.0001)¶ Evaluate spectral model with error propagation.
-
static
evaluate_integral
(emin, emax, index, amplitude, reference)[source]¶ Evaluate the model integral (static function).
-
classmethod
from_dict
(data)¶
-
integral
(self, emin, emax, **kwargs)[source]¶ Integrate power law analytically.
\[F(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}}\phi(E)dE = \left. \phi_0 \frac{E_0}{-\Gamma + 1} \left( \frac{E}{E_0} \right)^{-\Gamma + 1} \right \vert _{E_{min}}^{E_{max}}\]- Parameters
- emin, emax
Quantity
Lower and upper bound of integration range
- emin, emax
-
inverse
(self, value)[source]¶ Return energy for a given function value of the spectral model.
- Parameters
- value
Quantity
Function value of the spectral model.
- value
-
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
-