예제 #1
0
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)
예제 #2
0
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)