def __init__(self, coeff_list): # NB: we adopt the weak-term-first convention for inputs self.coeff_list = coeff_list self.q = pylab.poly1d(coeff_list[::-1]) self.qd = pylab.polyder(self.q) self.qdd = pylab.polyder(self.qd) self.degree = self.q.order
def do_one_regression(data, metadata): """do_one_regression This determines the scatter of the fit at a single wavelength for all stars Parameters ---------- data: metadata: returns ------- """ ln_s_values = np.arange(np.log(0.0001), 0., 0.5) chis_eval = np.zeros_like(ln_s_values) for ii, ln_s in enumerate(ln_s_values): foo, bar, chi, logdet_Cinv = do_one_regression_at_fixed_scatter(data, metadata, scatter = np.exp(ln_s)) chis_eval[ii] = np.sum(chi * chi) - logdet_Cinv if np.any(np.isnan(chis_eval)): s_best = np.exp(ln_s_values[-1]) return do_one_regression_at_fixed_scatter(data, metadata, scatter = s_best) + (s_best, ) lowest = np.argmin(chis_eval) if lowest == 0 or lowest == len(ln_s_values) + 1: s_best = np.exp(ln_s_values[lowest]) return do_one_regression_at_fixed_scatter(data, metadata, scatter = s_best) + (s_best, ) ln_s_values_short = ln_s_values[np.array([lowest-1, lowest, lowest+1])] chis_eval_short = chis_eval[np.array([lowest-1, lowest, lowest+1])] z = np.polyfit(ln_s_values_short, chis_eval_short, 2) f = np.poly1d(z) fit_pder = np.polyder(z) fit_pder2 = pylab.polyder(fit_pder) s_best = np.exp(np.roots(fit_pder)[0]) return do_one_regression_at_fixed_scatter(data, metadata, scatter = s_best) + (s_best, )
def do_one_regression(data, metadata): """do_one_regression This determines the scatter of the fit at a single wavelength for all stars Parameters ---------- data: metadata: returns ------- """ ln_s_values = np.arange(np.log(0.0001), 0., 0.5) chis_eval = np.zeros_like(ln_s_values) for ii, ln_s in enumerate(ln_s_values): foo, bar, chi, logdet_Cinv = do_one_regression_at_fixed_scatter( data, metadata, scatter=np.exp(ln_s)) chis_eval[ii] = np.sum(chi * chi) - logdet_Cinv if np.any(np.isnan(chis_eval)): s_best = np.exp(ln_s_values[-1]) return do_one_regression_at_fixed_scatter( data, metadata, scatter=s_best) + (s_best, ) lowest = np.argmin(chis_eval) if lowest == 0 or lowest == len(ln_s_values) + 1: s_best = np.exp(ln_s_values[lowest]) return do_one_regression_at_fixed_scatter( data, metadata, scatter=s_best) + (s_best, ) ln_s_values_short = ln_s_values[np.array([lowest - 1, lowest, lowest + 1])] chis_eval_short = chis_eval[np.array([lowest - 1, lowest, lowest + 1])] z = np.polyfit(ln_s_values_short, chis_eval_short, 2) f = np.poly1d(z) fit_pder = np.polyder(z) fit_pder2 = pylab.polyder(fit_pder) s_best = np.exp(np.roots(fit_pder)[0]) return do_one_regression_at_fixed_scatter(data, metadata, scatter=s_best) + (s_best, )
def Evaldn(self, s, n): return pylab.polyder(self.q,n)(s)