Ejemplo n.º 1
0
    def addItem(self, curve):
        results = []
        for x_axis in curve.x:
            try:
                result = curve.results.data[x_axis]
                if isinstance(result[0], str):
                    results.append(result[0])
                elif isinstance(
                        result,
                    (list, tuple)) and len(result) == 2 and result[1] != 0:
                    # assuming result = (value, error)
                    digit = -int(np.floor(np.log10(np.abs(result[
                        1])))) + 1  # two leading digits from the error term
                    results.append(
                        f"{np.round(result[0], digit):g} \u00b1 {np.round(result[1], digit): g}"
                    )
                else:
                    results.append(f"{result[0]:g}")
            except IndexError:
                pass
        if results:
            item = QtGui.QTreeWidgetItem(results)
            self.plot.addTopLevelItem(item)
            self.curves.append([curve, item])

        for index in range(self.plot.columnCount()):
            self.plot.resizeColumnToContents(index)
Ejemplo n.º 2
0
    def _setup_ui(self):
        self.plot = QtGui.QTreeWidget()
        param_header = QtGui.QTreeWidgetItem(self.x_label)
        self.plot.setHeaderItem(param_header)
        self.plot.setColumnWidth(0, 150)
        self.plot.setAlternatingRowColors(True)
        self.plot.setSortingEnabled(True)
        self.plot.sortItems(0, QtCore.Qt.AscendingOrder)

        # patch addItem and removeItem from pyqtgraph PlotItem
        self.plot.addItem = self.addItem
        self.plot.removeItem = self.removeItem
Ejemplo n.º 3
0
    def _setup_ui(self):
        preview_tab = QtGui.QTabWidget()
        param_vbox = QtGui.QVBoxLayout()
        param_vbox_widget = QtGui.QWidget()

        self.plot_widget = []
        self.plot = []
        vbox_widget = []
        vbox = []
        for index, plot_widget in enumerate(self.plot_widget_classes):
            vbox_widget.append(QtGui.QWidget())
            vbox.append(QtGui.QVBoxLayout())
            color_cycle = self.color_cycle[:1]
            self.plot_widget.append(
                plot_widget(self.columns,
                            x_axes=self.x_axes[index],
                            y_axes=self.y_axes[index],
                            x_label=self.x_labels[index],
                            y_label=self.y_labels[index],
                            legend_text=self.legend_text[index],
                            color_cycle=color_cycle))
            self.plot.append(self.plot_widget[-1].plot)
            vbox[-1].addWidget(self.plot_widget[-1])
            vbox_widget[-1].setLayout(vbox[-1])
            preview_tab.addTab(vbox_widget[-1], self.plot_names[index])

        self.preview_param = QtGui.QTreeWidget()
        param_header = QtGui.QTreeWidgetItem(["Name", "Value"])
        self.preview_param.setHeaderItem(param_header)
        self.preview_param.setColumnWidth(0, 150)
        self.preview_param.setAlternatingRowColors(True)

        param_vbox.addWidget(self.preview_param)
        param_vbox_widget.setLayout(param_vbox)
        preview_tab.addTab(param_vbox_widget, "Run Parameters")
        self.layout().addWidget(preview_tab, 0, 3, 4, 1)
        self.layout().setColumnStretch(3, 2)
        self.setMinimumSize(900, 500)
        self.resize(1300, 500)

        self.setFileMode(QtGui.QFileDialog.ExistingFiles)
        self.currentChanged.connect(self.update_plot)
Ejemplo n.º 4
0
    def update_plot(self, filename):
        for plot in self.plot:
            plot.clear()
        if not os.path.isdir(filename) and filename != '':
            try:
                results = self.procedure_class().load(str(filename))
            except Exception as error:
                try:
                    results = Results.load(str(filename))
                except ValueError:
                    return
                except Exception as e:
                    raise e
            for index, plot_widget in enumerate(self.plot_widget):
                curve_list = plot_widget.new_curve(results)
                for curve in curve_list:
                    curve.update()
                    self.plot[index].addItem(curve)

            self.preview_param.clear()
            for key, param in results.procedure.parameter_objects().items():
                new_item = QtGui.QTreeWidgetItem([param.name, str(param)])
                self.preview_param.addTopLevelItem(new_item)
            self.preview_param.sortItems(0, QtCore.Qt.AscendingOrder)