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]
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()
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)
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)
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
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
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]
def _get_baseline_percent_error_text(self, *args): b = self.item.baseline return calc_percent_error(b.value, b.error)
def _get_percent_pred_error(self): if self.j and self.jerr: return calc_percent_error(self.j, self.jerr)
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)
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)
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()
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()
def _get_percent_position_jerr(self): if self.j and self.position_jerr: return calc_percent_error(self.j, self.position_jerr)
def _get_value_percent_error_text(self, *args): cv = self.item.get_corrected_value() return calc_percent_error(cv.nominal_value, cv.std_dev)
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()
def _get_value_percent_error_text(self, *args): cv = self.item.get_corrected_value() return calc_percent_error(cv.nominal_value, cv.std_dev)
def _get_blank_percent_error_text(self, *args): b = self.item.blank return calc_percent_error(b.value, b.error)
def _get_baseline_percent_error_text(self, *args): b = self.item.baseline return calc_percent_error(b.value, b.error)
def _get_percent_position_jerr(self): if self.j and self.position_jerr: return calc_percent_error(self.j, self.position_jerr)
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()
def _get_blank_percent_error_text(self, *args): b = self.item.blank return calc_percent_error(b.value, b.error)