Skip to content

Commit

Permalink
Merge pull request #2339 from adonath/fix_table_model_values_scale
Browse files Browse the repository at this point in the history
Fix unused TableModel(values_scale=) argument
  • Loading branch information
adonath committed Sep 4, 2019
2 parents da09aff + 3de66f1 commit 8487369
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 10 deletions.
3 changes: 1 addition & 2 deletions gammapy/astro/darkmatter/spectra.py
Expand Up @@ -120,8 +120,7 @@ def table_model(self):
channel_name = self.channel_registry[self.channel]
dN_dlogx = subtable[channel_name]
dN_dE = dN_dlogx / (energies * np.log(10))

return TableModel(energy=energies, values=dN_dE, values_scale="lin")
return TableModel(energy=energies, values=dN_dE)


class DMAnnihilation(SpectralModel):
Expand Down
2 changes: 1 addition & 1 deletion gammapy/irf/effective_area.py
Expand Up @@ -286,7 +286,7 @@ def find_energy(self, aeff, emin=None, emax=None):
# use the peak effective area as a default for the energy maximum
emax = energy[np.argmax(self.data.data)]

aeff_spectrum = TableModel(energy, self.data.data, values_scale="lin")
aeff_spectrum = TableModel(energy, self.data.data)
return aeff_spectrum.inverse(aeff, emin=emin, emax=emax)

def to_sherpa(self, name):
Expand Down
12 changes: 5 additions & 7 deletions gammapy/spectrum/models.py
Expand Up @@ -1212,14 +1212,12 @@ class TableModel(SpectralModel):
Array with the values of the model at energies ``energy``.
norm : float
Model scale that is multiplied to the supplied arrays. Defaults to 1.
values_scale : {'log', 'lin', 'sqrt'}
Interpolation scaling applied to values. If the values vary over many magnitudes
a 'log' scaling is recommended.
interp_kwargs : dict
Interpolation keyword arguments pass to `scipy.interpolate.interp1d`.
By default all values outside the interpolation range are set to zero.
If you want to apply linear extrapolation you can pass `interp_kwargs={'fill_value':
'extrapolate', 'kind': 'linear'}`
'extrapolate', 'kind': 'linear'}`. If you want to choose the interpolation
scaling applied to values, you can use `interp_kwargs={"values_scale": "log"}`.
meta : dict, optional
Meta information, meta['filename'] will be used for serialization
"""
Expand All @@ -1228,7 +1226,7 @@ class TableModel(SpectralModel):
tag = "TableModel"

def __init__(
self, energy, values, norm=1, values_scale="log", interp_kwargs=None, meta=None
self, energy, values, norm=1, interp_kwargs=None, meta=None
):
self.norm = Parameter("norm", norm, unit="")
self.energy = energy
Expand Down Expand Up @@ -1293,7 +1291,7 @@ def read_xspec_model(cls, filename, param, **kwargs):
idx = np.abs(table_spectra["PARAMVAL"] - param).argmin()
values = u.Quantity(table_spectra[idx][1], "", copy=False) # no dimension

kwargs.setdefault("values_scale", "lin")
kwargs.setdefault("interp_kwargs", {"values_scale": "lin"})
return cls(energy=energy, values=values, **kwargs)

@classmethod
Expand Down Expand Up @@ -1519,7 +1517,7 @@ def table_model(self, parameter, unit="TeV"):
"""
energy = self.energy.to(unit)
values = self.evaluate(energy=energy, parameter=parameter)
return TableModel(energy=energy, values=values, values_scale="lin")
return TableModel(energy=energy, values=values, interp_kwargs={"values_scale": "lin"})

def evaluate(self, energy, parameter):
"""Evaluate model for energy and parameter value."""
Expand Down

0 comments on commit 8487369

Please sign in to comment.