Source code for qsonic.continuum_models.true_continuum_model

import logging
import numpy as np

from qsonic.mathtools import FastCubic1DInterp
from qsonic.continuum_models.base_continuum_model import BaseContinuumModel


[docs] class TrueContinuumModel(BaseContinuumModel): """True continuum model class for mock analysis. Uses fiducials for mean flux and varlss interpolation. Continuum is interpolated using a cubic spline. Parameters ---------- meanflux_interp: FastLinear1DInterp Interpolator for mean flux. If fiducial is not set, this equals to 1. varlss_interp: FastLinear1DInterp or FastCubic1DInterp Cubic spline for var_lss if fitting. Linear if from file. """ def __init__(self, meanflux_interp, varlss_interp): self.meanflux_interp = meanflux_interp self.varlss_interp = varlss_interp
[docs] def fit_continuum(self, spec): """True continuum reduction. Uses fiducials for mean flux and varlss interpolation. Continuum is interpolated using a cubic spline. Arguments --------- spec: Spectrum Spectrum object to add true continuum. """ w1 = spec.cont_params['true_data_w1'] dwave = spec.cont_params['true_data_dwave'] tcont = spec.cont_params['true_data'] tcont_interp = FastCubic1DInterp(w1, dwave, tcont) for arm, wave_arm in spec.forestwave.items(): cont_est = tcont_interp(wave_arm) cont_est *= self.meanflux_interp(wave_arm) spec.cont_params['cont'][arm] = cont_est spec.set_forest_weight(self.varlss_interp) spec.calc_continuum_chi2()
[docs] def init_spectra(self, spectra_list): """ Initializes :attr:`cont_params <qsonic.spectrum.Spectrum.cont_params>` for a list of Spectrum objects. Arguments --------- spectra_list: list(Spectrum) Spectrum objects. """ logging.info("Initializing true continuum.") for spec in spectra_list: spec.cont_params['method'] = 'true' spec.cont_params['valid'] = True spec.cont_params['x'] = np.zeros(1) spec.cont_params['xcov'] = np.eye(1) spec.cont_params['dof'] = spec.get_real_size() spec.cont_params['cont'] = {}
[docs] def stacks_residual_flux(self): """:meth:`stack_spectra` stacks actual continuum values. Returns ------- False: bool """ return False