Esempio n. 1
0
    def on_numorHelpBtn_clicked(self):
        QMessageBox.information(
            self, 'Numor Help', '''\
The numor string contains file numbers, with the following operators:

, loads multiple files
- loads multiple sequential files
+ merges multiple files
> merges multiple sequential files

For example:

* 10-15,23  loads files 10 through 15 and 23 in 7 separate datasets.
* 10+11,23+24 loads two datasets consisting of files 10 and 11 merged \
into one set, as well as files 23 and 24.
* 10>15+23 merges files 10 through 15 and 23 into one single dataset.
* 10,11,12+13,14 loads four sets.
''')
Esempio n. 2
0
    def do_fit(self):
        if self.picking:
            QMessageBox.information(self, 'Fitting',
                                    'Please finish the picking operation first.')
            return
        self.update_from_controls()
        self.statusLabel.setText('Working...')
        self.statusLabel.repaint()
        QApplication.processEvents()
        try:
            res = self.model.fit(self.data, **self.fit_kws)
        except Exception as e:
            self.logger.exception('Error during fit')
            self.statusLabel.setText('Error during fit: %s' % e)
            return
        self.on_modelFitted(self.item, res)

        self.replotRequest.emit(True)
        session.set_dirty()
Esempio n. 3
0
 def eval_model(self, final=False):
     modeldef = str(self.modeldefEdit.toPlainText()).replace('\n', ' ')
     if not modeldef:
         QMessageBox.information(self, 'Error', 'No model defined.')
         return
     try:
         model = eval_model(modeldef)
     except Exception as e:
         self.logger.exception('Could not evaluate model')
         QMessageBox.information(self, 'Error',
                                 'Could not evaluate model: %s' % e)
         return
     if final:
         self._finish_picking()
         self.last_model = model
         self.newModel.emit(model, False, True)
         self.closeRequest.emit()
     else:
         self.statusLbl.setText('Model definition is good.')
Esempio n. 4
0
 def exec_callback(self):
     try:
         from ufit.gui.console import ConsoleWindow
     except ImportError:
         logger.exception('Qt console window cannot be opened without '
                          'IPython; import error was:')
         QMessageBox.information(
             self, 'ufit', 'Please install IPython with qtconsole to '
             'activate this function.')
         return
     w = ConsoleWindow(self)
     w.ipython.executeCommand('from ufit.lab import *')
     w.ipython.pushVariables({
         'fig':
         self.canvas.figure,
         'ax':
         self.canvas.figure.gca(),
         'D': [item for group in session.groups for item in group.items],
     })
     w.show()
Esempio n. 5
0
    def set_template(self, dtempl, numor, silent=True):
        self.templateEdit.setText(str_to_path(dtempl))
        with self.sgroup as settings:
            settings.setValue('last_data_template', dtempl)
        self.loader.template = dtempl
        try:
            cols, xguess, yguess, dyguess, mguess, nmon = \
                self.loader.guess_cols(numor)
        except Exception as e:
            if not silent:
                self.logger.exception('Could not read column names')
                QMessageBox.information(self, 'Error',
                                        'Could not read column names: %s' % e)
            return
        self.xcolBox.clear()
        self.xcolBox.addItem('auto')
        self.xcolBox.setCurrentIndex(0)
        self.ycolBox.clear()
        self.ycolBox.addItem('auto')
        self.ycolBox.setCurrentIndex(0)
        self.dycolBox.clear()
        self.dycolBox.addItem('auto')
        self.dycolBox.addItem('sqrt(Y)')
        self.dycolBox.setCurrentIndex(0)
        self.moncolBox.clear()
        self.moncolBox.addItem('auto')
        self.moncolBox.addItem('none')
        self.moncolBox.setCurrentIndex(0)
        self.filtercolBox.clear()
        self.filtercolBox.addItem('none')
        self.filtercolBox.setCurrentIndex(0)

        for i, name in enumerate(cols):
            self.xcolBox.addItem(name)
            self.ycolBox.addItem(name)
            self.dycolBox.addItem(name)
            self.moncolBox.addItem(name)
            self.filtercolBox.addItem(name)
        self.monscaleEdit.setText(str(nmon or 1))
        self.numorsEdit.setText(str(numor))
        self.open_data()
Esempio n. 6
0
 def open_data(self, final=False):
     try:
         prec = float(self.precisionEdit.text())
     except ValueError:
         QMessageBox.information(self, 'Error', 'Enter a valid precision.')
         return
     floatmerge = self.rbFloatMerge.isChecked()
     xcol = str(self.xcolBox.currentText())
     ycol = str(self.ycolBox.currentText())
     dycol = str(self.dycolBox.currentText())
     mcol = str(self.moncolBox.currentText())
     fcol = str(self.filtercolBox.currentText())
     if mcol == 'none':
         mcol = None
     if dycol == 'sqrt(Y)':
         dycol = None
     try:
         mscale = int(self.monscaleEdit.text())
     except Exception:
         QMessageBox.information(self, 'Error',
                                 'Monitor scale must be integer.')
         return
     if fcol == 'none':
         filter = None
     else:
         try:
             val = float(self.filtervalEdit.text())
         except ValueError:
             val = bytes(self.filtervalEdit.text(), 'utf-8')
         filter = {fcol: val}
     dtempl = path_to_str(self.templateEdit.text())
     self.loader.template = dtempl
     numors = str(self.numorsEdit.text())
     try:
         datas = self.loader.load_numors(numors, prec, xcol, ycol, dycol,
                                         mcol, mscale, floatmerge, filter)
     except Exception as e:
         self.logger.exception('Error while loading data file')
         QMessageBox.information(self, 'Error', str(e))
         return
     self.last_data = datas
     if final:
         self.newDatas.emit(datas, self.groupBox.currentText())
         self.closeRequest.emit()
     else:
         self.plot()
Esempio n. 7
0
 def export_python(self, filename):
     QMessageBox.information(self, 'Error', 'Cannot export Python from a '
                             'mapping.')
Esempio n. 8
0
 def export_fits(self, filename):
     QMessageBox.information(self, 'Error', 'Cannot export fits from a '
                             'mapping.')
Esempio n. 9
0
 def export_fits(self, filename):
     QMessageBox.information(self, 'Error', 'Cannot export fits from an '
                             'image.')
Esempio n. 10
0
 def export_python(self, filename):
     QMessageBox.information(self, 'Error', 'Cannot export Python from an '
                             'image.')