Example #1
0
    def _get_plateau_age(self):
        ages, errors, k39 = self._get_steps()

        args = calculate_plateau_age(ages, errors, k39)
        if args:
            v, e, pidx = args

            self.plateau_steps = pidx
            self.plateau_steps_str = '{}-{}'.format(ALPHAS[pidx[0]],
                                                    ALPHAS[pidx[1]])
            self.nsteps = (pidx[1] - pidx[0]) + 1

            pages, perrs = zip(*[(ages[i], errors[i]) for i in range(pidx[0], pidx[1])])
            mswd = calculate_mswd(pages, perrs)
            self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
            self.plateau_mswd = mswd

            e = self._modify_error(v, e,
                                   self.plateau_age_error_kind,
                                   mswd=mswd,
                                   include_j_error=self.include_j_error_in_plateau)
            if math.isnan(e):
                e = 0

            return ufloat(v, max(0, e))
Example #2
0
    def _get_plateau_age(self):
        ages, errors, k39 = self._get_steps()

        options = {'nsteps': self.pc_nsteps,
                   'gas_fraction': self.pc_gas_fraction,
                   'force_steps': self.calculate_fixed_plateau_steps}

        args = calculate_plateau_age(ages, errors, k39, options=options)
        if args:
            v, e, pidx = args
            if pidx[0]==pidx[1]:
                return

            self.plateau_steps = pidx
            self.plateau_steps_str = '{}-{}'.format(ALPHAS[pidx[0]],
                                                    ALPHAS[pidx[1]])

            self.nsteps = (pidx[1] - pidx[0]) + 1
            # print pidx
            pages, perrs = zip(*[(ages[i], errors[i]) for i in range(pidx[0], pidx[1])])
            mswd = calculate_mswd(pages, perrs)
            self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
            self.plateau_mswd = mswd

            e = self._modify_error(v, e,
                                   self.plateau_age_error_kind,
                                   mswd=mswd,
                                   include_j_error=self.include_j_error_in_plateau)
            if math.isnan(e):
                e = 0

            return ufloat(v, max(0, e))
Example #3
0
 def check_mswd(self, start, end):
     """
         return False if not valid
     """
     ages = self.ages[start, end + 1]
     errors = self.errors[start, end + 1]
     mswd = calculate_mswd(ages, errors)
     return validate_mswd(mswd, len(ages))
Example #4
0
 def check_mswd(self, start, end):
     """
         return False if not valid
     """
     ages = self.ages[start, end + 1]
     errors = self.errors[start, end + 1]
     mswd = calculate_mswd(ages, errors)
     return validate_mswd(mswd, len(ages))
Example #5
0
    def _get_mswd(self):
        self.valid_mswd = False
        ys = self._clean_array(self.ys)
        yserr = self._clean_array(self.yserr)
        if self._check_integrity(ys, yserr):

            mswd = calculate_mswd(ys, yserr)
            self.valid_mswd = validate_mswd(mswd, len(ys))
            return mswd
Example #6
0
    def _get_mswd(self):
        self.valid_mswd=False
        ys=self._clean_array(self.ys)
        yserr=self._clean_array(self.yserr)
        if self._check_integrity(ys,yserr):

            mswd=calculate_mswd(ys, yserr)
            self.valid_mswd=validate_mswd(mswd,len(ys))
            return mswd
Example #7
0
 def _get_mswd(self):
     if not self._slope:
         self.calculate()
     a = self.intercept
     b = self.slope
     x, y, sx, sy = self.clean_xs, self.clean_ys, self.clean_xserr, self.clean_yserr
     v = calculate_mswd2(x, y, sx, sy, a, b, corrcoeffs=self._calculate_correlation_coefficients())
     self.valid_mswd = validate_mswd(v, len(x), k=2)
     return v
Example #8
0
 def _get_mswd(self):
     if not self._slope:
         self.calculate()
     a = self.intercept
     b = self.slope
     x, y, sx, sy = self.clean_xs, self.clean_ys, self.clean_xserr, self.clean_yserr
     v = calculate_mswd2(x, y, sx, sy, a, b,
                         corrcoeffs=self.calculate_correlation_coefficients())
     self.valid_mswd = validate_mswd(v, len(x), k=2)
     return v
Example #9
0
    def _get_mswd(self):
        self.valid_mswd = False
        # ys=self._clean_array(self.ys)
        # yserr=self._clean_array(self.yserr)
        ys = self.clean_ys
        yserr = self.clean_yserr

        if self._check_integrity(ys, yserr):
            mswd = calculate_mswd(ys, yserr, k=self.degrees_of_freedom)
            self.valid_mswd = validate_mswd(mswd, len(ys), k=self.degrees_of_freedom) or False
            return mswd
Example #10
0
    def _get_mswd(self):
        self.valid_mswd = False
        # ys=self._clean_array(self.ys)
        # yserr=self._clean_array(self.yserr)
        ys = self.clean_ys
        yserr = self.clean_yserr

        if self._check_integrity(ys, yserr):
            mswd = calculate_mswd(ys, yserr, k=self.degrees_of_freedom)
            self.valid_mswd = validate_mswd(mswd, len(ys), k=self.degrees_of_freedom) or False
            return mswd
Example #11
0
    def _get_plateau_age(self):
        # ages, errors, k39 = self._get_steps()

        ages = [ai.age for ai in self.analyses]
        errors = [ai.age_err for ai in self.analyses]
        k39 = [
            nominal_value(ai.get_computed_value('k39')) for ai in self.analyses
        ]

        options = {
            'nsteps': self.pc_nsteps,
            'gas_fraction': self.pc_gas_fraction,
            'force_steps': self.calculate_fixed_plateau_steps
        }

        excludes = [i for i in enumerate(self.analyses) if ai.is_omitted()]
        args = calculate_plateau_age(ages,
                                     errors,
                                     k39,
                                     options=options,
                                     excludes=excludes)
        if args:
            v, e, pidx = args
            if pidx[0] == pidx[1]:
                return

            self.plateau_steps = pidx
            self.plateau_steps_str = '{}-{}'.format(ALPHAS[pidx[0]],
                                                    ALPHAS[pidx[1]])

            step_idxs = [
                i for i in xrange(pidx[0], pidx[1] + 1)
                if not self.analyses[i].is_omitted()
            ]
            self.nsteps = len(step_idxs)

            pages = [ages[i] for i in step_idxs]
            perrs = [errors[i] for i in step_idxs]

            mswd = calculate_mswd(pages, perrs)
            self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
            self.plateau_mswd = mswd

            e = self._modify_error(
                v,
                e,
                self.plateau_age_error_kind,
                mswd=mswd,
                include_j_error=self.include_j_error_in_plateau)
            if math.isnan(e):
                e = 0

            return ufloat(v, max(0, e))
Example #12
0
    def attr_stats(self, attr):
        w, sd, sem, (vs, es) = self._calculate_weighted_mean(attr, error_kind='both')
        mswd = calculate_mswd(vs, es, wm=w)
        valid_mswd = validate_mswd(mswd, self.nanalyses)
        mi = min(vs)
        ma = max(vs)

        total_dev = (ma - mi) / ma * 100

        return {'mean': w,
                'sd': sd,
                'sem': sem,
                'mswd': mswd,
                'valid_mswd': valid_mswd,
                'min': mi, 'max': ma, 'total_dev': total_dev}
Example #13
0
    def _get_plateau_age(self):
        ans = self.analyses
        v, e = 0, 0
        if all((not isinstance(ai, InterpretedAgeGroup) for ai in ans)):
            if ans:
                ages = [ai.age for ai in ans]
                errors = [ai.age_err for ai in ans]

                k39 = [nominal_value(ai.get_computed_value('k39')) for ai in ans]

                options = {'nsteps': self.plateau_nsteps,
                           'gas_fraction': self.plateau_gas_fraction,
                           'overlap_sigma': self.plateau_overlap_sigma,
                           'fixed_steps': self.fixed_steps}

                excludes = [i for i, ai in enumerate(ans) if ai.is_omitted()]
                args = calculate_plateau_age(ages, errors, k39, options=options, excludes=excludes)

                if args:
                    v, e, pidx = args
                    if pidx[0] == pidx[1]:
                        return
                    self.plateau_steps = pidx
                    self.plateau_steps_str = '{}-{}'.format(ALPHAS[pidx[0]],
                                                            ALPHAS[pidx[1]])

                    step_idxs = [i for i in range(pidx[0], pidx[1] + 1) if not ans[i].is_omitted()]
                    self.nsteps = len(step_idxs)

                    pages = array([ages[i] for i in step_idxs])
                    perrs = array([errors[i] for i in step_idxs])

                    mswd = calculate_mswd(pages, perrs)
                    self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
                    self.plateau_mswd = mswd
                    if self.plateau_age_error_kind == SD:
                        e = array(pages).std()
                    else:
                        e = self._modify_error(v, e,
                                               self.plateau_age_error_kind,
                                               mswd=mswd)
                    if math.isnan(e):
                        e = 0

        a = ufloat(v, max(0, e))
        self._apply_j_err(a, force=self.include_j_error_in_mean or self.include_j_error_in_plateau)

        return a
Example #14
0
    def _get_plateau_age(self):
        ages, errors, k39 = self._get_steps()
        args = calculate_plateau_age(ages, errors, k39)
        if args:
            v, e, pidx = args

            self.plateau_steps = pidx
            self.plateau_steps_str = '{}-{}'.format(ALPHAS[pidx[0]],
                                                    ALPHAS[pidx[1]])
            self.nsteps = (pidx[1] - pidx[0]) + 1

            pages, perrs = zip(*[(ages[i], errors[i]) for i in range(pidx[0], pidx[1])])
            mswd = calculate_mswd(pages, perrs)
            self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
            self.plateau_mswd = mswd

            return ufloat(v, e)
Example #15
0
    def _get_plateau_age(self):
        ages, errors, k39 = self._get_steps()
        args = calculate_plateau_age(ages, errors, k39)
        if args:
            v, e, pidx = args

            self.plateau_steps = pidx
            self.plateau_steps_str = '{}-{}'.format(ALPHAS[pidx[0]],
                                                    ALPHAS[pidx[1]])
            self.nsteps = (pidx[1] - pidx[0]) + 1

            pages, perrs = zip(*[(ages[i], errors[i])
                                 for i in range(pidx[0], pidx[1])])
            mswd = calculate_mswd(pages, perrs)
            self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
            self.plateau_mswd = mswd

            return ufloat(v, e)
Example #16
0
    def _get_plateau_age(self):
        # ages, errors, k39 = self._get_steps()

        ages = [ai.age for ai in self.analyses]
        errors = [ai.age_err for ai in self.analyses]
        k39 = [nominal_value(ai.get_computed_value('k39')) for ai in self.analyses]

        options = {'nsteps': self.pc_nsteps,
                   'gas_fraction': self.pc_gas_fraction,
                   'force_steps': self.calculate_fixed_plateau_steps}

        excludes = [i for i in enumerate(self.analyses) if ai.is_omitted()]
        args = calculate_plateau_age(ages, errors, k39, options=options, excludes=excludes)
        if args:
            v, e, pidx = args
            if pidx[0] == pidx[1]:
                return

            self.plateau_steps = pidx
            self.plateau_steps_str = '{}-{}'.format(ALPHAS[pidx[0]],
                                                    ALPHAS[pidx[1]])

            step_idxs = [i for i in xrange(pidx[0], pidx[1] + 1) if not self.analyses[i].is_omitted()]
            self.nsteps = len(step_idxs)

            pages = [ages[i] for i in step_idxs]
            perrs = [errors[i] for i in step_idxs]

            mswd = calculate_mswd(pages, perrs)
            self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
            self.plateau_mswd = mswd

            e = self._modify_error(v, e,
                                   self.plateau_age_error_kind,
                                   mswd=mswd,
                                   include_j_error=self.include_j_error_in_plateau)
            if math.isnan(e):
                e = 0

            return ufloat(v, max(0, e))
Example #17
0
    def _get_plateau_age(self):
        ages, errors, k39 = self._get_steps()

        options = {
            'nsteps': self.pc_nsteps,
            'gas_fraction': self.pc_gas_fraction,
            'force_steps': self.calculate_fixed_plateau_steps
        }

        args = calculate_plateau_age(ages, errors, k39, options=options)
        if args:
            v, e, pidx = args
            if pidx[0] == pidx[1]:
                return

            self.plateau_steps = pidx
            self.plateau_steps_str = '{}-{}'.format(ALPHAS[pidx[0]],
                                                    ALPHAS[pidx[1]])

            self.nsteps = (pidx[1] - pidx[0]) + 1
            # print pidx
            pages, perrs = zip(*[(ages[i], errors[i])
                                 for i in range(pidx[0], pidx[1])])
            mswd = calculate_mswd(pages, perrs)
            self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
            self.plateau_mswd = mswd

            e = self._modify_error(
                v,
                e,
                self.plateau_age_error_kind,
                mswd=mswd,
                include_j_error=self.include_j_error_in_plateau)
            if math.isnan(e):
                e = 0

            return ufloat(v, max(0, e))
Example #18
0
    def attr_stats(self, attr):
        w, sd, sem, (vs, es) = self._calculate_weighted_mean(attr,
                                                             error_kind='both')
        mi, ma, total_dev, mswd, valid_mswd = 0, 0, 0, 0, False
        if len(vs):
            mswd = calculate_mswd(vs, es, wm=w)
            valid_mswd = validate_mswd(mswd, self.nanalyses)
            mi = min(vs)
            ma = max(vs)

            total_dev = (ma - mi) / ma * 100
        else:
            print('atafdsa', attr)

        return {
            'mean': w,
            'sd': sd,
            'sem': sem,
            'mswd': mswd,
            'valid_mswd': valid_mswd,
            'min': mi,
            'max': ma,
            'total_dev': total_dev
        }
Example #19
0
 def get_mswd_tuple(self):
     mswd = self.mswd
     valid_mswd = validate_mswd(mswd, self.nanalyses)
     return mswd, valid_mswd, self.nanalyses
Example #20
0
    def _get_plateau_age(self):
        ans = self.analyses
        v, e = 0, 0
        self.plateau_steps = None
        self.plateau_steps_str = ''
        self.nsteps = 0
        self.plateau_mswd = 0
        self.plateau_mswd_valid = False

        if all((not isinstance(ai, InterpretedAgeGroup) for ai in ans)):
            if ans:
                ages = [ai.age for ai in ans]
                errors = [ai.age_err for ai in ans]

                k39 = [
                    nominal_value(ai.get_computed_value('k39')) for ai in ans
                ]

                options = {
                    'nsteps': self.plateau_nsteps,
                    'gas_fraction': self.plateau_gas_fraction,
                    'overlap_sigma': self.plateau_overlap_sigma,
                    'fixed_steps': self.fixed_steps
                }

                excludes = [i for i, ai in enumerate(ans) if ai.is_omitted()]
                args = calculate_plateau_age(ages,
                                             errors,
                                             k39,
                                             method=self.plateau_method,
                                             options=options,
                                             excludes=excludes)

                if args:
                    v, e, pidx = args
                    if pidx[0] == pidx[1]:
                        return
                    self.plateau_steps = pidx
                    self.plateau_steps_str = '{}-{}'.format(
                        alphas(pidx[0]), alphas(pidx[1]))

                    step_idxs = [
                        i for i in range(pidx[0], pidx[1] + 1)
                        if not ans[i].is_omitted()
                    ]
                    self.nsteps = len(step_idxs)

                    pages = array([ages[i] for i in step_idxs])
                    perrs = array([errors[i] for i in step_idxs])

                    mswd = calculate_mswd(pages, perrs)
                    self.plateau_mswd_valid = validate_mswd(mswd, self.nsteps)
                    self.plateau_mswd = mswd
                    if self.plateau_age_error_kind == SD:
                        e = array(pages).std()
                    else:
                        e = self._modify_error(v,
                                               e,
                                               self.plateau_age_error_kind,
                                               mswd=mswd)
                    if math.isnan(e):
                        e = 0

        a = ufloat(v, max(0, e))
        self._apply_j_err(a,
                          force=self.include_j_error_in_mean
                          or self.include_j_error_in_plateau)

        return a
Example #21
0
 def get_mswd_tuple(self):
     mswd = self.mswd
     valid_mswd = validate_mswd(mswd, self.nanalyses)
     return mswd, valid_mswd, self.nanalyses
Example #22
0
 def valid_mean_mswd(self):
     m = self.mean_mswd
     if m is not None:
         return validate_mswd(m, self.n)