SuperExpCutoffPowerLaw4FGLSpectralModel#
- class gammapy.modeling.models.SuperExpCutoffPowerLaw4FGLSpectralModel(**kwargs)[source]#
Bases:
gammapy.modeling.models.spectral.SpectralModel
Spectral super exponential cutoff power-law model used for 4FGL-DR1 (and DR2). See equation (4) of https://arxiv.org/pdf/1902.10045.pdf For more information see Super Exponential Cutoff Power Law Model used for 4FGL-DR1 (and DR2).
- Parameters
Attributes Summary
A model parameter.
A model parameter.
Frozen status of a model, True if all parameters are frozen
A model parameter.
A model parameter.
Whether model is a norm spectral model
Parameters (
Parameters
)A model parameter.
Methods Summary
__call__
(energy)Call self as a function.
copy
(**kwargs)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, amplitude, reference, ...)Evaluate the model (static function).
evaluate_error
(energy[, epsilon])Evaluate spectral model with error propagation.
freeze
()Freeze all parameters
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[, 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.
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.
to_dict
([full_output])Create dict for YAML serialisation
unfreeze
()Restore parameters frozen status to default
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.- Parameters
- namestr
Name
- valuefloat or
Quantity
Value
- scalefloat, optional
Scale (sometimes used in fitting)
- unit
Unit
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 of the scan keywords before.
- scale_method{‘scale10’, ‘factor1’, None}
Method used to set
factor
andscale
- interp{“lin”, “sqrt”, “log”}
Parameter scaling to use for the scan.
- is_normbool
Whether the parameter represents the flux norm of the model.
- covariance#
- default_parameters = <gammapy.modeling.parameter.Parameters object>#
- expfactor#
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
- namestr
Name
- valuefloat or
Quantity
Value
- scalefloat, optional
Scale (sometimes used in fitting)
- unit
Unit
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 of the scan keywords before.
- scale_method{‘scale10’, ‘factor1’, None}
Method used to set
factor
andscale
- interp{“lin”, “sqrt”, “log”}
Parameter scaling to use for the scan.
- is_normbool
Whether the parameter represents the flux norm of the model.
- frozen#
Frozen status of a model, True if all parameters are frozen
- index_1#
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
- namestr
Name
- valuefloat or
Quantity
Value
- scalefloat, optional
Scale (sometimes used in fitting)
- unit
Unit
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 of the scan keywords before.
- scale_method{‘scale10’, ‘factor1’, None}
Method used to set
factor
andscale
- interp{“lin”, “sqrt”, “log”}
Parameter scaling to use for the scan.
- is_normbool
Whether the parameter represents the flux norm of the model.
- index_2#
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
- namestr
Name
- valuefloat or
Quantity
Value
- scalefloat, optional
Scale (sometimes used in fitting)
- unit
Unit
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 of the scan keywords before.
- scale_method{‘scale10’, ‘factor1’, None}
Method used to set
factor
andscale
- interp{“lin”, “sqrt”, “log”}
Parameter scaling to use for the scan.
- is_normbool
Whether the parameter represents the flux norm of the model.
- is_norm_spectral_model#
Whether model is a norm spectral model
- parameters#
Parameters (
Parameters
)
- 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.- Parameters
- namestr
Name
- valuefloat or
Quantity
Value
- scalefloat, optional
Scale (sometimes used in fitting)
- unit
Unit
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 of the scan keywords before.
- scale_method{‘scale10’, ‘factor1’, None}
Method used to set
factor
andscale
- interp{“lin”, “sqrt”, “log”}
Parameter scaling to use for the scan.
- is_normbool
Whether the parameter represents the flux norm of the model.
- tag = ['SuperExpCutoffPowerLaw4FGLSpectralModel', 'secpl-4fgl']#
- type#
Methods Documentation
- __call__(energy)#
Call self as a function.
- copy(**kwargs)#
- 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.
- Parameters
- energy_min, energy_max
Quantity
Lower and upper bound of integration range.
- epsilonfloat
Step size of the gradient evaluation. Given as a fraction of the parameter error.
- energy_min, energy_max
- Returns
- energy_flux, energy_flux_errtuple of
Quantity
Energy flux and energy flux error between energy_min and energy_max.
- energy_flux, energy_flux_errtuple of
- static evaluate(energy, amplitude, reference, expfactor, index_1, index_2)[source]#
Evaluate the model (static function).
- evaluate_error(energy, epsilon=0.0001)#
Evaluate spectral model with error propagation.
- freeze()#
Freeze all parameters
- classmethod from_dict(data)#
- classmethod from_parameters(parameters, **kwargs)#
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, epsilon=0.0001, **kwargs)#
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.
- 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.
- plot(energy_bounds, ax=None, sed_type='dnde', 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_bounds=(0.1, 100) * u.TeV) ax.set_yscale('linear')
- Parameters
- ax
Axes
, optional Axis
- energy_bounds
Quantity
Plot energy bounds passed to MapAxis.from_energy_bounds
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”}
Evaluation methods of the model
- energy_powerint, optional
Power of energy to multiply flux axis with
- n_pointsint, optional
Number of evaluation nodes
- **kwargsdict
Keyword arguments forwarded to
plot
- ax
- Returns
- ax
Axes
, optional Axis
- ax
- 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')
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()
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
- ax
Axes
, optional Axis
- energy_bounds
Quantity
Plot energy bounds passed to MapAxis.from_energy_bounds
- sed_type{“dnde”, “flux”, “eflux”, “e2dnde”}
Evaluation methods of the model
- 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
- 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
- model
Model
Reassigned model.
- model
- reference_fluxes(energy_axis)#
Get reference fluxes for a given energy axis.
- Parameters
- energy_axis
MapAxis
Energy axis
- energy_axis
- Returns
- fluxesdict of
Quantity
Reference fluxes
- fluxesdict of
- spectral_index(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(full_output=False)#
Create dict for YAML serialisation
- unfreeze()#
Restore parameters frozen status to default