PowerLawSpectralModel

class gammapy.modeling.models.PowerLawSpectralModel(**kwargs)[source]

Bases: gammapy.modeling.models.SpectralModel

Spectral power-law model.

For more information see Power Law Spectral Model.

Parameters
indexQuantity

\(\Gamma\)

amplitudeQuantity

\(\phi_0\)

referenceQuantity

\(E_0\)

Attributes Summary

amplitude

A model parameter.

default_parameters

index

A model parameter.

parameters

Parameters (Parameters)

pivot_energy

The decorrelation energy is defined as:

reference

A model parameter.

tag

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 pwl 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 or min and max properties and consider the fact that there is a factor` and scale 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 and factor_max properties, i.e. the optimiser “sees” the well-scaled problem.

Parameters
namestr

Name

factorfloat or Quantity

Factor

scalefloat, optional

Scale (sometimes used in fitting)

unitUnit or str, optional

Unit

minfloat, optional

Minimum (sometimes used in fitting)

maxfloat, optional

Maximum (sometimes used in fitting)

frozenbool, optional

Frozen? (used in fitting)

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 or min and max properties and consider the fact that there is a factor` and scale 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 and factor_max properties, i.e. the optimiser “sees” the well-scaled problem.

Parameters
namestr

Name

factorfloat or Quantity

Factor

scalefloat, optional

Scale (sometimes used in fitting)

unitUnit or str, optional

Unit

minfloat, optional

Minimum (sometimes used in fitting)

maxfloat, optional

Maximum (sometimes used in fitting)

frozenbool, optional

Frozen? (used in fitting)

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 or min and max properties and consider the fact that there is a factor` and scale 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 and factor_max properties, i.e. the optimiser “sees” the well-scaled problem.

Parameters
namestr

Name

factorfloat or Quantity

Factor

scalefloat, optional

Scale (sometimes used in fitting)

unitUnit or str, optional

Unit

minfloat, optional

Minimum (sometimes used in fitting)

maxfloat, optional

Maximum (sometimes used in fitting)

frozenbool, optional

Frozen? (used in fitting)

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, emaxQuantity

Lower and upper bound of integration range.

static evaluate(energy, index, amplitude, reference)[source]

Evaluate the model (static function).

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.

Parameters
energyQuantity

Energy at which to evaluate

epsilonfloat

Step size of the gradient evaluation. Given as a fraction of the parameter error.

Returns
dnde, dnde_errortuple of Quantity

Tuple of flux and flux error.

static evaluate_integral(emin, emax, index, amplitude, reference)

Evaluate pwl 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, emaxQuantity

Lower and upper bound of integration range

inverse(self, value)[source]

Return energy for a given function value of the spectral model.

Parameters
valueQuantity

Function value of the spectral model.

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
axAxes, optional

Axis

energy_rangeQuantity

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

Returns
axAxes, optional

Axis

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') and ax.set_xscale("log", nonposx='clip') to create a log-log representation. The additional argument nonposx='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() or plt.semilogy() explicitely in your plotting code and the error band extends to negative values, it is not shown correctly. To circumvent this issue also use plt.loglog(nonposx='clip', nonposy='clip') or plt.semilogy(nonposy='clip').

Parameters
axAxes, optional

Axis

energy_rangeQuantity

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

Returns
axAxes, optional

Axis

spectral_index(self, energy, epsilon=1e-05)

Compute spectral index at given energy.

Parameters
energyQuantity

Energy at which to estimate the index

epsilonfloat

Fractional energy increment to use for determining the spectral index.

Returns
indexfloat

Estimated spectral index.

to_dict(self)

Create dict for YAML serialisation