EBLAbsorptionNormSpectralModel#

class gammapy.modeling.models.EBLAbsorptionNormSpectralModel(energy, param, data, redshift, alpha_norm, interp_kwargs=None)[source]#

Bases: gammapy.modeling.models.spectral.SpectralModel

Gamma-ray absorption models.

For more information see EBL absorption spectral model.

Parameters
energyQuantity

Energy node values.

paramQuantity

Parameter node values.

dataQuantity

Model value.

redshiftfloat

Redshift of the absorption model. Default is 0.1.

alpha_norm: float

Norm of the EBL model. Default is 1.

interp_kwargsdict

Interpolation option passed to ScaledRegularGridInterpolator. By default the models are extrapolated outside the range. To prevent this and raise an error instead use interp_kwargs = {“extrapolate”: False}.

Attributes Summary

alpha_norm

A model parameter.

covariance

default_parameters

frozen

Frozen status of a model, True if all parameters are frozen.

is_norm_spectral_model

Whether model is a norm spectral model.

parameters

Parameters as a Parameters object.

pivot_energy

Pivot or decorrelation energy, for a given spectral model calculated numerically.

redshift

A model parameter.

tag

type

Methods Summary

__call__(energy)

Call self as a function.

copy(**kwargs)

Deep copy.

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(energy, redshift, alpha_norm)

Evaluate model for energy and parameter value.

evaluate_error(energy[, epsilon])

Evaluate spectral model with error propagation.

freeze()

Freeze all parameters.

from_dict(data, **kwargs)

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[, epsilon])

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.

read(filename[, redshift, alpha_norm, ...])

Build object from an XSPEC model.

read_builtin([reference, redshift, ...])

Read from one of the built-in absorption models.

reassign(datasets_names, new_datasets_names)

Reassign a model from one dataset to another.

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.

to_dict([full_output])

Create dictionary for YAML serialisation.

unfreeze()

Restore parameters frozen status to default.

Attributes Documentation

alpha_norm#

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.

valuefloat or Quantity

Value.

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).

errorfloat

Parameter error.

scan_minfloat

Minimum value for the parameter scan. Overwrites scan_n_sigma.

scan_maxfloat

Minimum value for the parameter scan. Overwrites scan_n_sigma.

scan_n_values: int

Number of values to be used for the parameter scan.

scan_n_sigmaint

Number of sigmas to scan.

scan_values: `numpy.array`

Scan values. Overwrites all the scan keywords before.

scale_method{‘scale10’, ‘factor1’, None}

Method used to set factor and scale.

interp{“lin”, “sqrt”, “log”}

Parameter scaling to use for the scan.

is_normbool

Whether the parameter represents the flux norm of the model.

priorPrior

Prior set on the parameter.

covariance#
default_parameters = <gammapy.modeling.parameter.Parameters object>#
frozen#

Frozen status of a model, True if all parameters are frozen.

is_norm_spectral_model#

Whether model is a norm spectral model.

parameters#

Parameters as a Parameters object.

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 energyQuantity

The energy at which the statistical error in the computed flux is smallest. If no minimum is found, NaN will be returned.

redshift#

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.

valuefloat or Quantity

Value.

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).

errorfloat

Parameter error.

scan_minfloat

Minimum value for the parameter scan. Overwrites scan_n_sigma.

scan_maxfloat

Minimum value for the parameter scan. Overwrites scan_n_sigma.

scan_n_values: int

Number of values to be used for the parameter scan.

scan_n_sigmaint

Number of sigmas to scan.

scan_values: `numpy.array`

Scan values. Overwrites all the scan keywords before.

scale_method{‘scale10’, ‘factor1’, None}

Method used to set factor and scale.

interp{“lin”, “sqrt”, “log”}

Parameter scaling to use for the scan.

is_normbool

Whether the parameter represents the flux norm of the model.

priorPrior

Prior set on the parameter.

tag = ['EBLAbsorptionNormSpectralModel', 'ebl-norm']#
type#

Methods Documentation

__call__(energy)#

Call self as a function.

copy(**kwargs)#

Deep copy.

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_maxQuantity

Lower and upper bound of integration range.

**kwargsdict

Keyword arguments passed to integrate_spectrum().

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.

Parameters
energy_min, energy_maxQuantity

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.

Returns
energy_flux, energy_flux_errtuple of Quantity

Energy flux and energy flux error between energy_min and energy_max.

evaluate(energy, redshift, alpha_norm)[source]#

Evaluate model for energy and parameter value.

evaluate_error(energy, epsilon=0.0001)#

Evaluate spectral model with error propagation.

Parameters
energyQuantity

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.

Returns
dnde, dnde_errortuple of Quantity

Tuple of flux and flux error.

freeze()#

Freeze all parameters.

classmethod from_dict(data, **kwargs)[source]#
classmethod from_parameters(parameters, **kwargs)#

Create model from parameter list.

Parameters
parametersParameters

Parameters for init.

Returns
modelModel

Model instance.

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_maxQuantity

Lower and upper bound of integration range.

**kwargsdict

Keyword arguments passed to integrate_spectrum().

integral_error(energy_min, energy_max, epsilon=0.0001, **kwargs)#

Evaluate the error of the integral flux of a given spectrum in a given energy range.

Parameters
energy_min, energy_maxQuantity

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.

Returns
flux, flux_errtuple of Quantity

Integral flux and flux error between energy_min and energy_max.

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.

Parameters
valueQuantity

Function value of the spectral model.

energy_minQuantity, optional

Lower energy bound of the roots finding. Default is 0.1 TeV.

energy_maxQuantity, optional

Upper energy bound of the roots finding. Default is 100 TeV.

Returns
energyQuantity

Energies at which the model has the given value.

inverse_all(values, energy_min=<Quantity 0.1 TeV>, energy_max=<Quantity 100. TeV>)#

Return energies for multiple function values of the spectral model.

Calls the scipy.optimize.brentq numerical root finding method.

Parameters
valuesQuantity

Function values of the spectral model.

energy_minQuantity, optional

Lower energy bound of the roots finding. Default is 0.1 TeV.

energy_maxQuantity, optional

Upper energy bound of the roots finding. Default is 100 TeV.

Returns
energylist of Quantity

Each element contains the energies at which the model has corresponding value of values.

plot(energy_bounds, ax=None, sed_type='dnde', energy_power=0, n_points=100, **kwargs)#

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_boundsQuantity

Plot energy bounds passed to MapAxis.from_energy_bounds.

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

Returns
axAxes, optional

Matplotlib axes.

plot_error(energy_bounds, ax=None, sed_type='dnde', energy_power=0, n_points=100, **kwargs)#

Plot spectral model error band.

Note

This method calls ax.set_yscale("log", nonpositive='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() explicitly 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', nonpositive='clip') or plt.semilogy(nonpositive='clip').

Parameters
energy_boundsQuantity

Plot energy bounds passed to from_energy_bounds.

axAxes, 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 matplotlib.pyplot.fill_between.

Returns
axAxes, optional

Matplotlib axes.

classmethod read(filename, redshift=0.1, alpha_norm=1, interp_kwargs=None)[source]#

Build object from an XSPEC model.

Parameters
filenamestr

File containing the model.

redshiftfloat, optional

Redshift of the absorption model. Default is 0.1.

alpha_norm: float, optional

Norm of the EBL model. Default is 1.

interp_kwargsdict, optional

Interpolation option passed to ScaledRegularGridInterpolator. Default is None.

classmethod read_builtin(reference='dominguez', redshift=0.1, alpha_norm=1, interp_kwargs=None)[source]#

Read from one of the built-in absorption models.

Parameters
reference{‘franceschini’, ‘dominguez’, ‘finke’}, optional

Name of one of the available model in gammapy-data. Default is ‘dominquez’.

redshiftfloat, optional

Redshift of the absorption model. Default is 0.1.

alpha_normfloat, optional

Norm of the EBL model. Default is 1.

interp_kwargsdict, optional

Interpolation keyword arguments. Default is None.

References

1

Franceschini et al. (2008), “Extragalactic optical-infrared background radiation, its time evolution and the cosmic photon-photon opacity”, # noqa: E501 Link

2

Dominguez et al. (2011), ” Extragalactic background light inferred from AEGIS galaxy-SED-type fractions” # noqa: E501 Link

3

Finke et al. (2010), “Modeling the Extragalactic Background Light from Stars and Dust” Link

4

Franceschini et al. (2017), “The extragalactic background light revisited and the cosmic photon-photon opacity” Link

5

Saldana-Lopez et al. (2021) “An observational determination of the evolving extragalactic background light from the multiwavelength HST/CANDELS survey in the Fermi and CTA era” Link

reassign(datasets_names, new_datasets_names)#

Reassign a model from one dataset to another.

Parameters
datasets_namesstr or list

Name of the datasets where the model is currently defined.

new_datasets_namesstr or list

Name of the datasets where the model should be defined instead. If multiple names are given the two list must have the save length, as the reassignment is element-wise.

Returns
modelModel

Reassigned model.

reference_fluxes(energy_axis)#

Get reference fluxes for a given energy axis.

Parameters
energy_axisMapAxis

Energy axis.

Returns
fluxesdict of Quantity

Reference fluxes.

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

Compute spectral index at given energy.

Parameters
energyQuantity

Energy at which to estimate the index.

epsilonfloat, optional

Fractional energy increment to use for determining the spectral index. Default is 1e-5.

Returns
indexfloat

Estimated spectral index.

spectral_index_error(energy, epsilon=1e-05)#

Evaluate the error on spectral index at the given energy.

Parameters
energyQuantity

Energy at which to estimate the index.

epsilonfloat, optional

Fractional energy increment to use for determining the spectral index. Default is 1e-5.

Returns
index, index_errortuple of float

Estimated spectral index and its error.

to_dict(full_output=False)[source]#

Create dictionary for YAML serialisation.

unfreeze()#

Restore parameters frozen status to default.