示例#1
0
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:]))
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
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:]))