示例#1
0
 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
示例#2
0
 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
示例#3
0
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, )
示例#4
0
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, )
示例#5
0
 def Evaldn(self, s, n):
     return pylab.polyder(self.q,n)(s)