Fit a Gaussian function to the Glu/Gln (GLX) peak at 3.75ppm, +/-
        0.15ppm [Hurd2004]_.  Compare this model to a model
        that treats the Glx signal as two gaussian peaks.  Glx signal
        at. Select between them based on cross-validation

        Parameters
        ----------
        reject_outliers : float or bool
           If set to a float, this is the z score threshold for rejection (on
           any of the parameters). If set to False, no outlier rejection

        fit_lb, fit_ub : float
           What part of the spectrum (in ppm) contains the GLX peak.
           Default (3.5, 4.5)

        scalefit : boolean
           If this is set to true, attempt is made to tighten the fit to the
           peak with a second round of fitting where the fitted curve
           is fit with a scale factor. (default false)

        References
        ----------
        .. [Hurd2004] 2004, Measurement of brain glutamate using TE-averaged
        PRESS at 3T

def fit_glx(self, reject_outliers=3.0, fit_lb=3.6, fit_ub=3.9,
                fit_func=None):
        """
        Fit a Gaussian function to the Glu/Gln (GLX) peak at 3.75ppm, +/-
        0.15ppm [Hurd2004]_.  Compare this model to a model
        that treats the Glx signal as two gaussian peaks.  Glx signal
        at. Select between them based on cross-validation

        Parameters
        ----------
        reject_outliers : float or bool
           If set to a float, this is the z score threshold for rejection (on
           any of the parameters). If set to False, no outlier rejection

        fit_lb, fit_ub : float
           What part of the spectrum (in ppm) contains the GLX peak.
           Default (3.5, 4.5)

        scalefit : boolean
           If this is set to true, attempt is made to tighten the fit to the
           peak with a second round of fitting where the fitted curve
           is fit with a scale factor. (default false)

        References
        ----------
        .. [Hurd2004] 2004, Measurement of brain glutamate using TE-averaged
        PRESS at 3T

        """
        # Use everything:
        fit_spectra = self.diff_spectra.copy()

        if fit_func is None:
            # Cross-validate!
            fitter, self.glx_func, self.glx_model_err, self.glx_signal_err=\
                self._xval_choose_funcs(fit_spectra,
                                        reject_outliers,
                                        fit_lb, fit_ub)
        # Otherwise, you had better supply a couple of callables that can be
        # used to fit these spectra!
        else:
            fitter = fit_func[0]
            self.glx_func = fit_func[1]
            self.glx_model_err, self.glx_signal_err = \
                self._xval_model_error(fit_spectra, reject_outliers,
                                       fit_lb, fit_ub, fitter, self.glx_func)

        # Do it!
        choose_transients, model, signal, params, this_idx = self._fit_helper(
                                         fit_spectra, reject_outliers,
                                         fit_lb, fit_ub, fitter)

        self._glx_transients = choose_transients
        self.glx_model = model
        self.glx_signal = signal
        self.glx_params = params
        self.glx_idx = this_idx
        mean_params = stats.nanmean(params, 0)

        self.glx_auc =  self._calc_auc(self.glx_func, params, self.glx_idx)