SpectrumDataset

class gammapy.spectrum.SpectrumDataset(model=None, counts=None, livetime=None, aeff=None, edisp=None, background=None, mask_safe=None, mask_fit=None, name='', gti=None)[source]

Bases: gammapy.modeling.Dataset

Spectrum dataset for likelihood fitting.

The spectrum dataset bundles reduced counts data, with a spectral model, background model and instrument response function to compute the fit-statistic given the current model and data.

Parameters:
model : SpectralModel

Fit model

counts : CountsSpectrum

Counts spectrum

livetime : Quantity

Livetime

aeff : EffectiveAreaTable

Effective area

edisp : EnergyDispersion

Energy dispersion

background : CountsSpectrum

Background to use for the fit.

mask_safe : ndarray

Mask defining the safe data range.

mask_fit : ndarray

Mask to apply to the likelihood for fitting.

name : str

Dataset name.

gti : GTI

GTI of the observation or union of GTI if it is a stacked observation

Attributes Summary

data_shape Shape of the counts data
energy_range Energy range defined by the safe mask
excess Excess (counts - alpha * counts_off)
likelihood_type
mask Combined fit and safe mask
mask_safe
model
parameters

Methods Summary

copy(self) A deep copy.
create(e_reco[, e_true, reference_time]) Creates empty SpectrumDataset
fake(self[, random_state]) Simulate fake counts for the current model and reduced irfs.
likelihood(self) Total likelihood given the current model parameters.
likelihood_per_bin(self) Likelihood per bin given the current model parameters
npred(self) Return npred map (model + background)
plot_counts(self[, ax]) Plot predicted and detected counts.
plot_fit(self) Plot counts and residuals in two panels.
plot_residuals(self[, method, ax]) Plot residuals.
residuals(self[, method]) Compute the spectral residuals.
stack(self, other) Stack this dataset with another one.

Attributes Documentation

data_shape

Shape of the counts data

energy_range

Energy range defined by the safe mask

excess

Excess (counts - alpha * counts_off)

likelihood_type = 'cash'
mask

Combined fit and safe mask

mask_safe
model
parameters

Methods Documentation

copy(self)

A deep copy.

classmethod create(e_reco, e_true=None, reference_time='2000-01-01')[source]

Creates empty SpectrumDataset

Empty containers are created with the correct geometry. counts, background and aeff are zero and edisp is diagonal.

The safe_mask is set to False in every bin.

Parameters:
e_reco : Quantity

edges of counts vector

e_true : Quantity

edges of effective area table. If not set use reco energy values. Default : None

reference_time : Time

reference time of the dataset, Default is “2000-01-01”

fake(self, random_state='random-seed')[source]

Simulate fake counts for the current model and reduced irfs.

This method overwrites the counts defined on the dataset object.

Parameters:
random_state : {int, ‘random-seed’, ‘global-rng’, RandomState}

Defines random number generator initialisation. Passed to get_random_state.

likelihood(self)

Total likelihood given the current model parameters.

likelihood_per_bin(self)[source]

Likelihood per bin given the current model parameters

npred(self)[source]

Return npred map (model + background)

plot_counts(self, ax=None)[source]

Plot predicted and detected counts.

Parameters:
ax : Axes

Axes object.

Returns:
ax : Axes

Axes object.

plot_fit(self)[source]

Plot counts and residuals in two panels.

Calls plot_counts and plot_residuals.

plot_residuals(self, method='diff', ax=None, **kwargs)[source]

Plot residuals.

Parameters:
ax : Axes

Axes object.

method : {“diff”, “diff/model”, “diff/sqrt(model)”}

Normalization used to compute the residuals, see SpectrumDataset.residuals()

**kwargs : dict

Keywords passed to CountsSpectrum.plot()

Returns:
ax : Axes

Axes object.

residuals(self, method='diff')[source]

Compute the spectral residuals.

Parameters:
method : {“diff”, “diff/model”, “diff/sqrt(model)”}
Method used to compute the residuals. Available options are:
  • diff (default): data - model
  • diff/model: (data - model) / model
  • diff/sqrt(model): (data - model) / sqrt(model)
Returns:
residuals : CountsSpectrum

Residual spectrum

stack(self, other)[source]

Stack this dataset with another one.

Safe mask is applied to compute the stacked counts vector. Counts outside each dataset safe mask are lost.

Stacking is performed in-place.

The stacking of 2 datasets is implemented as follows. Here, \(k\) denotes a bin in reconstructed energy and \(j = {1,2}\) is the dataset number

The mask_safe of each dataset is defined as:

\[\begin{split}\epsilon_{jk} =\left\{\begin{array}{cl} 1, & \mbox{if bin k is inside the energy thresholds}\\ 0, & \mbox{otherwise} \end{array}\right.\end{split}\]

Then the total counts and model background bkg are computed according to:

\[ \begin{align}\begin{aligned}\overline{\mathrm{n_{on}}}_k = \mathrm{n_{on}}_{1k} \cdot \epsilon_{1k} + \mathrm{n_{on}}_{2k} \cdot \epsilon_{2k}\\\overline{bkg}_k = bkg_{1k} \cdot \epsilon_{1k} + bkg_{2k} \cdot \epsilon_{2k}\end{aligned}\end{align} \]

The stacked safe_mask is then:

\[\overline{\epsilon_k} = \epsilon_{1k} OR \epsilon_{2k}\]

Please refer to the IRFStacker for the description of how the IRFs are stacked.

Parameters:
other : SpectrumDataset

the dataset to stack to the current one