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)
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))
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)
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))
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)
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)
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)
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)
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
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)
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()
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)
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)
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)
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()
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)