def save_analysis_data_table(self, p):


        # ans=[]
        db=self.processor.db

        with db.session_ctx():
            ias=self.interpreted_ages[:10]

            ans = [si.analysis for ia in ias
                   for si in db.get_interpreted_age_history(ia.id).interpreted_age.sets
                   if si.analysis.tag!='invalid']
            prog = self.processor.open_progress(len(ans), close_at_end=False)
            # hid = db.get_interpreted_age_history(ia.id)
            # dbia = hid.interpreted_age
            # ans.extend([si.analysis for si in db.get_interpreted_age_history(ia.id).interpreted_age.sets
            #         if not si.analysis.tag == 'invalid'])

            # groups=[]

            def gfactory(klass, ia):
                hid = db.get_interpreted_age_history(ia.id)
                ans = (si.analysis for si in hid.interpreted_age.sets \
                       if not si.analysis.tag == 'invalid')
                ans = self.processor.make_analyses(ans,
                                                   calculate_age=True, use_cache=False,
                                                   progress=prog)
                return klass(sample=ans[0].sample, analyses=ans)

            #partition fusion vs stepheat
            fusion, step_heat=partition(ias, lambda x: x.age_kind=='Weighted Mean')
            # for ia in step_heat:
            #     groups.append(klass(sample=ans[0].sample,
            #                         analyses=ans))
            shgroups=[gfactory(StepHeatAnalysisGroup, ia) for ia in step_heat]
            fgroups=[gfactory(AnalysisGroup, ia) for ia in fusion]
            prog.close()

        head, ext=os.path.splitext(p)
        if shgroups:
            w = StepHeatPDFTableWriter()
            p='{}.step_heat_data{}'.format(head, ext)
            w.build(p, shgroups, title=self.get_title())
        if fgroups:
            w=FusionPDFTableWriter()
            p='{}.fusion_data{}'.format(head, ext)
            w.build(p,fgroups, title=self.get_title())
    def save_analysis_data_table(self, p):

        # ans=[]
        db = self.processor.db

        with db.session_ctx():
            ias = self.interpreted_ages[:10]

            ans = [
                si.analysis
                for ia in ias
                for si in db.get_interpreted_age_history(ia.id).interpreted_age.sets
                if si.analysis.tag != "invalid"
            ]
            prog = self.processor.open_progress(len(ans), close_at_end=False)
            # hid = db.get_interpreted_age_history(ia.id)
            # dbia = hid.interpreted_age
            # ans.extend([si.analysis for si in db.get_interpreted_age_history(ia.id).interpreted_age.sets
            #         if not si.analysis.tag == 'invalid'])

            # groups=[]

            def gfactory(klass, ia):
                hid = db.get_interpreted_age_history(ia.id)
                ans = (si.analysis for si in hid.interpreted_age.sets if not si.analysis.tag == "invalid")
                ans = self.processor.make_analyses(ans, calculate_age=True, use_cache=False, progress=prog)
                return klass(sample=ans[0].sample, analyses=ans)

            # partition fusion vs stepheat
            fusion, step_heat = partition(ias, lambda x: x.age_kind == "Weighted Mean")
            # for ia in step_heat:
            #     groups.append(klass(sample=ans[0].sample,
            #                         analyses=ans))
            shgroups = [gfactory(StepHeatAnalysisGroup, ia) for ia in step_heat]
            fgroups = [gfactory(AnalysisGroup, ia) for ia in fusion]
            prog.close()

        head, ext = os.path.splitext(p)
        if shgroups:
            w = StepHeatPDFTableWriter()
            p = "{}.step_heat_data{}".format(head, ext)
            w.build(p, shgroups, title=self.get_title())
        if fgroups:
            w = FusionPDFTableWriter()
            p = "{}.fusion_data{}".format(head, ext)
            w.build(p, fgroups, title=self.get_title())
    def _save_pdf_data_table(self, root, ias, step_heat_title, fusion_title, spectrometer, auto_view=False):

        shgroups, fgroups = self._assemble_groups(ias)
        ext = '.pdf'
        if shgroups:
            w = StepHeatPDFTableWriter()
            # name = '{}_{}_step_heatdata'.format(self.name, spectrometer)
            name = '{}stepheatdata'.format(spectrometer)
            p, _ = unique_path(root, name, extension=ext)

            iagroups, shgroups = zip(*shgroups)
            w.build(p, shgroups, title=step_heat_title)
            if auto_view:
                view_file(p)

        if fgroups:
            w = FusionPDFTableWriter()
            # name = '{}_{}_fusion_data'.format(self.name, spectrometer)
            name = '{}fusiondata'.format(spectrometer)
            p, _ = unique_path(root, name, extension=ext)
            iagroups, fgroups = zip(*fgroups)
            w.build(p, fgroups, title=fusion_title)
            if auto_view:
                view_file(p)