Ejemplo n.º 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))
Ejemplo n.º 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))
Ejemplo n.º 3
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))
Ejemplo n.º 4
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
Ejemplo n.º 5
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)
Ejemplo n.º 6
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)
Ejemplo n.º 7
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))
Ejemplo n.º 8
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))
Ejemplo n.º 9
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