Example #1
0
        def calc_j(ai):
            ar40=ai.get_interference_corrected_value('Ar40')
            ar39=ai.get_interference_corrected_value('Ar39')

            # ar40 = ai.isotopes['Ar40'].get_interference_corrected_value()
            # ar39 = ai.isotopes['Ar39'].get_interference_corrected_value()
            return calculate_flux(ar40, ar39, monitor_age)
Example #2
0
    def _make_flux_row(self, ans):

        mR = sum(ai.R for ai in ans) / len(ans)
        j, e = calculate_flux(mR, 1, self.monitor_age)
        r = Row(fontsize=8)
        r.add_item(value='<b>J</b>', span=5)
        r.add_item(value='<b>{}</b>'.format(floatfmt(j)))
        r.add_item(value='<b>{}</b>'.format(floatfmt(e)))

        return r
Example #3
0
    def _make_flux_row(self, ans):

        mR = sum(ai.R for ai in ans) / len(ans)
        j, e = calculate_flux(mR, 1, self.monitor_age)
        r = Row(fontsize=8)
        r.add_item(value='<b>J</b>', span=5)
        r.add_item(value='<b>{}</b>'.format(floatfmt(j)))
        r.add_item(value='<b>{}</b>'.format(floatfmt(e)))

        return r
Example #4
0
        def mean_j(ans):
            ufs = (ai.uF for ai in ans)
            fs, es = zip(*((fi.nominal_value, fi.std_dev) for fi in ufs))
            av, werr = calculate_weighted_mean(fs, es)

            if error_kind == 'SD':
                n = len(fs)
                werr = (sum((av - fs)**2) / (n - 1))**0.5
            elif error_kind == 'SEM, but if MSWD>1 use SEM * sqrt(MSWD)':
                mswd = calculate_mswd(fs, es)
                werr *= (mswd**0.5 if mswd > 1 else 1)

            # reg.trait_set(ys=fs, yserr=es)
            # uf = (reg.predict([0]), reg.predict_error([0]))
            uf = (av, werr)
            return ufloat(*calculate_flux(uf, monitor_age))
Example #5
0
        def mean_j(ans):
            ufs = (ai.uF for ai in ans)
            fs, es = zip(*((fi.nominal_value, fi.std_dev)
                           for fi in ufs))
            av, werr = calculate_weighted_mean(fs, es)

            if error_kind == 'SD':
                n = len(fs)
                werr = (sum((av - fs) ** 2) / (n - 1)) ** 0.5
            elif error_kind == 'SEM, but if MSWD>1 use SEM * sqrt(MSWD)':
                mswd = calculate_mswd(fs, es)
                werr *= (mswd ** 0.5 if mswd > 1 else 1)

            # reg.trait_set(ys=fs, yserr=es)
            # uf = (reg.predict([0]), reg.predict_error([0]))
            uf = (av, werr)
            return ufloat(*calculate_flux(uf, monitor_age))
Example #6
0
def omean_j(ans, error_kind, monitor_age, lambda_k):
    fs = [nominal_value(ai.uF) for ai in ans]
    es = [std_dev(ai.uF) for ai in ans]

    av, werr = calculate_weighted_mean(fs, es)

    if error_kind == SD:
        n = len(fs)
        werr = (sum((av - fs) ** 2) / (n - 1)) ** 0.5
    elif error_kind == MSEM:
        mswd = calculate_mswd(fs, es)
        werr *= (mswd ** 0.5 if mswd > 1 else 1)

    uf = (av, werr)
    j = calculate_flux(uf, monitor_age, lambda_k=lambda_k)

    mswd = calculate_mswd(fs, es)
    return j, mswd
Example #7
0
def mean_j(ans, use_weights, error_kind, monitor_age, lambda_k):
    js = [calculate_flux(ai.uF, monitor_age, lambda_k=lambda_k) for ai in ans]

    fs = [nominal_value(fi) for fi in js]
    es = [std_dev(fi) for fi in js]

    if use_weights:
        klass = WeightedMeanRegressor
    else:
        klass = MeanRegressor

    reg = klass(ys=fs, yserr=es, error_calc_type=error_kind)
    reg.calculate()
    av = reg.predict()
    werr = reg.predict_error(1)

    j = ufloat(av, werr)

    return j, reg.mswd
Example #8
0
def mean_j(ans, error_kind, monitor_age, lambda_k):
    # ufs = (ai.uF for ai in ans)
    # fs, es = zip(*((fi.nominal_value, fi.std_dev)
    #                for fi in ufs))
    fs = [nominal_value(ai.uF) for ai in ans]
    es = [std_dev(ai.uF) for ai in ans]

    av, werr = calculate_weighted_mean(fs, es)

    if error_kind == 'SD':
        n = len(fs)
        werr = (sum((av - fs)**2) / (n - 1))**0.5
    elif error_kind == 'SEM, but if MSWD>1 use SEM * sqrt(MSWD)':
        mswd = calculate_mswd(fs, es)
        werr *= (mswd**0.5 if mswd > 1 else 1)

    # reg.trait_set(ys=fs, yserr=es)
    # uf = (reg.predict([0]), reg.predict_error([0]))
    uf = (av, werr)
    j = calculate_flux(uf, monitor_age, lambda_k=lambda_k)
    # print age_equation(j, uf, lambda_k=lambda_k, scalar=1)
    return j
Example #9
0
def mean_j(ans, error_kind, monitor_age, lambda_k):
    # ufs = (ai.uF for ai in ans)
    # fs, es = zip(*((fi.nominal_value, fi.std_dev)
    #                for fi in ufs))
    fs = [nominal_value(ai.uF) for ai in ans]
    es = [std_dev(ai.uF) for ai in ans]

    av, werr = calculate_weighted_mean(fs, es)

    if error_kind == 'SD':
        n = len(fs)
        werr = (sum((av - fs) ** 2) / (n - 1)) ** 0.5
    elif error_kind == 'SEM, but if MSWD>1 use SEM * sqrt(MSWD)':
        mswd = calculate_mswd(fs, es)
        werr *= (mswd ** 0.5 if mswd > 1 else 1)

    # reg.trait_set(ys=fs, yserr=es)
    # uf = (reg.predict([0]), reg.predict_error([0]))
    uf = (av, werr)
    j = calculate_flux(uf, monitor_age, lambda_k=lambda_k)
    # print age_equation(j, uf, lambda_k=lambda_k, scalar=1)
    return j
Example #10
0
def mean_j(ans, error_kind, monitor_age, lambda_k):
    js = [calculate_flux(ai.uF, monitor_age, lambda_k=lambda_k) for ai in ans]

    fs = [nominal_value(fi) for fi in js]
    es = [std_dev(fi) for fi in js]

    av, werr = calculate_weighted_mean(fs, es)

    mswd = None
    if error_kind == SD:
        n = len(fs)
        werr = (sum((av - fs) ** 2) / (n - 1)) ** 0.5
    elif error_kind == MSEM:
        mswd = calculate_mswd(fs, es)
        werr *= (mswd ** 0.5 if mswd > 1 else 1)

    j = ufloat(av, werr)

    if mswd is None:
        mswd = calculate_mswd(fs, es)

    return j, mswd
Example #11
0
 def model_j(self, monitor_age, lambda_k):
     j = calculate_flux(self.uF, monitor_age, lambda_k=lambda_k)
     return j
Example #12
0
    def _rebuild_graph(self):
        g = self.graph
        g.clear()
        plot1 = g.new_plot(ytitle='Delta Age (ka)',
                           xtitle='Time (s)',
                           padding_left=70,
                           padding_right=25
                           )
        plot2 = g.new_plot(ytitle='Ar39 (fA)',
                           padding_left=70,
                           padding_right=25
                           )
        plot3 = g.new_plot(ytitle='Ar40 (fA)',
                           padding_left=70,
                           padding_right=25
                           )

        Ar40 = self.Ar40.intensity
        Ar39 = self.Ar39.intensity

        if not (Ar40 and Ar39):
            return

        plot2.value_range.low_setting = Ar39 * .95
        plot2.value_range.high_setting = Ar39 * 1.05

        plot3.value_range.low_setting = Ar40 * .95
        plot3.value_range.high_setting = Ar40 * 1.01

        R = Ar40 / Ar39

        xma = self.max_time

        rs = []
        ns = []
        ds = []

        if self.vary_time_zero:
            posts = (15,)
            xs = list(range(0, 15))
            index = xs
        else:
            posts = list(range(5, 30))
            xs = (0,)
            index = posts

        for pi in posts:
            for ti in xs:
    #             subplot(311)
                n = self.calc_intercept(Ar40, pi,
                                        self.Ar40.equil_rate,
                                        self.Ar40.static_rate,
                                        xma, 2,
                                        time_zero=ti
                                        )
    #             subplot(312)
                d = self.calc_intercept(Ar39, pi,
                                        self.Ar39.equil_rate,
                                        self.Ar39.static_rate,
                                        xma, 1,
                                        time_zero=ti)

                ns.append(n)
                ds.append(d)
    #             rs.append(((n / d) - R) / R * 100)
                rs.append((n / d))

#         print ns
#         g.new_series(xs, ns, plotid=2)
#         g.new_series(xs, ds, plotid=1)
#         g.new_series(to, rs, plotid=0)

        mon_age = 28
        j = calculate_flux((Ar40, 0), (Ar39, 0), mon_age)
        ages = [(age_equation(j[0], abs(ri)) - mon_age) * 1000 for ri in rs]
        g.new_series(index, ages, plotid=0)
Example #13
0
    def _rebuild_graph(self):
        g = self.graph
        g.clear()
        plot1 = g.new_plot(ytitle='Delta Age (ka)',
                           xtitle='Time (s)',
                           padding_left=70,
                           padding_right=25)
        plot2 = g.new_plot(ytitle='Ar39 (fA)',
                           padding_left=70,
                           padding_right=25)
        plot3 = g.new_plot(ytitle='Ar40 (fA)',
                           padding_left=70,
                           padding_right=25)

        Ar40 = self.Ar40.intensity
        Ar39 = self.Ar39.intensity

        if not (Ar40 and Ar39):
            return

        plot2.value_range.low_setting = Ar39 * .95
        plot2.value_range.high_setting = Ar39 * 1.05

        plot3.value_range.low_setting = Ar40 * .95
        plot3.value_range.high_setting = Ar40 * 1.01

        R = Ar40 / Ar39

        xma = self.max_time

        rs = []
        ns = []
        ds = []

        if self.vary_time_zero:
            posts = (15, )
            xs = range(0, 15)
            index = xs
        else:
            posts = range(5, 30)
            xs = (0, )
            index = posts

        for pi in posts:
            for ti in xs:
                #             subplot(311)
                n = self.calc_intercept(Ar40,
                                        pi,
                                        self.Ar40.equil_rate,
                                        self.Ar40.static_rate,
                                        xma,
                                        2,
                                        time_zero=ti)
                #             subplot(312)
                d = self.calc_intercept(Ar39,
                                        pi,
                                        self.Ar39.equil_rate,
                                        self.Ar39.static_rate,
                                        xma,
                                        1,
                                        time_zero=ti)

                ns.append(n)
                ds.append(d)
                #             rs.append(((n / d) - R) / R * 100)
                rs.append((n / d))


#         print ns
#         g.new_series(xs, ns, plotid=2)
#         g.new_series(xs, ds, plotid=1)
#         g.new_series(to, rs, plotid=0)

        mon_age = 28
        j = calculate_flux((Ar40, 0), (Ar39, 0), mon_age)
        ages = [(age_equation(j[0], abs(ri)) - mon_age) * 1000 for ri in rs]
        g.new_series(index, ages, plotid=0)
Example #14
0
 def model_j(self, monitor_age, lambda_k):
     j = calculate_flux(self.uF, monitor_age, lambda_k=lambda_k)
     return j
Example #15
0
 def calc_j(ai):
     ar40 = ai.arar_result['rad40']
     ar39 = ai.arar_result['k39']
     return calculate_flux(ar40, ar39, monitor_age)
Example #16
0
 def calc_j(ai):
     ar40 = ai.arar_result['rad40']
     ar39 = ai.arar_result['k39']
     return calculate_flux(ar40, ar39, monitor_age)