class McaSpectrumWidget(BlissWidget): def __init__(self, *args): BlissWidget.__init__(self, *args) self.defineSlot('set_data', ()) if pymca_imported: self.mcafit_widget = McaAdvancedFit.McaAdvancedFit(self) self.mcafit_widget.dismissButton.hide() else: self.mcafit_widget = TwoAxisPlotWidget(self) _main_vlayout = QVBoxLayout(self) _main_vlayout.addWidget(self.mcafit_widget) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0) def set_data(self, data, calib, config): try: configured = False if os.path.exists(config.get("file", "")) and \ pymca_imported: self._configure(config) configured = True data = np.array(data) x = np.array(data[:, 0]).astype(np.float) y = np.array(data[:, 1]).astype(np.float) xmin = float(config["min"]) xmax = float(config["max"]) #self.mcafit_widget.refreshWidgets() calib = np.ravel(calib).tolist() """kw = {} kw.update(config) kw['xmin'] = xmin kw['xmax'] = xmax kw['calibration'] = calib""" self.mcafit_widget.setdata(x, y) if pymca_imported: #elf.mcafit.setdata(x, y, **kw)# xmin=xmin, xmax=xmax, calibration=calib) self.mcafit_widget._energyAxis = False self.mcafit_widget.toggleEnergyAxis() self.mcafit_widget.setdata(x, y) #result = self._fit() #pyarch file name and directory pf = config["legend"].split(".") pd = pf[0].split("/") outfile = pd[-1] outdir = config['htmldir'] sourcename = config['legend'] if pymca_imported: result = self._fit() if configured: report = McaAdvancedFit.QtMcaAdvancedFitReport.\ QtMcaAdvancedFitReport(None, outfile=outfile, outdir=outdir, fitresult=result, sourcename=sourcename, plotdict={'logy':False}, table=2) text = report.getText() report.writeReport(text=text) except: logging.getLogger().exception("McaSpectrumWidget: problem fitting %s %s %s" % \ (str(data), str(calib), str(config))) def _fit(self): return self.mcafit_widget.fit() def _configure(self, config): d = ConfigDict.ConfigDict() d.read(config["file"]) if not d.has_key('concentrations'): d['concentrations'] = {} if not d.has_key('attenuators'): d['attenuators'] = {} d['attenuators']['Matrix'] = [1, 'Water', 1.0, 0.01, 45.0, 45.0] if config.has_key('flux'): d['concentrations']['flux'] = float(config['flux']) if config.has_key('time'): d['concentrations']['time'] = float(config['time']) self.mcafit_widget.mcafit.configure(d) def clear(self): #TODO make with clear x = np.array([0]).astype(np.float) y = np.array([0]).astype(np.float) self.mcafit_widget.setdata(x, y)
class McaSpectrumWidget(BlissWidget): def __init__(self, *args): BlissWidget.__init__(self, *args) self.defineSlot('set_data',()) if pymca_imported: self.mcafit_widget = McaAdvancedFit.McaAdvancedFit(self) self.mcafit_widget.dismissButton.hide() else: self.mcafit_widget = TwoAxisPlotWidget(self) _main_vlayout = QVBoxLayout(self) _main_vlayout.addWidget(self.mcafit_widget) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0) def set_data(self, data, calib, config): logging.getLogger().info('McaSpectrumWidget set_data calib %s, config %s' % (str(calib), str(config))) try: configured = False if os.path.exists(config.get("file", "")) and \ pymca_imported: self._configure(config) configured = True data = np.array(data) x = np.array(data[:,0]).astype(np.float) y = np.array(data[:,1]).astype(np.float) xmin = float(config["min"]) xmax = float(config["max"]) #self.mcafit_widget.refreshWidgets() calib = np.ravel(calib).tolist() """kw = {} kw.update(config) kw['xmin'] = xmin kw['xmax'] = xmax kw['calibration'] = calib""" self.mcafit_widget.setdata(x, y) if pymca_imported: #elf.mcafit.setdata(x, y, **kw)# xmin=xmin, xmax=xmax, calibration=calib) self.mcafit_widget._energyAxis = False self.mcafit_widget.toggleEnergyAxis() self.mcafit_widget.setdata(x, y) #result = self._fit() #pyarch file name and directory pf = config["legend"].split(".") pd = pf[0].split("/") outfile = pd[-1] outdir = config['htmldir'] sourcename = config['legend'] if pymca_imported: result = self._fit() if configured: report = McaAdvancedFit.QtMcaAdvancedFitReport.\ QtMcaAdvancedFitReport(None, outfile=outfile, outdir=outdir, fitresult=result, sourcename=sourcename, plotdict={'logy':False}, table=2) text = report.getText() report.writeReport(text=text) except: logging.getLogger().info('traceback %s' % traceback.format_exc()) logging.getLogger().exception("McaSpectrumWidget: problem fitting %s %s %s" % \ (str(data), str(calib), str(config))) def _fit(self): return self.mcafit_widget.fit() def _configure(self, config): d = ConfigDict.ConfigDict() d.read(config["file"]) if not d.has_key('concentrations'): d['concentrations']= {} if not d.has_key('attenuators'): d['attenuators']= {} d['attenuators']['Matrix'] = [1, 'Water', 1.0, 0.01, 45.0, 45.0] if config.has_key('flux'): d['concentrations']['flux'] = float(config['flux']) if config.has_key('time'): d['concentrations']['time'] = float(config['time']) self.mcafit_widget.mcafit.configure(d) def clear(self): #TODO make with clear x = np.array([0]).astype(np.float) y = np.array([0]).astype(np.float) self.mcafit_widget.setdata(x, y)