from .binner import Binner
from taurex import OutputSize
[docs]class LightcurveBinner(Binner):
"""
A special class of binning used to generate the correct spectrum output.
This is essentially the same as
:class:`~taurex.binning.nativebinner.NativeBinner`
but for lightcurve forward models.
"""
[docs] def bindown(self, wngrid, spectrum, grid_width=None, error=None):
"""Does nothing, only returns function arguments"""
return wngrid, spectrum, error, grid_width
[docs] def generate_spectrum_output(self, model_output,
output_size=OutputSize.heavy):
"""
Accepts only a lightcurve forward model. Stores the lightcurve
as well as the spectrum.
Parameters
----------
model_output: obj:`tuple`
Result from running a TauREx3 lightcurve forward model
output_size: :class:`~taurex.taurexdefs.OutputSize`
Size of the output.
Returns
-------
:obj:`dict`:
Dictionary of spectra containing both lightcurves
and spectra.
"""
output = {}
wngrid, lightcurve, tau, extra = model_output
native_grid, native, binned, extra = extra
output['native_wngrid'] = native_grid
output['native_wlgrid'] = 10000/native_grid
output['binned_wngrid'] = wngrid
output['binned_wlgrid'] = 10000/wngrid
output['lightcurve'] = lightcurve
output['native_spectrum'] = native
output['binned_spectrum'] = binned
if output_size > OutputSize.lighter:
output['binned_tau'] = self.bindown(wngrid, tau)[1]
if output_size > OutputSize.light:
output['native_tau'] = tau
return output