Beispiel #1
0
    def _make_footnote_rows(self, data, style):
        data.append(Row(height=0.1))
        blanks = self._get_average_blanks()
        fontsize = 6
        height = self.footnote_height
        if blanks:
            co2_blanks, furnace_blanks = blanks
            average_furnace_blanks = 'Average blanks for Furnace: ({Ar40:0.3f}, {Ar39:0.3f}, {Ar38:0.3f}, ' \
                                     '{Ar37:0.3f}, {Ar36:0.3f}), ' \
                                     'x10<sup>-{sens_exp:}</sup> ' \
                                     'for Ar<super>40</super>, Ar<super>39</super>, ' \
                                     'Ar<super>38</super>, Ar<super>37</super>, Ar<super>36</super> ' \
                                     'respectively'.format(**furnace_blanks)

            frow = FooterRow(fontsize=fontsize, height=height)
            frow.add_item(span=-1,
                          value=self._new_paragraph(average_furnace_blanks))
            data.append(frow)

        fr = FootNoteRow(fontsize=fontsize, height=height)

        self._footnotes.append(self._new_paragraph('P: plateau step'))
        txt = ', '.join([fi.text for fi in self._footnotes])
        fr.add_item(value=txt, span=-1)
        data.append(fr)
Beispiel #2
0
    def _make_footnote_rows(self, data, style):
        data.append(Row(height=0.1))
        blanks = self._get_average_blanks()
        fontsize = 6
        height = self.footnote_height
        if blanks:
            co2_blanks, furnace_blanks = blanks
            average_furnace_blanks = 'Average blanks for Furnace: ({Ar40:0.3f}, {Ar39:0.3f}, {Ar38:0.3f}, ' \
                                     '{Ar37:0.3f}, {Ar36:0.3f}), ' \
                                     'x10<sup>-{sens_exp:}</sup> ' \
                                     'for Ar<super>40</super>, Ar<super>39</super>, ' \
                                     'Ar<super>38</super>, Ar<super>37</super>, Ar<super>36</super> ' \
                                     'respectively'.format(**furnace_blanks)

            frow = FooterRow(fontsize=fontsize, height=height)
            frow.add_item(span=-1, value=self._new_paragraph(average_furnace_blanks))
            data.append(frow)

        fr = FootNoteRow(fontsize=fontsize, height=height)

        self._footnotes.append(self._new_paragraph('P: plateau step'))
        txt = ', '.join([fi.text for fi in self._footnotes])
        fr.add_item(value=txt, span=-1)
        data.append(fr)
Beispiel #3
0
    def _make_footnote_rows(self, data, style):
        data.append(Row(height=0.1))
        height = self.footnote_height
        blanks = self._get_average_blanks()
        if blanks:
            co2_blanks, furnace_blanks = blanks
            average_co2_blanks = 'Average blanks for CO<sub>2</sub>: ({Ar40:0.3f}, {Ar39:0.3f}, {Ar38:0.3f}, ' \
                                 '{Ar37:0.3f}, {Ar36:0.3f}), ' \
                                 'x10<sup>-{sens_exp:}</sup> ' \
                                 'for Ar<super>40</super>, Ar<super>39</super>, ' \
                                 'Ar<super>38</super>, Ar<super>37</super>, Ar<super>36</super> ' \
                                 'respectively'.format(**co2_blanks)
            crow = FooterRow(fontsize=6, height=height)
            crow.add_item(span=-1, value=self._new_paragraph(average_co2_blanks))
            data.append(crow)

        def factory(f):
            r = FootNoteRow(fontsize=6, height=height)
            r.add_item(value=f)
            return r

        data.extend([factory(fi) for fi in self._footnotes])

        #         _get_idxs = lambda x: self._get_idxs(rows, x)
        _get_se = lambda x: (x[0][0], x[-1][0])
        # set for footnot rows
        footnote_idxs = self._get_idxs(data, FootNoteRow)
        sidx, eidx = _get_se(footnote_idxs)
        style.add('VALIGN', (0, sidx), (-1, eidx), 'MIDDLE')
        for idx, _v in footnote_idxs:
            style.add('SPAN', (0, idx), (-1, idx))


            # ===============================================================================

            # ============= EOF =============================================
            # class TableSpec(HasTraits):
            #     status_width = Int(5)
            #     id_width = Int(20)
            #     power_width = Int(30)
            #     moles_width = Int(50)
            #
            #
            #     ar40_width = DefaultInt(value=45)
            #     ar40_error_width = DefaultInt()
            #     ar39_width = DefaultInt(value=45)
            #     ar39_error_width = DefaultInt()
            #     ar38_width = DefaultInt()
            #     ar38_error_width = DefaultInt()
            #     ar37_width = DefaultInt()
            #     ar37_error_width = DefaultInt()
            #     ar36_width = DefaultInt()
            #     ar36_error_width = DefaultInt(value=50)
            #def _make_meta(self, analyses, style, include_footnotes=False):
            #    ref = analyses[0]
            #    j = ref.j
            #
            #    #ic = ref.ic_factor
            #    ic = (1, 0)
            #    sample = ref.sample
            #    labnumber = ref.labnumber
            #    material = ref.material
            #
            #    igsn = ''
            #
            #    if not isinstance(j, tuple):
            #        j = j.nominal_value, j.std_dev
            #
            #    if not isinstance(ic, tuple):
            #        ic = ic.nominal_value, ic.std_dev
            #
            #    line1 = Row(fontsize=8)
            #    line1.add_item(value=NamedParameter('Sample', sample), span=5)
            #    line1.add_item(value=NamedParameter('Lab #', labnumber), span=2)
            #
            #    js = u'{:0.2E} \u00b1{:0.2E}'.format(j[0], j[1])
            #    line1.add_item(value=NamedParameter('J', js), span=3)
            #    ics = u'{:0.3f} \u00b1{:0.4f}'.format(ic[0], ic[1])
            #    if include_footnotes:
            #        foot = self._make_footnote('IC',
            #                                   'IC Factor',
            #                                   'H1/CDD intercalibration',
            #                                   '<b>IC</b>',
            #                                   link_extra=u': {}'.format(ics))
            #    else:
            #        foot = NamedParameter('IC', ics)
            #
            #    line1.add_item(value=foot, span=3)
            #
            #    line2 = Row(fontsize=8)
            #    line2.add_item(value=NamedParameter('Material', material), span=5)
            #    line2.add_item(value=NamedParameter('IGSN', igsn), span=2)
            #
            #    #         self._sample_summary_row1 = line1
            #    #         self._sample_summary_row2 = line2
            #    title = False
            #    title_row = 0
            #    sample_row = 0
            #    if title:
            #        sample_row += 1
            #
            #    style.add('LINEBELOW', (0, sample_row), (-1, sample_row), 1.5, colors.black)
            #
            #    return [line1, line2]

            #def _make_header(self, style):
            #    sigma = u'\u00b1 1\u03c3'
            #    #         sigma = self._plusminus_sigma()
            #    super_ar = lambda x: '{}Ar'.format(Superscript(x))
            #
            #    _102fa = '(10{} fA)'.format(Superscript(2))
            #    _103fa = '(10{} fA)'.format(Superscript(3))
            #    minus_102fa = '(10{} fA)'.format(Superscript(-2))
            #
            #    #         blank = self._make_footnote('BLANK',
            #    #                                    'Blank Type', 'LR= Linear Regression, AVE= Average',
            #    #                                    'Blank')
            #    #         blank = 'Blank Type'
            #    line = [
            #        ('', ''),
            #        ('N', ''),
            #        (self.extract_label, self.extract_units),
            #        (super_ar(40), ''),
            #        (super_ar(40), _103fa), (sigma, ''),
            #        (super_ar(39), _103fa), (sigma, ''),
            #        (super_ar(38), ''), (sigma, ''),
            #        (super_ar(37), ''), (sigma, ''),
            #        (super_ar(36), ''), (sigma, minus_102fa),
            #        ('%{}*'.format(super_ar(40)), ''),
            #        ('{}*/{}{}'.format(super_ar(40),
            #                           super_ar(39),
            #                           Subscript('K')), ''),
            #        ('Age', '(Ma)'), (sigma, ''),
            #        ('K/Ca', ''),
            #        (sigma, ''),
            #        #                 (blank, 'type'),
            #        #                 (super_ar(40), ''), (sigma, ''),
            #        #                 (super_ar(39), ''), (sigma, ''),
            #        #                 (super_ar(38), ''), (sigma, ''),
            #        #                 (super_ar(37), ''), (sigma, ''),
            #        #                 (super_ar(36), ''), (sigma, ''),
            #    ]
            #
            #    name_row, unit_row = zip(*line)
            #
            #    default_fontsize = 8
            #    nrow = Row(fontsize=default_fontsize)
            #    for i, ni in enumerate(name_row):
            #        nrow.add_item(value=ni)
            #
            #    default_fontsize = 7
            #    urow = Row(fontsize=default_fontsize)
            #    for ni in unit_row:
            #        urow.add_item(value=ni)
            #
            #    name_row_idx = 2
            #    unit_row_idx = 3
            #    # set style for name header
            #    style.add('LINEABOVE', (0, name_row_idx),
            #              (-1, name_row_idx), 1.5, colors.black)
            #
            #    # set style for unit header
            #    style.add('LINEBELOW', (0, unit_row_idx),
            #              (-1, unit_row_idx), 1.5, colors.black)
            #
            #    return [
            #        nrow,
            #        urow
            #    ]
Beispiel #4
0
    def _make_footer_rows(self, data, style):
        rows = []
        df = 6
        height = self.footnote_height
        for v in ('<b>Constants used</b>', '<b>Atmospheric argon ratios</b>'):
            row = FooterRow(fontsize=df, height=height)
            row.add_item(value=v, span=-1)
            rows.append(row)
            for i in range(18):
                row.add_item(value='')

        ref = self._ref
        arar_constants = ref.arar_constants
        for n, d, key in ((40, 36, 'atm4036'),
                          (40, 38, 'atm4038')):
            row = FooterRow(fontsize=df, height=height)
            row.add_item(value='({}Ar/{}Ar){}'.format(
                Superscript(n),
                Superscript(d),
                Subscript('A')),
                         span=3)

            vv = getattr(arar_constants, key)
            v, e = floatfmt(vv.nominal_value, n=1), floatfmt(vv.std_dev, n=1)

            cite_key = '{}_citation'.format(key)
            r = getattr(arar_constants, cite_key)

            row.add_item(value=u'{} \u00b1{}'.format(v, e),
                         span=2)
            row.add_item(value=r, span=-1)
            rows.append(row)

        row = FooterRow(fontsize=df, height=height)
        row.add_item(value='<b>Interferring isotope production ratios</b>', span=-1)
        rows.append(row)

        for n, d, s, key in (
                (40, 39, 'K', 'k4039'),
                (38, 39, 'K', 'k3839'),
                (37, 39, 'K', 'k3739'),
                (39, 37, 'Ca', 'ca3937'),
                (38, 37, 'Ca', 'ca3837'),
                (36, 37, 'Ca', 'ca3637')):
            row = FooterRow(fontsize=df, height=height)
            row.add_item(value='({}Ar/{}Ar){}'.format(
                Superscript(n),
                Superscript(d),
                Subscript(s)),
                         span=3)

            vv = ref.interference_corrections[key]
            v, e = floatfmt(vv.nominal_value, use_scientific=True), floatfmt(vv.std_dev, use_scientific=True)
            row.add_item(value=u'{} \u00b1{}'.format(v, e),
                         span=2)
            rows.append(row)

        row = FooterRow(fontsize=df, height=height)
        row.add_item(value='<b>Decay constants</b>', span=-1)
        rows.append(row)

        for i, E, dl, key in (
                (40, 'K', u'\u03BB\u03B5', 'lambda_b'),
                (40, 'K', u'\u03BB\u03B2', 'lambda_e'),
                (39, 'Ar', '', 'lambda_Ar39'),
                (37, 'Ar', '', 'lambda_Ar37')):
            vv = getattr(arar_constants, key)
            v, e = floatfmt(vv.nominal_value, use_scientific=True), floatfmt(vv.std_dev, use_scientific=True)

            cite_key = '{}_citation'.format(key)
            r = getattr(arar_constants, cite_key)

            row = FooterRow(fontsize=df, height=height)
            row.add_item(value=u'{}{} {}'.format(Superscript(i), E, dl), span=3)
            row.add_item(value=u'{} \u00b1{} a{}'.format(v, e, Superscript(-1)), span=3)
            row.add_item(value=r, span=-1)
            rows.append(row)

        data.extend(rows)

        _get_idxs = lambda x: self._get_idxs(data, x)
        _get_se = lambda x: (x[0][0], x[-1][0])

        footer_idxs = _get_idxs(FooterRow)
        sidx, eidx = _get_se(footer_idxs)
        style.add('VALIGN', (0, sidx), (-1, eidx), 'MIDDLE')

        return rows
Beispiel #5
0
    def _make_footer_rows(self, data, style):
        rows = []
        df = 6
        for v in ('<b>Constants used</b>', '<b>Atmospheric argon ratios</b>'):
            row = FooterRow(fontsize=df)
            row.add_item(value=v, span=-1)
            rows.append(row)
            for i in range(19):
                row.add_item(value='')

        for n, d, v, e, r in (
            (40, 36, 295.5, 0.5, 'Nier (1950)'),
            (40, 38, 0.1880, 0.5, 'Nier (1950)'),
        ):
            row = FooterRow(fontsize=df)
            row.add_item(value='({}Ar/{}Ar){}'.format(
                Superscript(n),
                Superscript(d),
                Subscript('A'),
            ),
                         span=3
            )
            row.add_item(value=u'{} \u00b1{}'.format(v, e),
                         span=2)
            row.add_item(value=r, span=-1)
            rows.append(row)
            #             row.add_item(value='')
        #             rows.append(row)

        row = FooterRow(fontsize=df)
        row.add_item(value='<b>Interferring isotope production ratios</b>', span=-1)
        rows.append(row)
        for n, d, s, v, e, r in (
            (40, 39, 'K', 295.5, 0.5, 'Nier (1950)'),
            (38, 39, 'K', 0.1880, 0.5, 'Nier (1950)'),
            (37, 39, 'K', 0.1880, 0.5, 'Nier (1950)'),
            (39, 37, 'Ca', 295.5, 0.5, 'Nier (1950)'),
            (38, 37, 'Ca', 0.1880, 0.5, 'Nier (1950)'),
            (36, 37, 'Ca', 0.1880, 0.5, 'Nier (1950)'),
        ):
            row = FooterRow(fontsize=df)
            row.add_item(value='({}Ar/{}Ar){}'.format(
                Superscript(n),
                Superscript(d),
                Subscript(s),
            ),
                         span=3
            )
            row.add_item(value=u'{} \u00b1{}'.format(v, e),
                         span=2)
            row.add_item(value=r, span=-1)
            rows.append(row)

        row = FooterRow(fontsize=df)
        row.add_item(value='<b>Decay constants</b>', span=-1)
        rows.append(row)

        for i, E, dl, v, e, r in (
            (40, 'K', u'\u03BB\u03B5', 1, 0, 'Foo (1990)'),
            (40, 'K', u'\u03BB\u03B2', 1, 0, 'Foo (1990)'),
            (39, 'Ar', '', 1, 0, 'Foo (1990)'),
            (37, 'Ar', '', 1, 0, 'Foo (1990)'),
        ):
            row = FooterRow(fontsize=df)
            row.add_item(value=u'{}{} {}'.format(Superscript(i), E, dl), span=3)
            row.add_item(value=u'{} \u00b1{} a{}'.format(v, e, Superscript(-1)), span=2)
            row.add_item(value=r, span=-1)
            rows.append(row)

        data.extend(rows)

        _get_idxs = lambda x: self._get_idxs(data, x)
        _get_se = lambda x: (x[0][0], x[-1][0])

        footer_idxs = _get_idxs(FooterRow)
        sidx, eidx = _get_se(footer_idxs)
        style.add('VALIGN', (0, sidx), (-1, eidx), 'MIDDLE')

        #         for idx, v in footer_idxs:
        #             for si, se in v.spans:
        #                 style.add('SPAN', (si, idx), (se, idx))

        return rows

        #===============================================================================

#
#===============================================================================

#============= EOF =============================================
# class TableSpec(HasTraits):
#     status_width = Int(5)
#     id_width = Int(20)
#     power_width = Int(30)
#     moles_width = Int(50)
#
#
#     ar40_width = DefaultInt(value=45)
#     ar40_error_width = DefaultInt()
#     ar39_width = DefaultInt(value=45)
#     ar39_error_width = DefaultInt()
#     ar38_width = DefaultInt()
#     ar38_error_width = DefaultInt()
#     ar37_width = DefaultInt()
#     ar37_error_width = DefaultInt()
#     ar36_width = DefaultInt()
#     ar36_error_width = DefaultInt(value=50)
        #def _make_meta(self, analyses, style, include_footnotes=False):
        #    ref = analyses[0]
        #    j = ref.j
        #
        #    #ic = ref.ic_factor
        #    ic = (1, 0)
        #    sample = ref.sample
        #    labnumber = ref.labnumber
        #    material = ref.material
        #
        #    igsn = ''
        #
        #    if not isinstance(j, tuple):
        #        j = j.nominal_value, j.std_dev
        #
        #    if not isinstance(ic, tuple):
        #        ic = ic.nominal_value, ic.std_dev
        #
        #    line1 = Row(fontsize=8)
        #    line1.add_item(value=NamedParameter('Sample', sample), span=5)
        #    line1.add_item(value=NamedParameter('Lab #', labnumber), span=2)
        #
        #    js = u'{:0.2E} \u00b1{:0.2E}'.format(j[0], j[1])
        #    line1.add_item(value=NamedParameter('J', js), span=3)
        #    ics = u'{:0.3f} \u00b1{:0.4f}'.format(ic[0], ic[1])
        #    if include_footnotes:
        #        foot = self._make_footnote('IC',
        #                                   'IC Factor',
        #                                   'H1/CDD intercalibration',
        #                                   '<b>IC</b>',
        #                                   link_extra=u': {}'.format(ics))
        #    else:
        #        foot = NamedParameter('IC', ics)
        #
        #    line1.add_item(value=foot, span=3)
        #
        #    line2 = Row(fontsize=8)
        #    line2.add_item(value=NamedParameter('Material', material), span=5)
        #    line2.add_item(value=NamedParameter('IGSN', igsn), span=2)
        #
        #    #         self._sample_summary_row1 = line1
        #    #         self._sample_summary_row2 = line2
        #    title = False
        #    title_row = 0
        #    sample_row = 0
        #    if title:
        #        sample_row += 1
        #
        #    style.add('LINEBELOW', (0, sample_row), (-1, sample_row), 1.5, colors.black)
        #
        #    return [line1, line2]

        #def _make_header(self, style):
        #    sigma = u'\u00b1 1\u03c3'
        #    #         sigma = self._plusminus_sigma()
        #    super_ar = lambda x: '{}Ar'.format(Superscript(x))
        #
        #    _102fa = '(10{} fA)'.format(Superscript(2))
        #    _103fa = '(10{} fA)'.format(Superscript(3))
        #    minus_102fa = '(10{} fA)'.format(Superscript(-2))
        #
        #    #         blank = self._make_footnote('BLANK',
        #    #                                    'Blank Type', 'LR= Linear Regression, AVE= Average',
        #    #                                    'Blank')
        #    #         blank = 'Blank Type'
        #    line = [
        #        ('', ''),
        #        ('N', ''),
        #        (self.extract_label, self.extract_units),
        #        (super_ar(40), ''),
        #        (super_ar(40), _103fa), (sigma, ''),
        #        (super_ar(39), _103fa), (sigma, ''),
        #        (super_ar(38), ''), (sigma, ''),
        #        (super_ar(37), ''), (sigma, ''),
        #        (super_ar(36), ''), (sigma, minus_102fa),
        #        ('%{}*'.format(super_ar(40)), ''),
        #        ('{}*/{}{}'.format(super_ar(40),
        #                           super_ar(39),
        #                           Subscript('K')), ''),
        #        ('Age', '(Ma)'), (sigma, ''),
        #        ('K/Ca', ''),
        #        (sigma, ''),
        #        #                 (blank, 'type'),
        #        #                 (super_ar(40), ''), (sigma, ''),
        #        #                 (super_ar(39), ''), (sigma, ''),
        #        #                 (super_ar(38), ''), (sigma, ''),
        #        #                 (super_ar(37), ''), (sigma, ''),
        #        #                 (super_ar(36), ''), (sigma, ''),
        #    ]
        #
        #    name_row, unit_row = zip(*line)
        #
        #    default_fontsize = 8
        #    nrow = Row(fontsize=default_fontsize)
        #    for i, ni in enumerate(name_row):
        #        nrow.add_item(value=ni)
        #
        #    default_fontsize = 7
        #    urow = Row(fontsize=default_fontsize)
        #    for ni in unit_row:
        #        urow.add_item(value=ni)
        #
        #    name_row_idx = 2
        #    unit_row_idx = 3
        #    # set style for name header
        #    style.add('LINEABOVE', (0, name_row_idx),
        #              (-1, name_row_idx), 1.5, colors.black)
        #
        #    # set style for unit header
        #    style.add('LINEBELOW', (0, unit_row_idx),
        #              (-1, unit_row_idx), 1.5, colors.black)
        #
        #    return [
        #        nrow,
        #        urow
        #    ]
    def _make_footnote_table(self):
        style = self._new_style(debug_grid=False)
        style.add('BACKGROUND', (0, 0), (-1, -1), colors.lightgrey)

        l = ', '.join(['{}= {}'.format(k, v) for k, v in rock_type_map.items()[:5]])
        l2 = ', '.join(['{}= {}'.format(k, v) for k, v in rock_type_map.items()[5:9]])
        l3 = ', '.join(['{}= {}'.format(k, v) for k, v in rock_type_map.items()[9:]])
        r = FooterRow(fontsize=7)
        r.add_item(value='Rock Types: {}'.format(l), span=7)

        r2 = FooterRow(fontsize=7)
        r2.add_blank_item(1)
        r2.add_item(value=l2, span=6)

        r3 = FooterRow(fontsize=7)
        r3.add_blank_item(1)
        r3.add_item(value=l3, span=6)

        r4 = FooterRow(fontsize=7)
        r4.add_item(value='Materials: GMC= Groundmass Concentrate', span=7)
        fdata = [r, r2, r3, r4]
        ft = self._new_table(style, fdata)
        return ft
    def _make_footnote_table(self):
        style = self._new_style(debug_grid=False)
        style.add('BACKGROUND', (0, 0), (-1, -1), colors.lightgrey)

        l = ', '.join(['{}= {}'.format(k, v) for k, v in rock_type_map.items()[:5]])
        l2 = ', '.join(['{}= {}'.format(k, v) for k, v in rock_type_map.items()[5:9]])
        l3 = ', '.join(['{}= {}'.format(k, v) for k, v in rock_type_map.items()[9:]])
        r = FooterRow(fontsize=7)
        r.add_item(value='Rock Types: {}'.format(l), span=7)

        r2 = FooterRow(fontsize=7)
        r2.add_blank_item(1)
        r2.add_item(value=l2, span=6)

        r3 = FooterRow(fontsize=7)
        r3.add_blank_item(1)
        r3.add_item(value=l3, span=6)

        r4 = FooterRow(fontsize=7)
        r4.add_item(value='Materials: GMC= Groundmass Concentrate', span=7)
        fdata = [r, r2, r3, r4]
        ft = self._new_table(style, fdata)
        return ft