Template Spectral Model

This model is defined by custom tabular values.

The units returned will be the units of the values array provided at initialization. The model will return values interpolated in log-space, returning 0 for energies outside of the limits of the provided energy array.

The class implementation follows closely what has been done in naima.models.TemplateSpectralModel

Example plot

Here is an example plot of the model:

import numpy as np
from astropy import units as u
import matplotlib.pyplot as plt
from gammapy.modeling.models import Models, SkyModel, TemplateSpectralModel

energy_range = [0.1, 1] * u.TeV
energy = np.array([1e6, 3e6, 1e7, 3e7]) * u.MeV
values = np.array([4.4e-38, 2.0e-38, 8.8e-39, 3.9e-39]) * u.Unit("MeV-1 s-1 cm-2")
model = TemplateSpectralModel(energy=energy, values=values)
model.plot(energy_range)
plt.grid(which="both")
../../../_images/sphx_glr_plot_template_spectral_001.png

YAML representation

Here is an example YAML file using the model:

model = SkyModel(spectral_model=model, name="template-model")
models = Models([model])

print(models.to_yaml())

Out:

components:
-   name: template-model
    type: SkyModel
    spectral:
        type: TemplateSpectralModel
        parameters:
        - {name: norm, value: 1.0, unit: '', min: .nan, max: .nan, frozen: false,
            error: 0}
        - {name: tilt, value: 0.0, unit: '', min: .nan, max: .nan, frozen: true, error: 0}
        - {name: reference, value: 1.0, unit: TeV, min: .nan, max: .nan, frozen: true,
            error: 0}
        energy:
            data: [1000000.0, 3000000.0, 10000000.0, 30000000.0]
            unit: MeV
        values:
            data: [4.4e-38, 2.0e-38, 8.8e-39, 3.9e-39]
            unit: 1 / (cm2 MeV s)

Gallery generated by Sphinx-Gallery