def onRead_OK(self, script, path, groupname=None, array_sel=None, overwrite=False): """ called when column data has been selected and is ready to be used overwrite: whether to overwrite the current datagroup, as when editing a datagroup """ abort_read = False filedir, filename = os.path.split(path) if not overwrite and hasattr(self.larch.symtable, groupname): newname = file2groupname(filename, symtable=self.larch.symtable) msg = """Warning: groupname '%s' already used. Will use groupname '%s' instead """ % (groupname, newname) dlg = wx.MessageDialog(self, msg, 'Warning', wx.OK | wx.CANCEL) abort_read = (wx.ID_OK != dlg.ShowModal()) dlg.Destroy() groupname = newname if abort_read: return self.larch.eval(script.format(group=groupname, path=path)) if array_sel is not None: self.last_array_sel = array_sel self.install_group(groupname, filename, overwrite=overwrite) for path in self.paths2read: path = path.replace('\\', '/') filedir, filename = os.path.split(path) gname = file2groupname(filename, symtable=self.larch.symtable) self.larch.eval(script.format(group=gname, path=path)) self.install_group(gname, filename, overwrite=True)
def onRead_OK(self, script, path, groupname=None, array_sel=None, overwrite=False): """ called when column data has been selected and is ready to be used overwrite: whether to overwrite the current datagroup, as when editing a datagroup """ if groupname is None: return abort_read = False filedir, filename = os.path.split(path) if not overwrite and hasattr(self.larch.symtable, groupname): groupname = file2groupname(filename, symtable=self.larch.symtable) if abort_read: return self.larch.eval(script.format(group=groupname, path=path)) if array_sel is not None: self.last_array_sel = array_sel self.install_group(groupname, filename, overwrite=overwrite) # check if rebin is needed thisgroup = getattr(self.larch.symtable, groupname) do_rebin = False if thisgroup.datatype == 'xas': try: en = thisgroup.energy except: do_rebin = True en = thisgroup.energy = thisgroup.xdat # test for rebinning: # too many data points # unsorted energy data or data in angle # too fine a step size at the end of the data range if (len(en) > 1200 or any(np.diff(en) < 0) or ((max(en)-min(en)) > 300 and (np.diff(en[-50:]).mean() < 0.75))): msg = """This dataset may need to be rebinned. Rebin now?""" dlg = wx.MessageDialog(self, msg, 'Warning', wx.YES | wx.NO ) do_rebin = (wx.ID_YES == dlg.ShowModal()) dlg.Destroy() for path in self.paths2read: path = path.replace('\\', '/') filedir, filename = os.path.split(path) gname = file2groupname(filename, symtable=self.larch.symtable) self.larch.eval(script.format(group=gname, path=path)) self.install_group(gname, filename, overwrite=overwrite) self.write_message("read %s" % (filename)) if do_rebin: RebinDataDialog(self, self.controller).Show()
def read_column_file(self, path): """read column file, generally as initial read""" parent, filename = os.path.split(path) with open(path, 'r') as fh: lines = fh.readlines() text = ''.join(lines) line1 = lines[0].lower() reader = 'read_ascii' if 'epics stepscan file' in line1: reader = 'read_gsexdi' elif 'xdi' in line1: reader = 'read_xdi' elif 'epics scan' in line1: reader = 'read_gsescan' tmpname = '_tmp_file_' read_cmd = "%s = %s('%s')" % (tmpname, reader, path) self.reader = reader self._larch.eval(read_cmd, add_history=False) group = self._larch.symtable.get_symbol(tmpname) self._larch.symtable.del_symbol(tmpname) group.text = text group.path = path group.filename = filename group.groupname = file2groupname(filename, symtable=self._larch.symtable) return group
def read_column_file(self, path): """read column file, generally as initial read""" parent, filename = os.path.split(path) with open(path, 'r') as fh: lines = fh.readlines() text = ''.join(lines) line1 = lines[0].lower() reader = 'read_ascii' if 'epics stepscan file' in line1: reader = 'read_gsexdi' elif 'xdi' in line1: reader = 'read_xdi' elif 'epics scan' in line1: reader = 'read_gsescan' tmpname = '_tmp_file_' read_cmd = "%s = %s('%s')" % (tmpname, reader, path) self.reader = reader _larch = self._larch if (not isinstance(_larch, larch.Interpreter) and hasattr(_larch, '_larch')): _larch = _larch._larch try: _larch.eval(read_cmd, add_history=True) except: pass if _larch.error: msg = ["Error trying to read '%s':" % path, ""] for err in _larch.error: exc_name, errmsg = err.get_error() msg.append(errmsg) title = "Cannot read %s" % path r = Popup(self.parent, "\n".join(msg), title) return None group = _larch.symtable.get_symbol(tmpname) _larch.symtable.del_symbol(tmpname) group.text = text group.path = path group.filename = filename group.groupname = file2groupname(filename, symtable=self._larch.symtable) return group
def read_column_file(self, path): """read column file, generally as initial read""" parent, filename = os.path.split(path) with open(path, 'r') as fh: lines = fh.readlines() text = ''.join(lines) line1 = lines[0].lower() reader = 'read_ascii' if 'epics stepscan file' in line1: reader = 'read_gsexdi' elif 'xdi' in line1: reader = 'read_xdi' elif 'epics scan' in line1: reader = 'read_gsescan' tmpname = '_tmp_file_' read_cmd = "%s = %s('%s')" % (tmpname, reader, path) self.reader = reader _larch = self._larch if (not isinstance(_larch, larch.Interpreter) and hasattr(_larch, '_larch')): _larch = _larch._larch try: _larch.eval(read_cmd, add_history=False) except: pass if _larch.error: msg = ["Error trying to read '%s':" % path, ""] for err in _larch.error: exc_name, errmsg = err.get_error() msg.append(errmsg) title = "Cannot read %s" % path r = Popup(self.parent, "\n".join(msg), title) return None group = _larch.symtable.get_symbol(tmpname) _larch.symtable.del_symbol(tmpname) group.text = text group.path = path group.filename = filename group.groupname = file2groupname(filename, symtable=self._larch.symtable) return group