Source code for taurex.binning.simplebinner

from .binner import Binner
from taurex.util import bindown
from taurex.util.util import compute_bin_edges, wnwidth_to_wlwidth
from taurex import OutputSize


[docs]class SimpleBinner(Binner): """ Bins to a wavenumber grid given by ``wngrid``. The method places flux into the correct bins using histogramming methods. This is fast but can suffer as it assumes that there are no gaps in the wavenumber grid. This can cause weird results and may cause the flux to be higher in the boundary of points between two distinct regions (such as WFC3 + Spitzer) Parameters ---------- wngrid: :obj:`array` Wavenumber grid wngrid_width: :obj:`array`, optional Must have same shape as ``wngrid`` Full bin widths for each wavenumber grid point given in ``wngrid``. If not provided then this is automatically computed from ``wngrid``. """ def __init__(self, wngrid, wngrid_width=None): self._wngrid = wngrid self._wn_width = wngrid_width if self._wn_width is None: self._wn_width = compute_bin_edges(self._wngrid)[-1]
[docs] def bindown(self, wngrid, spectrum, grid_width=None, error=None): """ Bins down spectrum. Parameters ---------- wngrid : :obj:`array` The wavenumber grid of the spectrum to be binned down. spectrum: :obj:`array` The spectra we wish to bin-down. Must be same shape as ``wngrid``. grid_width: :obj:`array`, optional Wavenumber grid full-widths for the spectrum to be binned down. Must be same shape as ``wngrid``. Optional. error: :obj:`array`, optional Associated errors or noise of the spectrum. Must be same shape as ``wngrid``.Optional parameter. Returns ------- binned_wngrid : :obj:`array` New wavenumber grid spectrum: :obj:`array` Binned spectrum. grid_width: :obj:`array` New grid-widths error: :obj:`array` or None Binned error if given else ``None`` """ return self._wngrid, bindown(wngrid, spectrum, self._wngrid), \ None, self._wn_width
[docs] def generate_spectrum_output(self, model_output, output_size=OutputSize.heavy): output = super().generate_spectrum_output(model_output, output_size=output_size) output['binned_wngrid'] = self._wngrid output['binned_wlgrid'] = 10000/self._wngrid output['binned_wnwidth'] = self._wn_width output['binned_wlwidth'] = wnwidth_to_wlwidth(self._wngrid, self._wn_width) return output