def __resid(pars, ncoefs=1, knots=None, order=3, irbkg=1, nfft=2048, kraw=None, mu=None, kout=None, ftwin=1, kweight=1, chi_std=None, nclamp=0, clamp_lo=1, clamp_hi=1, **kws): # coefs = [getattr(pars, FMT_COEF % i) for i in range(ncoefs)] coefs = [pars[FMT_COEF % i].value for i in range(ncoefs)] bkg, chi = spline_eval(kraw, mu, knots, coefs, order, kout) if chi_std is not None: chi = chi - chi_std out = realimag(xftf_fast(chi * ftwin, nfft=nfft)[:irbkg]) if nclamp == 0: return out # spline clamps: scale = (1.0 + 100 * (out * out).sum()) / (len(out) * nclamp) scaled_chik = scale * chi * kout**kweight return np.concatenate((out, abs(clamp_lo) * scaled_chik[:nclamp], abs(clamp_hi) * scaled_chik[-nclamp:]))
def fftf(self, chi, kweight=None): """ forward FT -- meant to be used internally. chi must be on self.k_ grid""" self.make_karrays() if self.kwin is None: self.kwin = ftwindow(self.k_, xmin=self.kmin, xmax=self.kmax, dx=self.dk, dx2=self.dk2, window=self.window) if kweight is None: kweight = self.get_kweight() cx = chi * self.kwin[:len(chi)] * self.k_[:len(chi)]**kweight return xftf_fast(cx, kstep=self.kstep, nfft=self.nfft)
def fftf(self, chi, kweight=None): """ forward FT -- meant to be used internally. chi must be on self.k_ grid""" if self.kstep != self.__kstep or self.nfft != self.__nfft: self.make_karrays() if self.kwin is None: self.kwin = ftwindow(self.k_, xmin=self.kmin, xmax=self.kmax, dx=self.dk, dx2=self.dk2, window=self.window) if kweight is None: kweight = self.get_kweight() cx = chi * self.kwin[:len(chi)] * self.k_[:len(chi)]**kweight return xftf_fast(cx, kstep=self.kstep, nfft=self.nfft)
def __resid(pars, ncoefs=1, knots=None, order=3, irbkg=1, nfft=2048, kraw=None, mu=None, kout=None, ftwin=1, kweight=1, chi_std=None, nclamp=0, clamp_lo=1, clamp_hi=1, **kws): coefs = [getattr(pars, FMT_COEF % i) for i in range(ncoefs)] bkg, chi = spline_eval(kraw, mu, knots, coefs, order, kout) if chi_std is not None: chi = chi - chi_std out = realimag(xftf_fast(chi*ftwin, nfft=nfft)[:irbkg]) if nclamp == 0: return out # spline clamps: scale = (1.0 + 100*(out*out).sum())/(len(out)*nclamp) scaled_chik = scale * chi * kout**kweight return np.concatenate((out, abs(clamp_lo)*scaled_chik[:nclamp], abs(clamp_hi)*scaled_chik[-nclamp:]))