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))
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))
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))
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
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
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
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
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
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))
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}
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
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)
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))
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))
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 }
def get_mswd_tuple(self): mswd = self.mswd valid_mswd = validate_mswd(mswd, self.nanalyses) return mswd, valid_mswd, self.nanalyses
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
def valid_mean_mswd(self): m = self.mean_mswd if m is not None: return validate_mswd(m, self.n)