NaimaSpectralModel¶
-
class
gammapy.modeling.models.
NaimaSpectralModel
(radiative_model, distance=<Quantity 1. kpc>, seed=None, nested_models=None)[source]¶ Bases:
gammapy.modeling.models.SpectralModel
A wrapper for Naima models.
For more information see Naima Spectral Model.
- Parameters
- radiative_model
BaseRadiative
An instance of a radiative model defined in
models
- distance
Quantity
, optional Distance to the source. If set to 0, the intrinsic differential luminosity will be returned. Default is 1 kpc
- seedstr or list of str, optional
Seed photon field(s) to be considered for the
radiative_model
flux computation, in case of aInverseCompton
model. It can be a subset of theseed_photon_fields
list defining theradiative_model
. Default is the whole list of photon fields- nested_modelsdict
Additionnal parameters for nested models not supplied by the radiative model, for now this is used only for synchrotron self-compton model
- radiative_model
Attributes Summary
Whether model is a norm spectral model
Parameters (
Parameters
)Methods Summary
__call__
(energy)Call self as a function.
copy
()A deep copy.
create
(tag[, model_type])Create a model instance.
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
evaluate
(energy, **kwargs)Evaluate the model.
evaluate_error
(energy[, epsilon])Evaluate spectral model with error propagation.
from_dict
(data)from_parameters
(parameters, **kwargs)Create model from parameter list
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.
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
([full_output])Create dict for YAML serialisation
Attributes Documentation
-
covariance
¶
-
default_parameters
= <gammapy.modeling.parameter.Parameters object>¶
-
is_norm_spectral_model
¶ Whether model is a norm spectral model
-
parameters
¶ Parameters (
Parameters
)
-
tag
= ['NaimaSpectralModel', 'naima']¶
-
type
¶
Methods Documentation
-
__call__
(energy)¶ Call self as a function.
-
copy
()¶ A deep copy.
-
static
create
(tag, model_type=None, *args, **kwargs)¶ Create a model instance.
Examples
>>> from gammapy.modeling.models import Model >>> spectral_model = Model.create("pl-2", model_type="spectral", amplitude="1e-10 cm-2 s-1", index=3) >>> type(spectral_model) gammapy.modeling.models.spectral.PowerLaw2SpectralModel
-
energy_flux
(energy_min, energy_max, **kwargs)¶ 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 func:
integrate_spectrum
- energy_min, energy_max
-
energy_flux_error
(energy_min, energy_max, epsilon=0.0001, **kwargs)¶ - Evaluate the error of the energy flux of a given spectrum in
a given energy range.
-
evaluate_error
(energy, epsilon=0.0001)¶ Evaluate spectral model with error propagation.
-
classmethod
from_parameters
(parameters, **kwargs)[source]¶ Create model from parameter list
- Parameters
- parameters
Parameters
Parameters for init
- parameters
- Returns
- model
Model
Model instance
- model
-
integral
(energy_min, energy_max, **kwargs)¶ 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)¶ Evaluate the error of the integral flux of a given spectrum in a given energy range.
-
inverse
(value, energy_min=<Quantity 0.1 TeV>, energy_max=<Quantity 100. TeV>)¶ Return energy for a given function value of the spectral model.
Calls the
scipy.optimize.brentq
numerical root finding method.
-
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
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
(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