def copy_group(self, filename, new_filename=None): """copy XAS group (by filename) to new group""" groupname = self.file_groups[filename] if not hasattr(self.larch.symtable, groupname): return ogroup = self.get_group(groupname) ngroup = Group(datatype=ogroup.datatype, copied_from=groupname) for attr in dir(ogroup): do_copy = True if attr in ('xdat', 'ydat', 'i0', 'data' 'yerr', 'energy', 'mu'): val = getattr(ogroup, attr) * 1.0 elif attr in ('norm', 'flat', 'deriv', 'deconv', 'post_edge', 'pre_edge'): do_copy = False else: try: val = copy.deepcopy(getattr(ogroup, attr)) except ValueError: do_copy = False if do_copy: setattr(ngroup, attr, val) if new_filename is None: new_filename = filename + '_1' ngroup.filename = unique_name(new_filename, self.file_groups.keys()) ngroup.groupname = unique_name(groupname, self.file_groups.values()) setattr(self.larch.symtable, ngroup.groupname, ngroup) return ngroup
def copy_group(self, filename, new_filename=None): """copy XAS group (by filename) to new group""" groupname = self.file_groups[filename] if not hasattr(self.larch.symtable, groupname): return ogroup = self.get_group(groupname) ngroup = Group(datatype=ogroup.datatype, copied_from=groupname) for attr in dir(ogroup): do_copy = True if attr in ('xdat', 'ydat', 'i0', 'data' 'yerr', 'energy', 'mu'): val = getattr(ogroup, attr)*1.0 elif attr in ('norm', 'flat', 'deriv', 'deconv', 'post_edge', 'pre_edge', 'norm_mback', 'norm_vict', 'norm_poly'): do_copy = False else: try: val = copy.deepcopy(getattr(ogroup, attr)) except ValueError: do_copy = False if do_copy: setattr(ngroup, attr, val) if new_filename is None: new_filename = filename + '_1' ngroup.filename = unique_name(new_filename, self.file_groups.keys()) ngroup.groupname = unique_name(groupname, self.file_groups.values()) setattr(self.larch.symtable, ngroup.groupname, ngroup) return ngroup
def onCopyGroup(self, event=None): fname = self.current_filename if fname is None: fname = self.current_filename = self.controller.filelist.GetStringSelection() groupname = self.controller.file_groups[fname] if not hasattr(self.larch.symtable, groupname): return ogroup = self.controller.get_group(groupname) ngroup = Group(datatype=ogroup.datatype, energy=1.0*ogroup.energy, mu=1.0*ogroup.mu, xdat=1.0*ogroup.energy, ydat=1.0*ogroup.mu) for attr in dir(ogroup): if attr in ('i0', 'data' 'yerr'): val = getattr(ogroup, attr)*1.0 if attr in ('norm', 'flat', 'deriv', 'deconv', 'post_edge', 'pre_edge'): pass else: try: val = copy.deepcopy(getattr(ogroup, attr)) except ValueError: val = None setattr(ngroup, attr, val) new_fname = unique_name(fname, self.controller.file_groups.keys()) new_gname = unique_name(groupname, self.controller.file_groups.values()) setattr(self.larch.symtable, new_gname, ngroup) self.install_group(new_gname, new_fname, overwrite=False) self.nb_panels[0].process(ngroup) self.ShowFile(groupname=new_gname)
def merge_groups(self, grouplist, master=None, yarray='mu', outgroup=None): """merge groups""" cmd = """%s = merge_groups(%s, master=%s, xarray='energy', yarray='%s', kind='cubic', trim=True)""" glist = "[%s]" % (', '.join(grouplist)) outgroup = fix_varname(outgroup.lower()) if outgroup is None: outgroup = 'merged' outgroup = unique_name(outgroup, self.file_groups, max=1000) cmd = cmd % (outgroup, glist, master, yarray) self.larch.eval(cmd) if master is None: master = grouplist[0] this = self.get_group(outgroup) master = self.get_group(master) if not hasattr(this, 'xasnorm_config'): this.xasnorm_config = {} this.xasnorm_config.update(master.xasnorm_config) this.datatype = master.datatype this.xdat = 1.0 * this.energy this.ydat = 1.0 * getattr(this, yarray) this.plot_xlabel = 'energy' this.plot_ylabel = yarray return outgroup
def onMergeData(self, event=None): groups = OrderedDict() for checked in self.controller.filelist.GetCheckedStrings(): cname = str(checked) groups[cname] = self.controller.file_groups[cname] if len(groups) < 1: return outgroup = common_startstring(list(groups.keys())) outgroup = "%s (merge %d)" % (outgroup, len(groups)) outgroup = unique_name(outgroup, self.controller.file_groups) dlg = MergeDialog(self, list(groups.keys()), outgroup=outgroup) res = dlg.GetResponse() dlg.Destroy() if res.ok: fname = res.group gname = fix_varname(res.group.lower()) master = self.controller.file_groups[res.master] yname = 'norm' if res.ynorm else 'mu' self.controller.merge_groups(list(groups.values()), master=master, yarray=yname, outgroup=gname) self.install_group(gname, fname, overwrite=False) self.controller.filelist.SetStringSelection(fname)
def merge_groups(self, grouplist, master=None, yarray='mu', outgroup=None): """merge groups""" cmd = """%s = merge_groups(%s, master=%s, xarray='energy', yarray='%s', kind='cubic', trim=True) """ glist = "[%s]" % (', '.join(grouplist)) outgroup = fix_varname(outgroup.lower()) if outgroup is None: outgroup = 'merged' outgroup = unique_name(outgroup, self.file_groups, max=1000) cmd = cmd % (outgroup, glist, master, yarray) self.larch.eval(cmd) if master is None: master = grouplist[0] this = self.get_group(outgroup) master = self.get_group(master) if not hasattr(this, 'xasnorm_config'): this.xasnorm_config = {} this.xasnorm_config.update(master.xasnorm_config) this.datatype = master.datatype this.xdat = 1.0*this.energy this.ydat = 1.0*getattr(this, yarray) this.yerr = getattr(this, 'd' + yarray, 1.0) if yarray != 'mu': this.mu = this.ydat this.plot_xlabel = 'energy' this.plot_ylabel = yarray return outgroup
def onMergeData(self, event=None): groups = [] for checked in self.controller.filelist.GetCheckedStrings(): groups.append(self.controller.file_groups[str(checked)]) if len(groups) < 1: return outgroup = unique_name('merge', self.controller.file_groups) dlg = MergeDialog(self, groups, outgroup=outgroup) res = dlg.GetResponse() dlg.Destroy() if res.ok: fname = res.group gname = fix_varname(res.group.lower()) yname = 'norm' if res.ynorm else 'mu' self.controller.merge_groups(groups, master=res.master, yarray=yname, outgroup=gname) self.install_group(gname, fname, overwrite=False) self.controller.filelist.SetStringSelection(fname)
def onMergeData(self, event=None): groups = OrderedDict() for checked in self.controller.filelist.GetCheckedStrings(): cname = str(checked) groups[cname] = self.controller.file_groups[cname] if len(groups) < 1: return outgroup = unique_name('merge', self.controller.file_groups) dlg = MergeDialog(self, list(groups.keys()), outgroup=outgroup) res = dlg.GetResponse() dlg.Destroy() if res.ok: fname = res.group gname = fix_varname(res.group.lower()) master = self.controller.file_groups[res.master] yname = 'norm' if res.ynorm else 'mu' self.controller.merge_groups(list(groups.values()), master=master, yarray=yname, outgroup=gname) self.install_group(gname, fname, overwrite=False) self.controller.filelist.SetStringSelection(fname)