SpectralModel#
- class gammapy.modeling.models.SpectralModel[source]#
Bases:
ModelBase
Spectral model base class.
Attributes Summary
Whether model is a norm spectral model.
Pivot or decorrelation energy, for a given spectral model calculated numerically.
Methods Summary
__call__
(energy)Call self as a function.
energy_flux
(energy_min, energy_max, **kwargs)Compute energy flux in given energy range.
energy_flux_error
(energy_min, energy_max[, ...])Evaluate the error of the energy flux of a given spectrum in a given energy range.
evaluate_error
(energy[, epsilon, n_samples, ...])Evaluate spectral model error from parameter distribution sampling.
integral
(energy_min, energy_max, **kwargs)Integrate spectral model numerically if no analytical solution defined.
integral_error
(energy_min, energy_max[, ...])Evaluate the error of the integral flux of a given spectrum in a given energy range.
inverse
(value[, energy_min, energy_max])Return energy for a given function value of the spectral model.
inverse_all
(values[, energy_min, energy_max])Return energies for multiple function values of the spectral model.
plot
(energy_bounds[, ax, sed_type, ...])Plot spectral model curve.
plot_error
(energy_bounds[, ax, sed_type, ...])Plot spectral model error band.
reference_fluxes
(energy_axis)Get reference fluxes for a given energy axis.
spectral_index
(energy[, epsilon])Compute spectral index at given energy.
spectral_index_error
(energy[, epsilon, ...])Evaluate the error on spectral index at the given energy.
Attributes Documentation
- default_parameters = <gammapy.modeling.parameter.Parameters object>#
- is_norm_spectral_model#
Whether model is a norm spectral model.
- pivot_energy#
Pivot or decorrelation energy, for a given spectral model calculated numerically.
It is defined as the energy at which the correlation between the spectral parameters is minimized.
- Returns:
- pivot energy
Quantity
The energy at which the statistical error in the computed flux is smallest. If no minimum is found, NaN will be returned.
- pivot energy
Methods Documentation
- energy_flux(energy_min, energy_max, **kwargs)[source]#
Compute energy flux in given energy range.
\[G(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}} E \phi(E) dE\]- Parameters:
- energy_min, energy_max
Quantity
Lower and upper bound of integration range.
- **kwargsdict
Keyword arguments passed to
integrate_spectrum
.
- energy_min, energy_max
- energy_flux_error(energy_min, energy_max, epsilon=0.0001, n_samples=3500, random_state=42, samples=None, **kwargs)[source]#
Evaluate the error of the energy flux of a given spectrum in a given energy range.
- Parameters:
- energy_min, energy_max
Quantity
Lower and upper bound of integration range.
- epsilonfloat, optional
Step size of the gradient evaluation. Given as a fraction of the parameter error. Default is 1e-4. Deprecated in v2.0 and unused.
- n_samplesint, optional
Number of samples to generate per parameter. Default is 3500.
- random_state{int, ‘random-seed’, ‘global-rng’,
RandomState
}, optional Defines random number generator initialisation. Passed to
get_random_state
. Default is 42.- sampleslist of
Quantity
, optional List of parameter samples in the same order as model.parameters
- energy_min, energy_max
- Returns:
- energy_flux, energy_flux_errn, energy_flux_errptuple of
Quantity
Median, negative, and positive errors on the energy flux between energy_min and energy_max.
- energy_flux, energy_flux_errn, energy_flux_errptuple of
- evaluate_error(energy, epsilon=0.0001, n_samples=3500, random_state=42, samples=None)[source]#
Evaluate spectral model error from parameter distribution sampling.
- Parameters:
- energy
Quantity
Energy at which to evaluate.
- epsilonfloat, optional
Step size of the gradient evaluation. Given as a fraction of the parameter error. Default is 1e-4. Deprecated in v2.0 and unused.
- n_samplesint, optional
Number of samples to generate per parameter. Default is 3500.
- random_state{int, ‘random-seed’, ‘global-rng’,
RandomState
}, optional Defines random number generator initialisation. Passed to
get_random_state
. Default is 42.- sampleslist of
Quantity
, optional List of parameter samples in the same order as model.parameters
- energy
- Returns:
- dnde, dnde_errn , dnde_errptuple of
Quantity
Median, negative and positive errors on the differential flux at the given energy.
- dnde, dnde_errn , dnde_errptuple of
- integral(energy_min, energy_max, **kwargs)[source]#
Integrate spectral model numerically if no analytical solution defined.
\[F(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}} \phi(E) dE\]- Parameters:
- energy_min, energy_max
Quantity
Lower and upper bound of integration range.
- **kwargsdict
Keyword arguments passed to
integrate_spectrum()
.
- energy_min, energy_max
- integral_error(energy_min, energy_max, epsilon=0.0001, n_samples=3500, random_state=42, samples=None, **kwargs)[source]#
Evaluate the error of the integral flux of a given spectrum in a given energy range.
- Parameters:
- energy_min, energy_max
Quantity
Lower and upper bound of integration range.
- epsilonfloat, optional
Step size of the gradient evaluation. Given as a fraction of the parameter error. Default is 1e-4. Deprecated in v2.0 and unused.
- n_samplesint, optional
Number of samples to generate per parameter. Default is 3500.
- random_state{int, ‘random-seed’, ‘global-rng’,
RandomState
}, optional Defines random number generator initialisation. Passed to
get_random_state
. Default is 42.- sampleslist of
Quantity
, optional List of parameter samples in the same order as model.parameters
- energy_min, energy_max
- Returns:
- flux, flux_errn, flux_errptuple of
Quantity
Median, negative, and positive errors on the integral flux between energy_min and energy_max.
- flux, flux_errn, flux_errptuple of
- inverse(value, energy_min=<Quantity 0.1 TeV>, energy_max=<Quantity 100. TeV>)[source]#
Return energy for a given function value of the spectral model.
Calls the
scipy.optimize.brentq
numerical root finding method.- Parameters:
- Returns:
- energy
Quantity
Energies at which the model has the given
value
.
- energy
- inverse_all(values, energy_min=<Quantity 0.1 TeV>, energy_max=<Quantity 100. TeV>)[source]#
Return energies for multiple function values of the spectral model.
Calls the
scipy.optimize.brentq
numerical root finding method.- Parameters:
- Returns:
- energylist of
Quantity
Each element contains the energies at which the model has corresponding value of
values
.
- energylist of
- plot(energy_bounds, ax=None, sed_type='dnde', energy_power=0, n_points=100, **kwargs)[source]#
Plot spectral model curve.
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_bounds=(0.1, 100) * u.TeV) >>> ax.set_yscale('linear')
- Parameters:
- energy_bounds
Quantity
, list ofQuantity
orMapAxis
Energy bounds between which the model is to be plotted. Or an axis defining the energy bounds between which the model is to be plotted.
- ax
Axes
, optional Matplotlib axes. Default is None.
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”}
Evaluation methods of the model. Default is “dnde”.
- energy_powerint, optional
Power of energy to multiply flux axis with. Default is 0.
- n_pointsint, optional
Number of evaluation nodes. Default is 100.
- **kwargsdict
Keyword arguments forwarded to
plot
.
- energy_bounds
- Returns:
- ax
Axes
, optional Matplotlib axes.
- ax
Notes
If
energy_bounds
is supplied as a list, tuple, or Quantity, anenergy_axis
is created internally withn_points
bins between the given bounds.
- plot_error(energy_bounds, ax=None, sed_type='dnde', energy_power=0, n_points=100, n_samples=3500, random_state=42, samples=None, **kwargs)[source]#
Plot spectral model error band.
Note
This method calls
ax.set_yscale("log", nonpositive='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 matplotlib/matplotlib#8623).When you call
plt.loglog()
orplt.semilogy()
explicitly 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', nonpositive='clip')
orplt.semilogy(nonpositive='clip')
.- Parameters:
- energy_bounds
Quantity
, list ofQuantity
orMapAxis
Energy bounds between which the model is to be plotted. Or an axis defining the energy bounds between which the model is to be plotted.
- ax
Axes
, optional Matplotlib axes. Default is None.
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”}
Evaluation methods of the model. Default is “dnde”.
- energy_powerint, optional
Power of energy to multiply flux axis with. Default is 0.
- n_pointsint, optional
Number of evaluation nodes. Default is 100.
- n_samplesint, optional
Number of samples generated per parameter to estimate the error band. Default is 3500.
- random_state{int, ‘random-seed’, ‘global-rng’,
RandomState
}, optional Defines random number generator initialisation. Passed to
get_random_state
. Default is 42.- sampleslist of
Quantity
, optional List of parameter samples in the same order as model.parameters
- **kwargsdict
Keyword arguments forwarded to
matplotlib.pyplot.fill_between
.
- energy_bounds
- Returns:
- ax
Axes
, optional Matplotlib axes.
- ax
Notes
If
energy_bounds
is supplied as a list, tuple, or Quantity, anenergy_axis
is created internally withn_points
bins between the given bounds.
- spectral_index(energy, epsilon=1e-05)[source]#
Compute spectral index at given energy.
- Parameters:
- energy
Quantity
Energy at which to estimate the index.
- epsilonfloat, optional
Fractional energy increment to use for determining the spectral index. Default is 1e-5.
- energy
- Returns:
- indexfloat
Estimated spectral index.
- spectral_index_error(energy, epsilon=1e-05, n_samples=3500, random_state=42, samples=None)[source]#
Evaluate the error on spectral index at the given energy.
- Parameters:
- energy
Quantity
Energy at which to estimate the index.
- epsilonfloat, optional
Fractional energy increment to use for determining the spectral index. Default is 1e-5. Deprecated in v2.0 and unsued.
- n_samplesint, optional
Number of samples to generate per parameter. Default is 3500.
- random_state{int, ‘random-seed’, ‘global-rng’,
RandomState
}, optional Defines random number generator initialisation. Passed to
get_random_state
. Default is 42.- sampleslist of
Quantity
, optional List of parameter samples in the same order as model.parameters
- energy
- Returns:
- index, index_errn, index_errptuple of float
Median, negative, and positive error on the spectral index.
- __init__(**kwargs)#
- classmethod __new__(*args, **kwargs)#