Example #1
0
    def _easy_func(self, ep, manager):
        db=self.manager.db

        doc = ep.doc('blanks')
        fits = doc['blank_fit_isotopes']
        projects = doc['projects']

        unks = [ai for proj in projects
               for si in db.get_samples(project=proj)
               for ln in si.labnumbers
               for ai in ln.analyses]

        prog=manager.progress
        # prog = self.manager.open_progress(len(ans) + 1)
        #bin analyses
        prog.increase_max(len(unks))

        preceding_fits, non_preceding_fits=map(list,partition(fits, lambda x: x['fit']=='preceding'))
        if preceding_fits:
            for ai in unks:
                if prog.canceled:
                    return
                elif prog.accepted:
                    break
                l, a, s = ai.labnumber.identifier, ai.aliquot, ai.step
                prog.change_message('Save preceding blank for {}-{:02n}{}'.format(l, a, s))
                hist = db.add_history(ai, 'blanks')
                ai.selected_histories.selected_blanks = hist
                for fi in preceding_fits:
                    self._preceding_correct(db, fi, ai, hist)

        #make figure root dir
        if doc['save_figures']:
            root = doc['figure_root']
            r_mkdir(root)

        with no_auto_ctx(self.active_editor):
            if non_preceding_fits:
                for ais in bin_analyses(unks):
                    if prog.canceled:
                        return
                    elif prog.accepted:
                        break

                    self.active_editor.set_items(ais, progress=prog)
                    self.active_editor.find_references(progress=prog)

                    #refresh graph
                    invoke_in_main_thread(self.active_editor.rebuild_graph)

                    if not manager.wait_for_user():
                        return

                    #save a figure
                    if doc['save_figures']:
                        title=self.active_editor.make_title()
                        p=os.path.join(root, add_extension(title,'.pdf'))
                        self.active_editor.save_file(p)

                    self.active_editor.save(progress=prog)

                    self.active_editor.dump_tool()
        return True
    def _easy_func(self, ep, manager):
        db = self.manager.db

        doc = ep.doc('ic')
        # fits = doc['fits']
        projects = doc['projects']
        atype = doc['atype']

        identifiers = doc.get('identifiers')
        if identifiers:
            # unks = [ai for proj in projects
            #         for si in db.get_samples(project=proj)
            #         for ln in si.labnumbers
            #         if str(ln.identifier) in identifiers
            #         for ai in ln.analyses
            #         if ai.measurement.mass_spectrometer.name.lower() in ('jan', 'obama')]
            unks = [ai for ln in identifiers
                    for ai in db.get_labnumber(ln).analyses
                        if not ai.tag=='invalid']

        else:
            unks = [ai for proj in projects
                    for si in db.get_samples(project=proj)
                    for ln in si.labnumbers
                    for ai in ln.analyses
                    if ai.measurement.mass_spectrometer.name.lower() in ('jan', 'obama') and not ai.tag=='invalid']

        prog = manager.progress
        prog.increase_max(len(unks))

        # preceding_fits, non_preceding_fits = map(list, partition(fits, lambda x: x['fit'] == 'preceding'))
        # if preceding_fits:
        #     self.debug('preceding fits for ic_factors not implemented')
        # for ai in unks:
        #     if prog.canceled:
        #         return
        #     elif prog.accepted:
        #         break
        #     l, a, s = ai.labnumber.identifier, ai.aliquot, ai.step
        #     prog.change_message('Save preceding blank for {}-{:02n}{}'.format(l, a, s))
        #     hist = db.add_history(ai, 'blanks')
        #     ai.selected_histories.selected_blanks = hist
        #     for fi in preceding_fits:
        #         self._preceding_correct(db, fi, ai, hist)

        #make figure root dir
        if doc['save_figures']:
            root = doc['figure_root']
            r_mkdir(root)

        # if non_preceding_fits:
        with no_auto_ctx(self.active_editor):
            for ais in bin_analyses(unks):
                if prog.canceled:
                    return
                elif prog.accepted:
                    break

                self.active_editor.set_items(ais, progress=prog)
                self._set_analysis_type(atype, progress=prog)

                self.active_editor.tool.trait_set(analysis_type=atype)

                if not manager.wait_for_user():
                    return

                if not manager.was_skipped():
                    #save a figure
                    if doc['save_figures']:
                        title = self.active_editor.make_title()
                        p = os.path.join(root, add_extension(title, '.pdf'))
                        self.active_editor.save_file(p)

                    self.active_editor.save(progress=prog)
                    self.active_editor.dump_tool()

        return True
Example #3
0
    def _easy_func(self, ep, manager):
        db = self.manager.db

        doc = ep.doc('ic')
        # fits = doc['fits']
        projects = doc['projects']
        atype = doc['atype']

        identifiers = doc.get('identifiers')
        if identifiers:
            # unks = [ai for proj in projects
            #         for si in db.get_samples(project=proj)
            #         for ln in si.labnumbers
            #         if str(ln.identifier) in identifiers
            #         for ai in ln.analyses
            #         if ai.measurement.mass_spectrometer.name.lower() in ('jan', 'obama')]
            unks = [
                ai for ln in identifiers
                for ai in db.get_labnumber(ln).analyses
                if not ai.tag == 'invalid'
            ]

        else:
            unks = [
                ai for proj in projects for si in db.get_samples(project=proj)
                for ln in si.labnumbers for ai in ln.analyses
                if ai.measurement.mass_spectrometer.name.lower() in (
                    'jan', 'obama') and not ai.tag == 'invalid'
            ]

        prog = manager.progress
        prog.increase_max(len(unks))

        # preceding_fits, non_preceding_fits = map(list, partition(fits, lambda x: x['fit'] == 'preceding'))
        # if preceding_fits:
        #     self.debug('preceding fits for ic_factors not implemented')
        # for ai in unks:
        #     if prog.canceled:
        #         return
        #     elif prog.accepted:
        #         break
        #     l, a, s = ai.labnumber.identifier, ai.aliquot, ai.step
        #     prog.change_message('Save preceding blank for {}-{:02n}{}'.format(l, a, s))
        #     hist = db.add_history(ai, 'blanks')
        #     ai.selected_histories.selected_blanks = hist
        #     for fi in preceding_fits:
        #         self._preceding_correct(db, fi, ai, hist)

        #make figure root dir
        if doc['save_figures']:
            root = doc['figure_root']
            r_mkdir(root)

        # if non_preceding_fits:
        with no_auto_ctx(self.active_editor):
            for ais in bin_analyses(unks):
                if prog.canceled:
                    return
                elif prog.accepted:
                    break

                self.active_editor.set_items(ais, progress=prog)
                self._set_analysis_type(atype, progress=prog)

                self.active_editor.tool.trait_set(analysis_type=atype)

                if not manager.wait_for_user():
                    return

                if not manager.was_skipped():
                    #save a figure
                    if doc['save_figures']:
                        title = self.active_editor.make_title()
                        p = os.path.join(root, add_extension(title, '.pdf'))
                        self.active_editor.save_file(p)

                    self.active_editor.save(progress=prog)
                    self.active_editor.dump_tool()

        return True
Example #4
0
    def _easy_func(self, ep, manager):
        db = self.manager.db

        doc = ep.doc('blanks')
        fits = doc['blank_fit_isotopes']
        projects = doc['projects']

        unks = [ai for proj in projects
                for si in db.get_samples(project=proj)
                for ln in si.labnumbers
                for ai in ln.analyses
                if ai.measurement.mass_spectrometer.name == 'MAP'
            and ai.extraction.extraction_device.name in ('Furnace', 'Eurotherm')]
        # for proj in projects:
        #     for si in db.get_samples(project=proj):
        #         for ln in si.labnumbers:
        #             for ai in ln.analyses:
        #                 print ai.measurement.mass_spectrometer.name,ai.extraction.extraction_device.name
        #                 print ai.measurement.mass_spectrometer.name == 'nmgrl map' and ai.extraction.extraction_device.name in ('Furnace','Eurotherm')
        print len(unks)
        prog = manager.progress
        # prog = self.manager.open_progress(len(ans) + 1)
        #bin analyses
        prog.increase_max(len(unks))

        preceding_fits, non_preceding_fits = map(list, partition(fits, lambda x: x['fit'] == 'preceding'))
        if preceding_fits:
            for ai in unks:
                if prog.canceled:
                    return
                elif prog.accepted:
                    break
                l, a, s = ai.labnumber.identifier, ai.aliquot, ai.step
                prog.change_message('Save preceding blank for {}-{:02n}{}'.format(l, a, s))
                hist = db.add_history(ai, 'blanks')
                ai.selected_histories.selected_blanks = hist
                for fi in preceding_fits:
                    self._preceding_correct(db, fi, ai, hist)

        #make figure root dir
        if doc['save_figures']:
            root = doc['figure_root']
            r_mkdir(root)

        with no_auto_ctx(self.active_editor):
            if non_preceding_fits:
                for fi in self.active_editor.tool.fits:
                    fi.fit = 'average'
                    fi.error_type = 'SEM'
                    fi.filter_outliers = True
                    fi.filter_iterations = 1
                    fi.filter_std_devs = 2

                for ais in bin_analyses(unks):
                    if prog.canceled:
                        return
                    elif prog.accepted:
                        break

                    self.active_editor.set_items(ais, progress=prog)
                    self.active_editor.find_references(progress=prog)

                    #refresh graph
                    # invoke_in_main_thread(self.active_editor.rebuild_graph)
                    #
                    # if not manager.wait_for_user():
                    #     return

                    #save a figure
                    if doc['save_figures']:
                        title = self.active_editor.make_title()
                        p = os.path.join(root, add_extension(title, '.pdf'))
                        self.active_editor.save_file(p)

                    self.active_editor.save(progress=prog)

                    self.active_editor.dump_tool()
        return True