Пример #1
0
    def select_data_reduction_tag(self):
        from pychron.processing.tagging.data_reduction_tags import SelectDataReductionTagModel
        from pychron.processing.tagging.views import SelectDataReductionTagView

        model = SelectDataReductionTagModel()
        db = self.manager.db
        with db.session_ctx():
            items = self._get_selection()
            uuids = [it.uuid for it in items] if items else None
            tags = db.get_data_reduction_tags(uuids=uuids)
            model.load_tags(tags)

        v = SelectDataReductionTagView(model=model)
        info = v.edit_traits()
        if info.result:
            stag = model.selected
            self.debug('setting data reduction tag {}'.format(stag.name))
            with db.session_ctx():
                dbtag = db.get_data_reduction_tag(stag.id)

                def func(ai, prog, i, n):
                    if prog:
                        prog.change_message('setting data reduction tag for {}'.format(ai.record_id))

                    dban = ai.analysis
                    dban.data_reduction_tag = dbtag

                progress_iterator(dbtag.analyses, func)
Пример #2
0
    def _checkout_analyses(self, ans, msg='Added'):
        #make dbanalyses
        ans = self.manager.make_analyses(ans, unpack=True, calculate_age=True)

        #export to yaml files
        exp=YAMLAnalysisExporter()
        def func(ai, prog, i, n):
            exp.add(ai)
            p= os.path.join(self.workspace.path,'{}.yaml'.format(ai.record_id))
            exp.destination.destination = p

            exp.export()
            # timethis(exp.export, msg='export')
            exp.clear()

            #update manifest
            self.workspace.add_to_manifest(p)
            # timethis(self.workspace.add_to_manifest, args=(p,), msg='a')

            #add to repositiory
            self.workspace.add_analysis(p, commit=False)
            self.workspace.add_analysis_to_index(ai)
            # timethis(self.workspace.add_analysis, args=(p,),
            #          kwargs={'commit':False},
            #          msg='add to git')
            if prog:
                prog.change_message('{} {} to workspace'.format(msg, ai.record_id))

        progress_iterator(ans, func, threshold=1)
        self.workspace.add_manifest_to_index()
        self.workspace.commit('{} Analyses {} to {}'.format(msg, ans[0].record_id,
                                                               ans[-1].record_id))
Пример #3
0
    def run(self, state):
        po = self.plotter_options

        keys = [fi.name for fi in list(reversed([pi for pi in po.get_plotable_aux_plots()]))]

        def load_raw(x, prog, i, n):
            x.load_raw_data(keys)

        progress_iterator(state.unknowns, load_raw, threshold=1)
        super(RegressionSeriesNode, self).run(state)
Пример #4
0
    def run(self, state):
        if state.saveable_irradiation_positions:
            xs = [x for x in state.saveable_irradiation_positions if x.save]
            if xs:
                progress_iterator(xs,
                                  lambda *args: self._save_j(state, *args),
                                  threshold=1)

                p = self.dvc.meta_repo.get_level_path(state.irradiation, state.level)
                self.dvc.meta_repo.add(p)
                self.dvc.meta_commit('fit flux for {}'.format(state.irradiation, state.level))
Пример #5
0
    def run(self, state):
        wrapper = lambda ai, prog, i, n: self._save_icfactors(ai, prog, i, n,
                                                              state.saveable_keys,
                                                              state.saveable_fits,
                                                              state.references)
        progress_iterator(state.unknowns, wrapper, threshold=1)

        msg = self.commit_message
        if not msg:
            f = ','.join('{}({})'.format(x, y) for x, y in zip(state.saveable_keys, state.saveable_fits))
            msg = 'auto update ic_factors, fits={}'.format(f)

        self._persist(state, msg)
Пример #6
0
    def run(self, state):
        # if not state.user_review:
        # for ai in state.unknowns:
        #     self.dvc.save_blanks(ai, state.saveable_keys, state.references)
        wrapper = lambda x, prog, i, n: self._save_blanks(x, prog, i, n,
                                                          state.saveable_keys, state.references)
        progress_iterator(state.unknowns, wrapper, threshold=1)
        msg = self.commit_message
        if not msg:
            f = ','.join('{}({})'.format(x, y) for x, y in zip(state.saveable_keys, state.saveable_fits))
            msg = 'auto update blanks, fits={}'.format(f)

        self._persist(state, msg)
Пример #7
0
    def run(self, state):
        if not state.saveable_keys:
            return

        wrapper = lambda x, prog, i, n: self._save_fit(x, prog, i, n, state.saveable_keys)
        progress_iterator(state.unknowns, wrapper, threshold=1)
        # for ai in state.unknowns:
        #     self.dvc.save_fits(ai, state.saveable_keys)

        msg = self.commit_message
        if not msg:
            f = ','.join('{}({})'.format(x, y) for x, y in zip(state.saveable_keys, state.saveable_fits))
            msg = 'fits={}'.format(f)

        self._persist(state, msg)
Пример #8
0
    def run(self, state):
        # if not state.user_review:
        # for ai in state.unknowns:
        #     self.dvc.save_blanks(ai, state.saveable_keys, state.references)
        wrapper = lambda x, prog, i, n: self._save_blanks(
            x, prog, i, n, state.saveable_keys, state.references)
        progress_iterator(state.unknowns, wrapper, threshold=1)
        msg = self.commit_message
        if not msg:
            f = ','.join(
                '{}({})'.format(x, y)
                for x, y in zip(state.saveable_keys, state.saveable_fits))
            msg = 'auto update blanks, fits={}'.format(f)

        self._persist(state, msg)
Пример #9
0
    def run(self, state):
        if not state.saveable_keys:
            return

        wrapper = lambda x, prog, i, n: self._save_fit(x, prog, i, n, state.saveable_keys)
        progress_iterator(state.unknowns, wrapper, threshold=1)
        # for ai in state.unknowns:
        #     self.dvc.save_fits(ai, state.saveable_keys)

        msg = self.commit_message
        if not msg:
            f = ','.join('{}({})'.format(x, y) for x, y in zip(state.saveable_keys, state.saveable_fits))
            msg = 'fits={}'.format(f)

        self._persist(state, msg)
Пример #10
0
    def _clone_repositories(self):
        self.debug('clone repositories')

        # check for selected repositories
        if not self.selected_repositories:
            return

        # clone the repositories
        def func(x, prog, i, n):
            if prog is not None:
                prog.change_message('Cloning {}'.format(x.name))
            self.dvc.clone_repository(x.name)

        progress_iterator(self.selected_repositories, func, threshold=0)

        return True
Пример #11
0
    def _clone_repositories(self):
        self.debug('clone repositories')

        # check for selected repositories
        if not self.selected_repositories:
            return

        # clone the repositories
        def func(x, prog, i, n):
            if prog is not None:
                prog.change_message('Cloning {}'.format(x.name))
            self.dvc.clone_repository(x.name)

        progress_iterator(self.selected_repositories, func, threshold=0)

        return True
Пример #12
0
    def generate_results(self):
        self.debug('generate results')
        dvc = self.dvc
        db = dvc.db

        positions = sorted([pp for p in self.positions for pp in p.positions])

        wb = Workbook()
        sh = wb.add_sheet('Results')

        for i, attr in enumerate(
            ('Analysis', 'Position', 'Age', 'Error', 'Weight', 'Note')):
            wb.sheet(0, i, attr)

        wb.nrows = 1

        def func(x, prog, i, n):
            dbmps = db.get_measured_positions(self.load_name, x)
            dbpos = db.get_load_position(self.load_name, x)

            weight, note = dbpos.weight, dbpos.note

            for dbmp in dbmps:
                rid = dbmp.analysis.record_id
                # rid = 1
                if prog:
                    prog.change_message('Write results for {},{}'.format(
                        rid, x))

                # ai = dvc.make_analyses((rid,))
                age, error = 0, 0

                sh.write(wb.nrows, 0, rid)
                sh.write(wb.nrows, 1, x)
                sh.write(wb.nrows, 2, age)
                sh.write(wb.nrows, 3, error)
                sh.write(wb.nrows, 4, weight)
                sh.write(wb.nrows, 5, note)
                wb.nrows += 1

        with db.session_ctx():
            progress_iterator(positions, func, threshold=1)

        path, _ = unique_path(paths.load_results_dir,
                              self.load_name,
                              extension='.xls')
        wb.save(path)
Пример #13
0
    def run(self, state):
        if state.saveable_irradiation_positions:
            xs = [x for x in state.saveable_irradiation_positions if x.save]
            if xs:
                self.dvc.meta_repo.smart_pull()

                progress_iterator(xs,
                                  lambda *args: self._save_j(state, *args),
                                  threshold=1)

                p = self.dvc.meta_repo.get_level_path(state.irradiation, state.level)
                self.dvc.meta_repo.add(p)
                self.dvc.meta_commit('fit flux for {}'.format(state.irradiation, state.level))

                if confirmation_dialog('Would you like to share your changes?'):
                    self.dvc.meta_repo.smart_pull()
                    self.dvc.meta_repo.push()
Пример #14
0
    def generate_results(self):
        self.debug('generate results')
        dvc = self.dvc
        db = dvc.db

        positions = sorted([pp for p in self.positions
                            for pp in p.positions])

        wb = Workbook()
        sh = wb.add_sheet('Results')

        for i, attr in enumerate(('Analysis', 'Position', 'Age',
                                  'Error', 'Weight', 'Note')):
            wb.sheet(0, i, attr)

        wb.nrows = 1

        def func(x, prog, i, n):
            dbmps = db.get_measured_positions(self.load_name, x)
            dbpos = db.get_load_position(self.load_name, x)

            weight, note = dbpos.weight, dbpos.note

            for dbmp in dbmps:
                rid = dbmp.analysis.record_id
                # rid = 1
                if prog:
                    prog.change_message('Write results for {},{}'.format(rid, x))

                # ai = dvc.make_analyses((rid,))
                age, error = 0, 0

                sh.write(wb.nrows, 0, rid)
                sh.write(wb.nrows, 1, x)
                sh.write(wb.nrows, 2, age)
                sh.write(wb.nrows, 3, error)
                sh.write(wb.nrows, 4, weight)
                sh.write(wb.nrows, 5, note)
                wb.nrows += 1

        with db.session_ctx():
            progress_iterator(positions, func, threshold=1)

        path, _ = unique_path(paths.load_results_dir, self.load_name, extension='.xls')
        wb.save(path)
Пример #15
0
    def run(self, state):
        wrapper = lambda ai, prog, i, n: self._save_icfactors(ai, prog, i, n,
                                                              state.saveable_keys,
                                                              state.saveable_fits,
                                                              state.references)
        progress_iterator(state.unknowns, wrapper, threshold=1)

        # for ai in state.unknowns:
        #     self.dvc.save_icfactors(ai, state.saveable_keys,
        #                             state.saveable_fits,
        #                             state.references)

        msg = self.commit_message
        if not msg:
            f = ','.join('{}({})'.format(x, y) for x, y in zip(state.saveable_keys, state.saveable_fits))
            msg = 'auto update ic_factors, fits={}'.format(f)

        self._persist(state, msg)
Пример #16
0
    def set_data_reduction_tag(self):
        items = self._get_analyses_to_tag()
        if items:
            model = self._get_dr_tagname(items)
            if model is not None:
                db = self.manager.db
                with db.session_ctx():
                    dbtag = db.add_data_reduction_tag(model.tagname, model.comment)
                    self.debug('added data reduction tag: {}'.format(model.tagname))

                    def func(ai, prog, i, n):
                        dban = db.get_analysis_uuid(ai.uuid)
                        db.add_data_reduction_tag_set(dbtag, dban, dban.selected_histories.id)
                        dban.data_reduction_tag = dbtag
                        if prog:
                            prog.change_message(
                                'Applying data reduction tag "{}" to {}'.format(model.tagname, ai.record_id))

                    progress_iterator(model.items, func)
Пример #17
0
    def run(self, state):
        if state.saveable_irradiation_positions:
            xs = [x for x in state.saveable_irradiation_positions if x.save]
            if xs:
                self.dvc.meta_repo.smart_pull()

                progress_iterator(xs,
                                  lambda *args: self._save_j(state, *args),
                                  threshold=1)

                p = self.dvc.meta_repo.get_level_path(state.irradiation,
                                                      state.level)
                self.dvc.meta_repo.add(p, commit=False)
                self.dvc.meta_commit('fit flux for {}{}'.format(
                    state.irradiation, state.level))

                if confirmation_dialog(
                        'Would you like to share your changes?'):
                    self.dvc.meta_repo.smart_pull()
                    self.dvc.meta_repo.push()
Пример #18
0
    def set_data_reduction_tag(self):
        items = self._get_analyses_to_tag()
        if items:
            model = self._get_dr_tagname(items)
            if model is not None:
                db = self.manager.db
                with db.session_ctx():
                    dbtag = db.add_data_reduction_tag(model.tagname,
                                                      model.comment)
                    self.debug('added data reduction tag: {}'.format(
                        model.tagname))

                    def func(ai, prog, i, n):
                        dban = db.get_analysis_uuid(ai.uuid)
                        db.add_data_reduction_tag_set(
                            dbtag, dban, dban.selected_histories.id)
                        dban.data_reduction_tag = dbtag
                        if prog:
                            prog.change_message(
                                'Applying data reduction tag "{}" to {}'.
                                format(model.tagname, ai.record_id))

                    progress_iterator(model.items, func)