def test_find_plateaus_exclude_pass(self): ages, errors, signals, exclude, idx = self._get_test_data_exclude_pass( ) p = Plateau(ages=ages, errors=errors, exclude=exclude, signals=signals) pidx = p.find_plateaus() self.assertEqual(pidx, idx)
def calculate_plateau_age(ages, errors, k39, kind='inverse_variance', method='fleck 1977', options=None): """ ages: list of ages errors: list of corresponding 1sigma errors k39: list of 39ArK signals return age, error """ # print 'ages=array({})'.format(ages) # print 'errors=array({})'.format(errors) # print 'k39=array({})'.format(k39) if options is None: options = {} ages = asarray(ages) errors = asarray(errors) k39 = asarray(k39) force_steps = options.get('force_steps', False) if force_steps: sstep, estep = force_steps sstep, estep = sstep.upper(), estep.upper() if not sstep: sidx = 0 else: sidx = ALPHAS.index(sstep) n = ages.shape[0] - 1 if not estep: eidx = n else: eidx = ALPHAS.index(estep) sidx, eidx = min(sidx, eidx), min(max(sidx, eidx), n) pidx = (sidx, eidx) if sidx < n else None else: from pychron.processing.plateau import Plateau p = Plateau(ages=ages, errors=errors, signals=k39, nsteps=options.get('nsteps', 3), gas_fraction=options.get('gas_fraction', 50)) pidx = p.find_plateaus(method) if pidx: sx = slice(pidx[0], pidx[1] + 1) plateau_ages = ages[sx] if kind == 'vol_fraction': weights = k39[sx] wm, we = average(plateau_ages, weights=weights) else: plateau_errors = errors[sx] wm, we = calculate_weighted_mean(plateau_ages, plateau_errors) return wm, we, pidx
def test_find_plateaus_exclude_pass(self): ages, errors, signals, exclude, idx = self._get_test_data_exclude_pass() p = Plateau(ages=ages, errors=errors, exclude=exclude, signals=signals) pidx = p.find_plateaus() self.assertEqual(pidx, idx)
def calculate_plateau_age(ages, errors, k39, kind='inverse_variance', method=FLECK, options=None, excludes=None): """ ages: list of ages errors: list of corresponding 1sigma errors k39: list of 39ArK signals return age, error """ if options is None: options = {} ages = asarray(ages) errors = asarray(errors) k39 = asarray(k39) fixed_steps = options.get('fixed_steps', False) if fixed_steps and (fixed_steps[0] or fixed_steps[1]): sstep, estep = fixed_steps sstep, estep = sstep.upper(), estep.upper() if not sstep: sidx = 0 else: sidx = alpha_to_int(sstep) n = ages.shape[0] - 1 if not estep: eidx = n else: eidx = alpha_to_int(estep) sidx, eidx = min(sidx, eidx), min(max(sidx, eidx), n) pidx = (sidx, eidx) if sidx < n else None else: from pychron.processing.plateau import Plateau p = Plateau(ages=ages, errors=errors, signals=k39, excludes=excludes, overlap_sigma=options.get('overlap_sigma', 2), nsteps=options.get('nsteps', 3), gas_fraction=options.get('gas_fraction', 50)) pidx = p.find_plateaus(method) if pidx: sx = slice(pidx[0], pidx[1] + 1) plateau_ages = ages[sx] if kind == 'vol_fraction': weights = k39[sx] wm, we = average(plateau_ages, weights=weights) else: plateau_errors = errors[sx] wm, we = calculate_weighted_mean(plateau_ages, plateau_errors) return wm, we, pidx
def calculate_plateau_age(ages, errors, k39, kind='inverse_variance', method='fleck 1977'): """ ages: list of ages errors: list of corresponding 1sigma errors k39: list of 39ArK signals return age, error """ # print 'ages=array({})'.format(ages) # print 'errors=array({})'.format(errors) # print 'k39=array({})'.format(k39) ages = asarray(ages) errors = asarray(errors) k39 = asarray(k39) from pychron.processing.plateau import Plateau p = Plateau(ages=ages, errors=errors, signals=k39) pidx = p.find_plateaus(method) # pidx = find_plateaus(ages, errors, k39, # overlap_sigma=2) if pidx: sx = slice(*pidx) plateau_ages = ages[sx] if kind == 'vol_fraction': weights = k39[sx] wm, we = average(plateau_ages, weights=weights) else: plateau_errors = errors[sx] wm, we = calculate_weighted_mean(plateau_ages, plateau_errors) return wm, we, pidx
def test_find_plateaus_fail1(self): ages, errors, signals, idx = self._get_test_data_fail1() p = Plateau(ages=ages, errors=errors, signals=signals) pidx = p.find_plateaus() self.assertEqual(pidx, idx)
def calculate_plateau_age(ages, errors, k39, kind='inverse_variance', method='fleck 1977', options=None, excludes=None): """ ages: list of ages errors: list of corresponding 1sigma errors k39: list of 39ArK signals return age, error """ # print 'ages=array({})'.format(ages) # print 'errors=array({})'.format(errors) # print 'k39=array({})'.format(k39) if options is None: options = {} ages = asarray(ages) errors = asarray(errors) k39 = asarray(k39) force_steps = options.get('force_steps', False) if force_steps: sstep, estep = force_steps sstep, estep = sstep.upper(), estep.upper() if not sstep: sidx = 0 else: sidx = ALPHAS.index(sstep) n = ages.shape[0] - 1 if not estep: eidx = n else: eidx = ALPHAS.index(estep) sidx, eidx = min(sidx, eidx), min(max(sidx, eidx), n) pidx = (sidx, eidx) if sidx < n else None else: from pychron.processing.plateau import Plateau p = Plateau(ages=ages, errors=errors, signals=k39, excludes=excludes, nsteps=options.get('nsteps', 3), gas_fraction=options.get('gas_fraction', 50)) pidx = p.find_plateaus(method) if pidx: sx = slice(pidx[0], pidx[1] + 1) plateau_ages = ages[sx] if kind == 'vol_fraction': weights = k39[sx] wm, we = average(plateau_ages, weights=weights) else: plateau_errors = errors[sx] wm, we = calculate_weighted_mean(plateau_ages, plateau_errors) return wm, we, pidx