def fit_line_with_sigclip(xs, data, i=0): ps = Fit.do_fit_edge(xs, data) pf = lambda x: Fit.fit_bar_edge(ps, x) residual = np.abs(pf(xs) - data) sd = np.std(residual) ok = np.where(residual < 2.5 * sd)[0] if len(ok) == 0: return [lambda x: NaN, []] ps = Fit.do_fit_edge(xs[ok], data[ok]) pf = lambda x: Fit.fit_bar_edge(ps, x) return [pf, ok]