示例#1
0
    def _mean_regress(self, r, x, y, ox, oy, index, fit, fod, apply_filter):

        if r is None or not isinstance(r, MeanRegressor):
            r = MeanRegressor()

        r.trait_set(xs=x, ys=y, fit=fit)
        if apply_filter:
            r = self._apply_outlier_filter(r, ox, oy, index, fod)
        return r
示例#2
0
    def _mean_regress(self, r, x, y, ox, oy, index,
                      fit, fod, apply_filter):

        if r is None or not isinstance(r, MeanRegressor):
            r = MeanRegressor()

        r.trait_set(xs=x, ys=y, fit=fit)
        if apply_filter:
            r = self._apply_outlier_filter(r, ox, oy, index, fod)
        return r
示例#3
0
    def regressor(self):
        fit = self.fit
        if fit is None:
            fit = 'linear'
            self.fit = fit

        lfit = fit.lower()
        is_mean = 'average' in lfit
        is_expo = lfit == 'exponential'
        is_poly = not (is_mean or is_expo)

        reg = self._regressor
        if reg is None:
            if is_mean:
                reg = MeanRegressor()
            elif is_expo:
                reg = ExponentialRegressor()
            else:
                reg = PolynomialRegressor()
        elif is_poly and not isinstance(reg, PolynomialRegressor):
            reg = PolynomialRegressor()
        elif is_mean and not isinstance(reg, MeanRegressor):
            reg = MeanRegressor()
        elif is_expo and not isinstance(reg, ExponentialRegressor):
            reg = ExponentialRegressor()

        if is_poly:
            reg.set_degree(fit_to_degree(fit), refresh=False)

        reg.trait_set(xs=self.offset_xs,
                      ys=self.ys,
                      error_calc_type=self.error_type or 'SEM',
                      filter_outliers_dict=self.filter_outliers_dict,
                      tag=self.name)

        if self.truncate:
            reg.set_truncate(self.truncate)
        reg.calculate()

        self._regressor = reg
        return reg
示例#4
0
文件: isotope.py 项目: NMGRL/pychron
    def regressor(self):
        fit = self.fit
        if fit is None:
            fit = 'linear'
            self.fit = fit

        lfit = fit.lower()
        is_mean = 'average' in lfit
        is_expo = lfit == 'exponential'
        is_poly = not (is_mean or is_expo)

        reg = self._regressor
        if reg is None:
            if is_mean:
                reg = MeanRegressor()
            elif is_expo:
                reg = ExponentialRegressor()
            else:
                reg = PolynomialRegressor()
        elif is_poly and not isinstance(reg, PolynomialRegressor):
            reg = PolynomialRegressor()
        elif is_mean and not isinstance(reg, MeanRegressor):
            reg = MeanRegressor()
        elif is_expo and not isinstance(reg, ExponentialRegressor):
            reg = ExponentialRegressor()

        if is_poly:
            reg.set_degree(fit_to_degree(fit), refresh=False)

        reg.trait_set(xs=self.offset_xs, ys=self.ys,
                      error_calc_type=self.error_type or 'SEM',
                      filter_outliers_dict=self.filter_outliers_dict,
                      tag=self.name)

        if self.truncate:
            reg.set_truncate(self.truncate)
        reg.calculate()

        self._regressor = reg
        return reg
示例#5
0
class TruncateRegressionTest(TestCase):
    def setUp(self):
        self.reg = MeanRegressor()

    def test_pre_truncate(self):
        xs, ys, sol = pre_truncated_data()
        self.reg.trait_set(xs=xs, ys=ys)
        self.solution = sol
        self.reg.trait_set(xs=xs, ys=ys)
        self.reg.set_truncate('x<5')

        self.assertEqual(self.reg.mean, self.solution['pre_mean'])

    def test_post_truncate(self):
        xs, ys, sol = pre_truncated_data()
        self.reg.trait_set(xs=xs, ys=ys)
        self.solution = sol
        self.reg.trait_set(xs=xs, ys=ys)
        self.reg.set_truncate('x>=5')

        self.assertEqual(self.reg.mean, self.solution['post_mean'])
示例#6
0
class TruncateRegressionTest(TestCase):
    def setUp(self):
        self.reg = MeanRegressor()

    def test_pre_truncate(self):
        xs, ys, sol = pre_truncated_data()
        self.reg.trait_set(xs=xs, ys=ys)
        self.solution = sol
        self.reg.trait_set(xs=xs, ys=ys)
        self.reg.set_truncate('x<5')

        self.assertEqual(self.reg.mean, self.solution['pre_mean'])

    def test_post_truncate(self):
        xs, ys, sol = pre_truncated_data()
        self.reg.trait_set(xs=xs, ys=ys)
        self.solution = sol
        self.reg.trait_set(xs=xs, ys=ys)
        self.reg.set_truncate('x>=5')

        self.assertEqual(self.reg.mean, self.solution['post_mean'])