PrimaryFlux#
- class gammapy.astro.darkmatter.PrimaryFlux(mDM, channel)[source]#
Bases:
gammapy.modeling.models.spectral.TemplateNDSpectralModel
DM-annihilation gamma-ray spectra.
Based on the precomputed models by Cirelli et al. (2016). All available annihilation channels can be found there. The dark matter mass will be set to the nearest available value. The spectra will be available as
TemplateNDSpectralModel
for a chosen dark matter mass and annihilation channel. Using aTemplateNDSpectralModel
allows the interpolation between different dark matter masses.- Parameters
- mDM
Quantity
Dark matter particle mass as rest mass energy.
- channel: str
Annihilation channel. List available channels with
allowed_channels
.
- mDM
References
Cirelli et al (2016): http://www.marcocirelli.net/PPPC4DMID.html
Attributes Summary
List of allowed annihilation channels.
Annihilation channel as a string.
Frozen status of a model, True if all parameters are frozen.
Whether model is a norm spectral model.
Dark matter mass.
Template map as a
RegionNDMap
.Parameters as a
Parameters
object.Pivot or decorrelation energy, for a given spectral model calculated numerically.
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, **kwargs)Evaluate the primary flux.
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.
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 serilisation.
unfreeze
()Restore parameters frozen status to default.
write
([overwrite])Write the map.
Attributes Documentation
- allowed_channels#
List of allowed annihilation channels.
- channel#
Annihilation channel as a string.
- channel_registry = {'V->e': 'V->e', 'V->mu': 'V->\\[Mu]', 'V->tau': 'V->\\[Tau]', 'W': 'W', 'WL': 'WL', 'WT': 'WT', 'Z': 'Z', 'ZL': 'ZL', 'ZT': 'ZT', 'b': 'b', 'c': 'c', 'e': 'e', 'eL': 'eL', 'eR': 'eR', 'g': 'g', 'gamma': '\\[Gamma]', 'h': 'h', 'mu': '\\[Mu]', 'muL': '\\[Mu]L', 'muR': '\\[Mu]R', 'nu_e': '\\[Nu]e', 'nu_mu': '\\[Nu]\\[Mu]', 'nu_tau': '\\[Nu]\\[Tau]', 'q': 'q', 't': 't', 'tau': '\\[Tau]', 'tauL': '\\[Tau]L', 'tauR': '\\[Tau]R'}#
- 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.
- mDM#
Dark matter mass.
- map#
Template map as a
RegionNDMap
.
- 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 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
- table_filename = '$GAMMAPY_DATA/dark_matter_spectra/AtProduction_gammas.dat'#
- tag = ['PrimaryFlux', 'dm-pf']#
- 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_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, **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, optional
Step size of the gradient evaluation. Given as a fraction of the parameter error. Default is 1e-4.
- 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
- evaluate_error(energy, epsilon=0.0001)#
Evaluate spectral model with error propagation.
- freeze()#
Freeze all parameters.
- classmethod from_dict(data, **kwargs)#
- 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.
- 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.
- energy_min, energy_max
- Returns
- flux, flux_errtuple of
Quantity
Integral flux and flux error between energy_min and energy_max.
- flux, flux_errtuple of
- 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
- 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>)#
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)#
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
Plot energy bounds passed to MapAxis.from_energy_bounds.
- 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
- 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
- energy_bounds
Quantity
Plot energy bounds passed to
from_energy_bounds
.- 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
matplotlib.pyplot.fill_between
.
- energy_bounds
- Returns
- ax
Axes
, optional Matplotlib axes.
- 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, 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)#
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.
- energy
- Returns
- index, index_errortuple of float
Estimated spectral index and its error.
- to_dict(full_output=False)#
Create dictionary for YAML serilisation.
- unfreeze()#
Restore parameters frozen status to default.
- write(overwrite=False)#
Write the map.
- Parameters
- overwrite: bool, optional
Overwrite existing file. Default is False, which will raise a warning if the template file exists already.