Example #1
0
    def _make_tables(self, record):
        age = record.age.nominal_value
        age_error = record.age.std_dev
        age_perror = calc_percent_error(age, age_error, n=3)
        woj_age_error = record.age_error_wo_j
        woj_age_perror = calc_percent_error(age, woj_age_error, n=3)

        ar40_39 = record.Ar40_39.nominal_value
        ar40_39_error = record.Ar40_39.std_dev
        ar40_39_perror = calc_percent_error(ar40_39, ar40_39_error, n=3)

        tt = TextTable(
            HeaderRow(TextCell(''), TextCell('Value'),
                      TextCell(u'{}1{}'.format(PLUSMINUS, SIGMA)),
                      TextCell('% error')),
            TextRow(
                BoldCell('Age ({}):'.format(record.arar_constants.age_units)),
                TextCell(floatfmt(age)), TextCell(floatfmt(age_error)),
                TextCell(age_perror, n=2)),
            TextRow(BoldCell('w/o J err:'), TextCell(''),
                    TextCell(floatfmt(woj_age_error)),
                    TextCell(woj_age_perror)),
            TextRow(
                BoldCell('40Ar*/39Ar:'),
                TextCell(floatfmt(record.Ar40_39.nominal_value)),
                TextCell(floatfmt(record.Ar40_39.std_dev)),
                TextCell(ar40_39_perror),
                #                                HtmlCell('<sup>40</sup>Ar*/<sup>39</sup>Ar',
                #                                         bold=True)
            ),
            border=True)
        return [tt]
Example #2
0
    def _add_info(self, plot, reg, label=None, text_color='black'):
        intercept = reg.predict(0)
        err = reg.get_intercept_error()
        mswd = reg.mswd
        n = reg.n

        try:
            inv_intercept = intercept ** -1
            p = calc_percent_error(intercept, err, scale=1)

            err = inv_intercept * p
            mse = err * mswd ** 0.5
            v, e, p, mse = floatfmt(inv_intercept, s=3), floatfmt(err, s=3), floatfmt(p * 100, n=2), floatfmt(mse, s=3)
        except ZeroDivisionError:
            v, e, p, mse = 'NaN', 'NaN', 'NaN', 'NaN'

        ratio_line = u'Ar40/Ar36= {} {}{} ({}%) mse= {}'.format(v, PLUSMINUS, e, p, mse)

        u = self._ref_age_units

        age = self.analysis_group.isochron_age

        v = age.nominal_value
        e = age.std_dev
        p = format_percent_error(v, e)

        mse_age = e * mswd ** 0.5

        valid = validate_mswd(mswd, n)
        mswd = '{:0.2f}'.format(mswd)
        if not valid:
            mswd = '*{}'.format(mswd)
            # n = len([ai for ai in self.analyses if ai.temp_status == 0])
        # mswd = 'NaN'
        age_line = u'Age= {} {}{} ({}%) {}. mse= {}'.format(floatfmt(v, n=3),
                                                            PLUSMINUS,
                                                            floatfmt(e, n=4, s=3), p, u,
                                                            floatfmt(mse_age, s=3))
        mswd_line = 'N= {} mswd= {}'.format(n, mswd)
        if label is None:
            th = 0
            for overlay in plot.overlays:
                if isinstance(overlay, OffsetPlotLabel):
                    w, h = overlay.get_preferred_size()
                    th += h + 2

            label = OffsetPlotLabel(
                offset=(1, th),
                component=plot,
                overlay_position='inside bottom',
                hjustify='left',
                bgcolor='white',

                color=text_color)
            plot.overlays.append(label)
            self._plot_label = label

        lines = u'\n'.join((ratio_line, age_line, mswd_line))
        label.text = u'{}'.format(lines)
        label.request_redraw()
Example #3
0
    def _get_age_string(self):

        a = self.age
        e = self.age_err_wo_j

        pe = calc_percent_error(a, e)

        return u'{:0.3f} +/-{:0.3f} ({}%)'.format(a, e, pe)
Example #4
0
    def _get_age_string(self):

        a = self.age
        e = self.age_err_wo_j

        pe = calc_percent_error(a, e)

        return u'{:0.3f} +/-{:0.3f} ({}%)'.format(a, e, pe)
Example #5
0
    def _calculate_intercept(self, reg):
        intercept = reg.predict(0)
        err = reg.get_intercept_error()

        inv_intercept = intercept ** -1
        p = calc_percent_error(intercept, err, scale=1)

        err = inv_intercept * p
        return inv_intercept, err
Example #6
0
    def _calculate_intercept(self, reg):
        intercept = reg.predict(0)
        err = reg.get_intercept_error()

        inv_intercept = intercept**-1
        p = calc_percent_error(intercept, err, scale=1)

        err = inv_intercept * p
        return inv_intercept, err
Example #7
0
    def _make_tables(self, record):
        age = record.age.nominal_value
        age_error = record.age.std_dev
        age_perror = calc_percent_error(age, age_error, n=3)
        woj_age_error = record.age_error_wo_j
        woj_age_perror = calc_percent_error(age, woj_age_error, n=3)

        ar40_39 = record.Ar40_39.nominal_value
        ar40_39_error = record.Ar40_39.std_dev
        ar40_39_perror = calc_percent_error(ar40_39, ar40_39_error, n=3)

        tt = TextTable(
            HeaderRow(TextCell(''), TextCell('Value'),
                      TextCell(u'{}1{}'.format(PLUSMINUS, SIGMA)),
                      TextCell('% error')
            ),
            TextRow(
                BoldCell('Age ({}):'.format(record.arar_constants.age_units)),
                TextCell(floatfmt(age)),
                TextCell(floatfmt(age_error)),
                TextCell(age_perror, n=2)
            ),
            TextRow(
                BoldCell('w/o J err:'),
                TextCell(''),
                TextCell(floatfmt(woj_age_error)),
                TextCell(woj_age_perror)
            ),
            TextRow(
                BoldCell('40Ar*/39Ar:'),
                TextCell(floatfmt(record.Ar40_39.nominal_value)),
                TextCell(floatfmt(record.Ar40_39.std_dev)),
                TextCell(ar40_39_perror),
                #                                HtmlCell('<sup>40</sup>Ar*/<sup>39</sup>Ar',
                #                                         bold=True)
            ),
            border=True
        )
        return [tt]
Example #8
0
 def _get_baseline_percent_error_text(self, *args):
     b = self.item.baseline
     return calc_percent_error(b.value, b.error)
Example #9
0
 def _get_percent_pred_error(self):
     if self.j and self.jerr:
         return calc_percent_error(self.j, self.jerr)
Example #10
0
 def _get_percent_saved_error(self):
     return calc_percent_error(self.saved_j, self.saved_jerr)
 def _get_percent_pred_error(self):
     if self.j and self.jerr:
         return calc_percent_error(self.j, self.jerr)
Example #12
0
 def _get_percent_mean_error(self):
     if self.mean_jerr and self.mean_jerr:
         return calc_percent_error(self.mean_j, self.mean_jerr)
 def _get_percent_saved_error(self):
     return calc_percent_error(self.saved_j, self.saved_jerr)
 def _get_percent_mean_error(self):
     if self.mean_jerr and self.mean_jerr:
         return calc_percent_error(self.mean_j, self.mean_jerr)
Example #15
0
    def _add_results_info(self, plot, label=None, text_color='black'):

        ag = self.analysis_group

        age = ag.isochron_age
        a = ag.isochron_3640

        n = ag.nanalyses
        mswd = ag.isochron_regressor.mswd

        intercept, err = nominal_value(a), std_dev(a)

        try:
            inv_intercept = intercept ** -1
            p = calc_percent_error(intercept, err, scale=1)
            err = inv_intercept * p * self.options.nsigma
            mse = err * mswd ** 0.5
            sf = self.options.yintercept_sig_figs
            v, e, p, mse = floatfmt(inv_intercept, n=sf, s=3), floatfmt(err, n=sf, s=3), \
                           floatfmt(p * 100, n=2), floatfmt(mse, s=3)
        except ZeroDivisionError:
            v, e, p, mse = 'NaN', 'NaN', 'NaN', 'NaN'

        sample_line = u'{}({})'.format(ag.identifier, ag.sample)
        mse_text = ''
        if self.options.include_4036_mse:
            mse_text = ' MSE= {}'.format(mse)

        ptext = ''
        if self.options.include_percent_error:
            ptext = ' ({}%)'.format(p)

        ratio_line = '<sup>40</sup>Ar/<sup>36</sup>Ar= {} {}{}{}{}'.format(v, PLUSMINUS, e, ptext, mse_text)

        v = nominal_value(age)
        e = std_dev(age) * self.options.nsigma

        p = format_percent_error(v, e)

        mse_age = e * mswd ** 0.5

        valid = validate_mswd(mswd, n)
        mswd = '{:0.2f}'.format(mswd)
        if not valid:
            mswd = '*{}'.format(mswd)

        af = self.options.age_sig_figs

        mse_text = ''
        if self.options.include_age_mse:
            mse_text = ' MSE= {}'.format(floatfmt(mse_age, s=3))

        age_line = u'Age= {} {}{} ({}%) {}{}'.format(floatfmt(v, n=af),
                                                     PLUSMINUS,
                                                     floatfmt(e, n=af, s=3), p, ag.age_units, mse_text)
        mswd_line = 'N= {} MSWD= {}'.format(n, mswd)
        if label is None:
            th = 0
            for overlay in plot.overlays:
                if isinstance(overlay, OffsetPlotLabel):
                    w, h = overlay.get_preferred_size()
                    th += h + self.options.results_info_spacing

            label = OffsetPlotLabel(
                offset=(1, th),
                component=plot,
                overlay_position='inside bottom',
                hjustify='left',
                bgcolor='white',
                font=self.options.results_font,
                color=text_color)
            plot.overlays.append(label)
            self._plot_label = label

        lines = u'\n'.join((sample_line, ratio_line, age_line, mswd_line))
        label.text = u'{}'.format(lines)
        label.bgcolor = plot.bgcolor
        label.request_redraw()
Example #16
0
    def _add_info(self, plot, reg, label=None, text_color='black'):
        intercept = reg.predict(0)
        err = reg.get_intercept_error()
        mswd = reg.mswd
        n = reg.n

        try:
            inv_intercept = intercept**-1
            p = calc_percent_error(inv_intercept, err)

            v = floatfmt(inv_intercept, s=3)
            e = floatfmt(err, s=3)

            mse = err * mswd**0.5
            mse = floatfmt(mse, s=3)
            #v = '{:0.2f}'.format(inv_intercept)
            #e = '{:0.3f}'.format(err)

        except ZeroDivisionError:
            v, e, p, mse = 'NaN', 'NaN', 'NaN', 'NaN'

        ratio_line = 'Ar40/Ar36= {} +/-{} ({}%) mse= {}'.format(v, e, p, mse)

        j = self._ref_j
        u = self._ref_age_units

        #xint = ufloat(reg.x_intercept, reg.x_intercept_error)
        #try:
        #    R = xint ** -1
        #except ZeroDivisionError:
        #    R = 0
        #
        #v, e, mse_age = 0, 0, 0
        #if R > 0:
        #    age = age_equation(j, R, arar_constants=self._ref_constants)

        age = self._age
        v = age.nominal_value
        e = age.std_dev
        mse_age = e * mswd**0.5

        valid = validate_mswd(mswd, n)
        mswd = '{:0.2f}'.format(mswd)
        if not valid:
            mswd = '*{}'.format(mswd)
            #n = len([ai for ai in self.analyses if ai.temp_status == 0])
        #mswd = 'NaN'
        age_line = 'Age= {} +/-{} ({}%) {}. mse= {}'.format(
            floatfmt(v, n=3), floatfmt(e, n=4, s=3), p, u,
            floatfmt(mse_age, s=3))
        mswd_line = 'N= {} mswd= {}'.format(n, mswd)
        if label is None:
            label = OffsetPlotLabel(offset=(0, 50 * self.group_id),
                                    component=plot,
                                    overlay_position='inside bottom',
                                    hjustify='left',
                                    color=text_color)
            plot.overlays.append(label)
            self._plot_label = label

        lines = '\n'.join((ratio_line, age_line, mswd_line))
        label.text = '{}'.format(lines)
        label.request_redraw()
Example #17
0
 def _get_percent_position_jerr(self):
     if self.j and self.position_jerr:
         return calc_percent_error(self.j, self.position_jerr)
Example #18
0
 def _get_value_percent_error_text(self, *args):
     cv = self.item.get_corrected_value()
     return calc_percent_error(cv.nominal_value, cv.std_dev)
Example #19
0
    def _add_results_info(self, plot, label=None, text_color='black'):

        ag = self.analysis_group

        age = ag.isochron_age
        a = ag.isochron_4036

        n = ag.nanalyses
        mswd = ag.isochron_regressor.mswd

        intercept, err = nominal_value(a), std_dev(a)

        try:
            inv_intercept = intercept ** -1
            p = calc_percent_error(intercept, err, scale=1)
            err = inv_intercept * p * self.options.nsigma
            mse = err * mswd ** 0.5
            v, e, p, mse = floatfmt(inv_intercept, s=3), floatfmt(err, s=3), floatfmt(p * 100, n=2), floatfmt(mse, s=3)
        except ZeroDivisionError:
            v, e, p, mse = 'NaN', 'NaN', 'NaN', 'NaN'

        sample_line = u'{}({})'.format(ag.identifier, ag.sample)
        ratio_line = u'Ar40/Ar36= {} {}{} ({}%) mse= {}'.format(v, PLUSMINUS, e, p, mse)

        v = nominal_value(age)
        e = std_dev(age) * self.options.nsigma

        p = format_percent_error(v, e)

        mse_age = e * mswd ** 0.5

        valid = validate_mswd(mswd, n)
        mswd = '{:0.2f}'.format(mswd)
        if not valid:
            mswd = '*{}'.format(mswd)

        age_line = u'Age= {} {}{} ({}%) {}. mse= {}'.format(floatfmt(v, n=3),
                                                            PLUSMINUS,
                                                            floatfmt(e, n=4, s=3), p, ag.age_units,
                                                            floatfmt(mse_age, s=3))
        mswd_line = 'N= {} mswd= {}'.format(n, mswd)
        if label is None:
            th = 0
            for overlay in plot.overlays:
                if isinstance(overlay, OffsetPlotLabel):
                    w, h = overlay.get_preferred_size()
                    th += h + self.options.results_info_spacing

            label = OffsetPlotLabel(
                offset=(1, th),
                component=plot,
                overlay_position='inside bottom',
                hjustify='left',
                bgcolor='white',
                font=self.options.results_font,
                color=text_color)
            plot.overlays.append(label)
            self._plot_label = label

        lines = u'\n'.join((sample_line, ratio_line, age_line, mswd_line))
        label.text = u'{}'.format(lines)
        label.bgcolor = plot.bgcolor
        label.request_redraw()
Example #20
0
 def _get_value_percent_error_text(self, *args):
     cv = self.item.get_corrected_value()
     return calc_percent_error(cv.nominal_value, cv.std_dev)
Example #21
0
 def _get_blank_percent_error_text(self, *args):
     b = self.item.blank
     return calc_percent_error(b.value, b.error)
Example #22
0
 def _get_baseline_percent_error_text(self, *args):
     b = self.item.baseline
     return calc_percent_error(b.value, b.error)
Example #23
0
 def _get_percent_position_jerr(self):
     if self.j and self.position_jerr:
         return calc_percent_error(self.j, self.position_jerr)
Example #24
0
    def _add_info(self, plot, reg, label=None, text_color='black'):
        intercept = reg.predict(0)
        err = reg.get_intercept_error()
        mswd = reg.mswd
        n = reg.n

        try:
            inv_intercept = intercept ** -1
            p = calc_percent_error(inv_intercept, err)

            v = floatfmt(inv_intercept, s=3)
            e = floatfmt(err, s=3)

            mse = err * mswd ** 0.5
            mse = floatfmt(mse, s=3)
            #v = '{:0.2f}'.format(inv_intercept)
            #e = '{:0.3f}'.format(err)

        except ZeroDivisionError:
            v, e, p, mse = 'NaN', 'NaN', 'NaN', 'NaN'

        ratio_line = 'Ar40/Ar36= {} +/-{} ({}%) mse= {}'.format(v, e, p, mse)

        j = self._ref_j
        u = self._ref_age_units

        #xint = ufloat(reg.x_intercept, reg.x_intercept_error)
        #try:
        #    R = xint ** -1
        #except ZeroDivisionError:
        #    R = 0
        #
        #v, e, mse_age = 0, 0, 0
        #if R > 0:
        #    age = age_equation(j, R, arar_constants=self._ref_constants)

        age = self._age
        v = age.nominal_value
        e = age.std_dev
        mse_age = e * mswd ** 0.5

        valid = validate_mswd(mswd, n)
        mswd = '{:0.2f}'.format(mswd)
        if not valid:
            mswd = '*{}'.format(mswd)
            #n = len([ai for ai in self.analyses if ai.temp_status == 0])
        #mswd = 'NaN'
        age_line = 'Age= {} +/-{} ({}%) {}. mse= {}'.format(floatfmt(v, n=3),
                                                            floatfmt(e, n=4, s=3), p, u,
                                                            floatfmt(mse_age, s=3))
        mswd_line = 'N= {} mswd= {}'.format(n, mswd)
        if label is None:
            label = OffsetPlotLabel(
                offset=(0, 50 * self.group_id),
                component=plot,
                overlay_position='inside bottom',
                hjustify='left',
                color=text_color)
            plot.overlays.append(label)
            self._plot_label = label

        lines = '\n'.join((ratio_line, age_line, mswd_line))
        label.text = '{}'.format(lines)
        label.request_redraw()
Example #25
0
 def _get_blank_percent_error_text(self, *args):
     b = self.item.blank
     return calc_percent_error(b.value, b.error)