Пример #1
0
    def log_correlations_plot(self):
        self.mw = MatplotlibWidget(size=(22.0, len(self.interestedLognames)*1.6), dpi=100)   
        self.logscrollArea.setWidget(self.mw)
        print('Plotting...')
        self.ax=[]
        for i,logname in enumerate(self.normlogs.keys()):
            self.ax.append(self.mw.getFigure().add_subplot(len(self.normlogs),1,i+1) )
            l, b, w, h = self.ax[-1].get_position().bounds 
            self.ax[-1].set_position([0.27,b+0.1,0.7,h])
            # self.log_col=self.las[logname]  
            # self.log_col[np.isnan(self.log_col)]=0            
            # norm_blog=mean_norm(self.log_col)#[0:800]
            depthb_shift=self.depth_col+self.delays[logname]
            self.ax[-1].plot(self.depth_col,self.normlogs[logname],'b')
            self.ax[-1].plot(self.depth_col,self.norm_gamma,'r')
            self.ax[-1].plot(depthb_shift,self.normlogs[logname],'magenta')
            self.ax[-1].text(self.depth_col[0]-50,0.02,logname)

        lenax=len(self.ax)
        for i,logname in enumerate(self.lag_corrs.keys()):
            self.ax.append(self.mw.getFigure().add_subplot(len(self.normlogs),2,lenax+i+1) )
            l, b, w, h = self.ax[i].get_position().bounds
            self.ax[-1].set_position([0.03,b,0.21,h])
            self.ax[-1].plot(self.lag_corrs[logname][0],self.lag_corrs[logname][1],'b')
            self.ax[-1].text(self.delays[logname],min(self.lag_corrs[logname][1]),'Delay = %.2f'%self.delays[logname])
            line = self.ax[-1].axvline(x=self.delays[logname], ymin=-1, ymax = +1, linewidth=1.5, color='c')
            self.ax[-1].text(self.lag_corrs[logname][0][0],0.4,logname)
                
        self.mw.draw()
        print('Complete...')
Пример #2
0
    def handle_new_window(self, graph, **kwargs):
        """ Handles visualizing and possibility of new popup windows.
        Creates a Matplotlib widget instead of a Pyqtgraph widget. """

        if graph is None:
            # If we want to use a separate window
            if 'window' in kwargs:
                # Check whether this window exists
                if not kwargs['window'] in self.gui.windows:
                    if 'window_title' in kwargs:
                        window_title = kwargs['window_title']
                    else:
                        window_title = 'Graph Holder'

                    self.gui.windows[kwargs['window']] = GraphPopup(
                        window_title=window_title, size=(700, 300)
                    )

                self.graph = MatplotlibWidget()

                self.gui.windows[kwargs['window']].graph_layout.addWidget(
                    self.graph
                )

            # Otherwise, add a graph to the main layout
            else:
                self.graph = self.gui.add_graph()
        # Reuse a PlotWidget if provided
        else:
            self.graph = graph
    def __init__(self, parent=None):
        super(mainApp, self).__init__(parent)
        self.setMinimumWidth(1040 / 2)
        self.setMinimumHeight(1392 / 2)
        self.layout = qt.QGridLayout()
        self.widget = qt.QWidget()
        self.widget.setLayout(self.layout)
        self.setCentralWidget(self.widget)
        args = parser.parse_args()
        self.currentDirectory = os.path.abspath(args.directory)
        self.selectedDir = None

        self.table = qt.QListWidget()
        self.table.setMinimumWidth(200)
        self.table.setMaximumWidth(250)
        self.textedit = qt.QTextEdit()
        self.textedit.setMaximumHeight(150)
        self.textedit.setMinimumWidth(200)
        self.textedit.setMaximumWidth(250)
        self.update_directory_list()
        self.mw = MatplotlibWidget()
        self.mw.setMinimumWidth(1400)
        self.layout.addWidget(self.table, 0, 0, 1, 1)
        self.layout.addWidget(self.textedit, 1, 0, 1, 1)
        self.layout.addWidget(self.mw, 0, 1, 2, 3)

        # self.timer = qt.QTimer()
        # self.timer.timeout.connect(self.update_directory_list)
        # self.timer.start(10000)
        self.table.itemClicked.connect(self.analyse_image)
        self.table.itemDoubleClicked.connect(self.change_directory)
Пример #4
0
    def __init__(self):
        super(MainWindow, self).__init__()
        mw = MatplotlibWidget()
        subplot = mw.getFigure().add_subplot(111)
        mw.draw()
        # print(dir(mw))
        # layout=QHBoxLayout()
        # mylabel=QLabel('Hi')
        # layout.addWidget(mylabel)
        # layout.addWidget(mw)
        # self.setLayout(layout)

        layout = QFormLayout()
        self.btn = QPushButton("Choose from list")
        self.btn.clicked.connect(self.getItem)

        self.le = QLineEdit()
        layout.addRow(self.btn, self.le)
        self.btn1 = QPushButton("get name")
        self.btn1.clicked.connect(self.gettext)

        self.le1 = QLineEdit()
        layout.addRow(self.btn1, self.le1)
        self.btn2 = QPushButton("Enter an integer")
        self.btn2.clicked.connect(self.getint)

        self.le2 = QLineEdit()
        layout.addRow(self.btn2, self.le2)
        self.setLayout(layout)
        self.setWindowTitle("Input Dialog demo")

        layout.addRow(mw)
Пример #5
0
    def showResults(self, ):
        """ Plots BMD change using matplotlib """
        # Create plot window
        if self.plotWin == None:
            self.plotWin = QtGui.QDialog(self, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |  \
                                         QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowMaximizeButtonHint)
            self.plotWin.setWindowTitle('BMDanalyse')
            self.plotWin.setWindowIcon(self.icons['BMDanalyseIcon'])
            self.plotWin.setMinimumSize(600, 500)
            self.plotWin.resize(self.minimumSize())

            # Create Matplotlib widget
            self.mplw = MatplotlibWidget(size=(5, 6))
            self.fig = self.mplw.getFigure()

            self.editDataButton = QtGui.QPushButton('Edit plot')
            self.exportCSVButton = QtGui.QPushButton('Export data')
            self.mplw.toolbar.addWidget(self.editDataButton)
            self.mplw.toolbar.addWidget(self.exportCSVButton)
            self.editDataButton.clicked.connect(self.showEditBox)
            self.exportCSVButton.clicked.connect(self.BMDtoCSVfile)

            # Format plot window
            self.plotWinLayout = QtGui.QVBoxLayout()
            self.plotWinLayout.addWidget(self.mplw)
            self.plotWin.setLayout(self.plotWinLayout)

        self.createFigure()
        self.plotWin.show()
        self.mplw.draw()
Пример #6
0
    def __init__(self, args):
        super().__init__()
        self.setObjectName('I')

        self.main_layout = main_layout = QtGui.QVBoxLayout()
        self.setLayout(main_layout)

        self.plot_widget = MatplotlibWidget()

        btn_layout = QtGui.QHBoxLayout()

        self.startstop = QtGui.QPushButton(self)
        self.startstop.setText('Start')
        self.label = QtGui.QLabel(self)
        self.display_label(0)
        self.save_btn = QtGui.QPushButton('Save', self)

        btn_layout.addWidget(self.startstop)
        btn_layout.addWidget(self.save_btn)
        btn_layout.addWidget(self.label)

        main_layout.addWidget(self.plot_widget)
        main_layout.addLayout(btn_layout)

        self.startstop.clicked.connect(self.on_startstop_clicked)
        self.save_btn.clicked.connect(self.save_to_file)

        print('INIT')
Пример #7
0
 def createPlotWidget(self):
     """
     Creates the plotWidget
     """
     self.vbLayout=QVBoxLayout(self)
     self.plotLayout=pg.LayoutWidget()
     self.vbLayout.addWidget(self.plotLayout)
     
     row=0
     col=0
     lineWidthLabel=QLabel('Line width')
     self.lineWidthLineEdit=QLineEdit('2')
     self.lineWidthLineEdit.returnPressed.connect(self.updatePlot)
     pointSizeLabel=QLabel('Point size')
     self.pointSizeLineEdit=QLineEdit('5')
     self.pointSizeLineEdit.returnPressed.connect(self.updatePlot)
     self.bgCheckBox=QCheckBox('White BG')
     self.bgCheckBox.stateChanged.connect(self.bgCheckBoxChanged)
     self.errorbarCheckBox=QCheckBox('Errorbar')
     self.errorbarCheckBox.stateChanged.connect(self.errorbarChanged)
     self.plotLayout.addWidget(lineWidthLabel,row=row,col=col)
     col+=1
     self.plotLayout.addWidget(self.lineWidthLineEdit,row=row,col=col)
     col+=1
     self.plotLayout.addWidget(pointSizeLabel,row=row,col=col)
     col+=1
     self.plotLayout.addWidget(self.pointSizeLineEdit,row=row,col=col)
     col+=1
     self.plotLayout.addWidget(self.bgCheckBox,row=row,col=col)
     col+=1
     self.plotLayout.addWidget(self.errorbarCheckBox,row=row,col=col)
     col=0
     row+=1
     if self.matplotlib:
         self.plotWidget=MatplotlibWidget()
         self.subplot=self.plotWidget.getFigure().add_subplot(111)
         self.plotWidget.fig.set_tight_layout(True)
         self.plotWidget.draw()
     else:
         self.plotWidget=pg.PlotWidget()
         self.plotWidget.getPlotItem().vb.scene().sigMouseMoved.connect(self.mouseMoved)
         self.legendItem=pg.LegendItem(offset=(0.0,1.0))
         self.legendItem.setParentItem(self.plotWidget.getPlotItem())
         
     self.plotLayout.addWidget(self.plotWidget,row=row,col=col,colspan=6)
     row+=1
     col=0 
     self.crosshairLabel=QLabel(u'X={: .5f} , y={: .5f}'.format(0.0,0.0))                                 
     self.xLogCheckBox=QCheckBox('LogX')
     self.xLogCheckBox.setTristate(False)
     self.xLogCheckBox.stateChanged.connect(self.updatePlot)
     self.yLogCheckBox=QCheckBox('LogY')
     self.yLogCheckBox.setTristate(False)
     self.yLogCheckBox.stateChanged.connect(self.updatePlot)
     if not self.matplotlib:
         self.plotLayout.addWidget(self.crosshairLabel,row=row,col=col,colspan=4)
     self.plotLayout.addWidget(self.xLogCheckBox,row=row,col=4)
     self.plotLayout.addWidget(self.yLogCheckBox,row=row,col=5)
Пример #8
0
def test_init_with_matplotlib_arguments():
    """
    Tests the contructor that sets variables associated with Matplotlib and
    abstracts away any details about the underlying QWidget parent class.
    """
    figsize = (1.0, 3.0)
    dpi = 256
    mplw = MatplotlibWidget(figsize, dpi)

    assert_widget_fields(mplw, default_parent, figsize, dpi)
Пример #9
0
def test_init_with_qwidget_arguments():
    """
    Ensures providing only the parent argument to the constructor properly
    intializes the widget to match the QWidget constructor prototype.
    """
    win = QtWidgets.QMainWindow()

    mplw = MatplotlibWidget(win)

    assert_widget_fields(mplw, win, default_figsize, default_dpi)
Пример #10
0
    def logPlotPanel(self):
        print('Initiating plot widget...')
        self.logname = self.lastree.tree.selectedItems()[0].text(0)

        depthcol_name = 'DEPTH'
        # firstlog
        logdata = []
        depthdata = []
        self.mw = MatplotlibWidget(size=(22.0, 4), dpi=100)
        self.logscrollArea.setWidget(self.mw)
        self.ax = self.mw.getFigure().add_subplot(1, 1, 1)

        self.filtw = MatplotlibWidget(size=(22.0, 4), dpi=100)
        self.filtscrollArea.setWidget(self.filtw)
        ax2 = self.filtw.getFigure().add_subplot(1, 1, 1)

        for i, lb in enumerate(self.log_bundle):
            # print(lb[self.logname],lb[depthcol_name])
            self.ax.plot(lb[depthcol_name], lb[self.logname])
            ax2.plot(lb[depthcol_name], self.flt_logs[self.logname][i])
Пример #11
0
def test_init_sanity():
    """
    Tests to ensure the constructor behaves as expected.
    """
    parent = QtWidgets.QMainWindow()
    figsize = (1.0, 4.0)
    dpi = 256

    # These tests will not work if these two assertions do not hold.
    assert figsize != default_figsize
    assert dpi != default_dpi

    mplw = MatplotlibWidget(parent, figsize=figsize)
    assert_widget_fields(mplw, parent, figsize, default_dpi)

    mplw = MatplotlibWidget(parent, dpi=dpi)
    assert_widget_fields(mplw, parent, default_figsize, dpi)

    mplw = MatplotlibWidget(parent, figsize, dpi)
    assert_widget_fields(mplw, parent, figsize, dpi)

    mplw = MatplotlibWidget(figsize, dpi)
    assert_widget_fields(mplw, default_parent, figsize, dpi)

    mplw = MatplotlibWidget(figsize, dpi, parent)
    assert_widget_fields(mplw, parent, figsize, dpi)

    mplw = MatplotlibWidget(dpi=dpi, parent=parent)
    assert_widget_fields(mplw, parent, default_figsize, dpi)
Пример #12
0
 def histFilter(self):
     depthcol_name='DEPTH'
     self.filtw = MatplotlibWidget(size=(22.0, 4), dpi=100  ) 
     self.filtscrollArea.setWidget(self.filtw)
     ax=self.filtw.getFigure().add_subplot(1,1,1)
     
                
     hist_bins=np.int(self.n_hist_segments_le.text())
     n_big_patches=np.int(self.n_patches2retain_le.text())
     self.flt_logs[self.logname]=[]
     for i,lb in enumerate(self.log_bundle):
         self.flt_logs[self.logname][i]=hist_filter(lb[self.logname].copy(),n_big_patches=n_big_patches,hist_bins=hist_bins)
         ax.plot(lb[depthcol_name],self.flt_logs[self.logname][i])
Пример #13
0
    def histFilter(self):
        depthcol_name = 'DEPTH'
        self.filtw = MatplotlibWidget(size=(22.0, 4), dpi=100)
        self.filtscrollArea.setWidget(self.filtw)
        ax = self.filtw.getFigure().add_subplot(1, 1, 1)
        flt_arrs = []

        hist_bins = np.int(self.n_hist_segments_le.text())
        n_big_patches = np.int(self.n_patches2retain_le.text())
        for lb in self.log_bundle:
            flt_arrs.append(
                hist_filter(lb[self.logname].copy(),
                            n_big_patches=n_big_patches,
                            hist_bins=hist_bins))
            ax.plot(lb[depthcol_name], flt_arrs[-1])
Пример #14
0
    def _create_expected_answered_ease_heatmap(self):
        chosen_ease = ['1', '2', '3', '4']
        expected_ease = ['1', '2', '3']

        answers = [[t.expected_ease, t.chosen_ease]
                   for t in RevisionAnswer.select(RevisionAnswer.expected_ease,
                                                  RevisionAnswer.chosen_ease)]
        df = pandas.DataFrame(answers,
                              columns=['expected_ease',
                                       'chosen_ease']).groupby([
                                           'expected_ease', 'chosen_ease'
                                       ]).size().unstack(fill_value=0)
        mat = df.to_numpy()
        print(mat)

        mw = MatplotlibWidget()
        fig = mw.getFigure()
        ax = fig.add_subplot()
        im = ax.imshow(df)

        ax.set_xticks(numpy.arange(len(chosen_ease)))
        ax.set_yticks(numpy.arange(len(expected_ease)))

        ax.set_xticklabels(chosen_ease)
        ax.set_yticklabels(expected_ease)

        ax.set_xlabel("Chosen ease")
        ax.set_ylabel("Expected ease")

        pyplot.setp(ax.get_xticklabels(),
                    rotation=45,
                    ha="right",
                    rotation_mode="anchor")

        for i in range(len(chosen_ease)):
            for j in range(len(expected_ease)):
                text = ax.text(i,
                               j,
                               mat[j, i],
                               ha="center",
                               va="center",
                               color="w")

        fig.tight_layout()
        mw.draw()
        self.layout.addWidget(mw)
Пример #15
0
    def __init__(self):
        super(VESViewer, self).__init__()

        self.createActions()
        self.createMenus()
        win = QWidget()
        self.setCentralWidget(win)
        self.plotlayout = QHBoxLayout(self)
        self.init_m = np.append(self.init_res, self.init_thicks)
        self.datapath = self.proj_path + 'VESData/'
        # creates plot
        # self.plot = pg.PlotWidget()
        self.mw = MatplotlibWidget()
        self.subplot1 = self.mw.getFigure().add_subplot(121)
        self.subplot2 = self.mw.getFigure().add_subplot(122)
        self.mw.draw()
        self.plotlayout.addWidget(self.mw)
        # mltoolbar=self.mw.get_ToolBar()

        layout = BorderLayout()

        layout.add(self.plotlayout, BorderLayout.Center)

        self.list_w = QListWidget()
        # self.listitem.append(QListWidgetItem('Welcome to ResLayer!!!'))
        self.list_w.setFrameStyle(QFrame.Box | QFrame.Raised)
        layout.add(QWidgetItem(self.list_w), BorderLayout.West)
        win.setLayout(layout)
        # self.list_w.addItem(self.listitem[0])
        # self.list_w.itemClicked.connect(self.OnSingleClick)
        self.list_w.itemSelectionChanged.connect(self.OnSingleClick)

        self.setWindowTitle("Border Layout")

        mypen = pg.mkPen('y', width=1)
        # self.curve = self.plot.plot(x=[], y=[], pen=mypen)
        # self.plot.addItem(self.curve)

        files = os.listdir(self.datapath)
        for f in files:
            self.listitem.append(QListWidgetItem(f[:-4]))
            self.list_w.addItem(self.listitem[-1])

        self.vdf = pd.read_csv(self.datapath + files[0], header=None)
        self.plotVES()
Пример #16
0
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setGeometry(100, 100, 600, 900)

        self.centralWidget = QWidget()
        # GrphicsWidget()
        layout = QHBoxLayout(self.centralWidget)
        self.scrollArea = QScrollArea(self)

        # gwidget=GrphicsWidget()

        self.mw = MatplotlibWidget(size=(3.0, 40.0), dpi=100)
        lplot = self.mw.getFigure().add_subplot(121)
        # print(dir(self.mw.getFigure()))

        # self.mw.getFigure().set_axes([0.85, 0.1, 0.075, 0.8])
        self.ax = self.mw.getFigure().gca()
        self.ax.set_position([0.1, 0.05, 0.8, 0.94])
        self.ax.invert_yaxis()
        # l, b, w, h = self.ax.get_position().bounds
        # print(l, b, w, h)
        self.mw.draw()
        # self.plotlayout.addWidget(self.mw)

        self.scrollArea.setWidget(self.mw)

        layout.addWidget(self.scrollArea)

        self.setCentralWidget(self.centralWidget)
        self.lastree = LasTree()
        self.logtree = LasTree()
        self.wellLoad()
        self.logtree.set_files(['GR', 'BS'])
        self.logtree.buildTreeWidget()
        self.logtree.tree.itemSelectionChanged.connect(self.logPlot)

        self.createDockWindows()

        # self.logFileList.itemSelectionChanged.connect(self.lasLoad)
        # if not self.las_just_selected:
        # self.logList.itemSelectionChanged.connect(self.logPlot)

        self.setWindowTitle("Loggy")
Пример #17
0
    def __init__(self, args):
        super().__init__()

        self.main_layout = main_layout = QtGui.QVBoxLayout()
        self.setLayout(main_layout)

        self.startstop_button = QtGui.QPushButton('Start', self)
        self.save_button = QtGui.QPushButton('Save', self)
        self.label = QtGui.QLabel(self)
        self.display_time(0)

        self.plot_widget = MatplotlibWidget()

        main_layout.addWidget(self.startstop_button)
        main_layout.addWidget(self.label)
        main_layout.addWidget(self.plot_widget)
        main_layout.addWidget(self.save_button)

        self.startstop_button.clicked.connect(self.on_startstop_clicked)
        self.save_button.clicked.connect(self.save_to_file)
Пример #18
0
    def __init__(self, *args, **kwargs):
        log.info('')
        super().__init__(*args, **kwargs)

        self.points = None
        self._axis_aitoff_text_labels = []

        self.mw = MatplotlibWidget()
        self.mw.toolbar.hide()
        self.subplot = self.mw.getFigure().add_subplot(111,
                                                       projection="aitoff")
        self.subplot.grid('on')

        #
        #  Add some dummy points
        #
        self.mw.draw()
        self.subplot_background = self.subplot.get_figure(
        ).canvas.copy_from_bbox(self.subplot.bbox)

        self.addWidget(self.mw)
    def __init__(self, experiment, chemical, selection_widget):
        super(SplatalogueAssignmentWindow, self).__init__()
        self.setWindowIcon(QIcon(QPixmap(images.LOGO_ICON)))
        self.setAttribute(Qt.WA_DeleteOnClose)
        self.setWindowTitle("Splatalogue Assignment Window")
        self.resize(1500, 750)

        ''' Data '''
        self.experiment = experiment
        self.chemical = chemical

        ''' Widgets '''
        self.info_widget = SplatalogueInfoWidget(chemical)
        self.table_widget = QTableWidget()
        self.matplot_widget = MatplotlibWidget()
        self.selection_widget = selection_widget

        '''Colors'''
        self.color___experiment_edge = SplatalogueAssignmentWindow.EXPERIMENT_EDGE_COLOR
        self.color___face_color = SplatalogueAssignmentWindow.FACE_COLOR

        self.__setup__()
Пример #20
0
    def __init__(self, args):
        self.app = QtGui.QApplication([])
        QtGui.QWidget.__init__(self)

        self.main_layout = main_layout = QtGui.QVBoxLayout()
        self.setLayout(main_layout)

        self.btn = QtGui.QPushButton('Start', self)
        main_layout.addWidget(self.btn)

        self.label = QtGui.QLabel(self)
        self.label.setText('Bonjour')
        main_layout.addWidget(self.label)

        self.btn.clicked.connect(self.on_btn_clicked)

        self.w_plot = MatplotlibWidget()
        main_layout.addWidget(self.w_plot)
        self.plot_data([1, 2, 1, 5])

        instr = vxi11.Instrument('134.157.91.150')
        self.scope = TektronixScope(instr)

        self.display_time(0)
Пример #21
0
def test_init_with_no_arguments():
    mplw = MatplotlibWidget()

    assert_widget_fields(mplw, default_parent, default_figsize, default_dpi)
Пример #22
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1022, 952)
        MainWindow.setMinimumSize(QtCore.QSize(1022, 952))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(".\\assets/MainIcon.png"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout_16 = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout_16.setObjectName("verticalLayout_16")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.label_11 = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_11.setFont(font)
        self.label_11.setObjectName("label_11")
        self.gridLayout.addWidget(self.label_11, 0, 0, 1, 1)
        self.label_24 = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_24.setFont(font)
        self.label_24.setObjectName("label_24")
        self.gridLayout.addWidget(self.label_24, 2, 1, 1, 1)
        self.spectrogram_before = MatplotlibWidget()
        self.spectrogram_before.setMinimumSize(QtCore.QSize(470, 227))
        self.spectrogram_before.setMaximumSize(QtCore.QSize(946, 228))
        self.spectrogram_before.setObjectName("spectrogram_before")
        self.gridLayout.addWidget(self.spectrogram_before, 3, 0, 1, 1)
        self.spectrogram_after = MatplotlibWidget()
        self.spectrogram_after.setMinimumSize(QtCore.QSize(470, 227))
        self.spectrogram_after.setMaximumSize(QtCore.QSize(946, 228))
        self.spectrogram_after.setObjectName("spectrogram_after")
        self.gridLayout.addWidget(self.spectrogram_after, 3, 1, 1, 1)
        self.verticalLayout_4 = QtWidgets.QVBoxLayout()
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.controlers_before = QtWidgets.QHBoxLayout()
        self.controlers_before.setObjectName("controlers_before")
        self.jump_back_btn_before = QtWidgets.QPushButton(self.centralwidget)
        self.jump_back_btn_before.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(".\\assets/fast-backward.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.jump_back_btn_before.setIcon(icon)
        self.jump_back_btn_before.setObjectName("jump_back_btn_before")
        self.controlers_before.addWidget(self.jump_back_btn_before)
        self.play_btn_before = QtWidgets.QPushButton(self.centralwidget)
        self.play_btn_before.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(".\\assets/play.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.play_btn_before.setIcon(icon1)
        self.play_btn_before.setObjectName("play_btn_before")
        self.controlers_before.addWidget(self.play_btn_before)
        self.pause_btn_before = QtWidgets.QPushButton(self.centralwidget)
        self.pause_btn_before.setText("")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(".\\assets/pause.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pause_btn_before.setIcon(icon2)
        self.pause_btn_before.setObjectName("pause_btn_before")
        self.controlers_before.addWidget(self.pause_btn_before)
        self.stop_btn_before = QtWidgets.QPushButton(self.centralwidget)
        self.stop_btn_before.setText("")
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(".\\assets/stop.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.stop_btn_before.setIcon(icon3)
        self.stop_btn_before.setObjectName("stop_btn_before")
        self.controlers_before.addWidget(self.stop_btn_before)
        self.jump_forward_btn_before = QtWidgets.QPushButton(self.centralwidget)
        self.jump_forward_btn_before.setText("")
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(".\\assets/fast-forward.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.jump_forward_btn_before.setIcon(icon4)
        self.jump_forward_btn_before.setObjectName("jump_forward_btn_before")
        self.controlers_before.addWidget(self.jump_forward_btn_before)
        self.zoom_in_btn_before = QtWidgets.QPushButton(self.centralwidget)
        self.zoom_in_btn_before.setText("")
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(".\\assets/zoom-in.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.zoom_in_btn_before.setIcon(icon5)
        self.zoom_in_btn_before.setObjectName("zoom_in_btn_before")
        self.controlers_before.addWidget(self.zoom_in_btn_before)
        self.zoom_out_btn_before = QtWidgets.QPushButton(self.centralwidget)
        self.zoom_out_btn_before.setText("")
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap(".\\assets/zoom-out.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.zoom_out_btn_before.setIcon(icon6)
        self.zoom_out_btn_before.setObjectName("zoom_out_btn_before")
        self.controlers_before.addWidget(self.zoom_out_btn_before)
        self.verticalLayout_4.addLayout(self.controlers_before)
        self.gridLayout.addLayout(self.verticalLayout_4, 5, 0, 1, 1)
        self.label_13 = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_13.setFont(font)
        self.label_13.setObjectName("label_13")
        self.gridLayout.addWidget(self.label_13, 2, 0, 1, 1)
        self.label_12 = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_12.setFont(font)
        self.label_12.setObjectName("label_12")
        self.gridLayout.addWidget(self.label_12, 0, 1, 1, 1)
        self.time_before = QtWidgets.QHBoxLayout()
        self.time_before.setObjectName("time_before")
        self.current_time_before = QtWidgets.QLabel(self.centralwidget)
        self.current_time_before.setMinimumSize(QtCore.QSize(80, 0))
        self.current_time_before.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.current_time_before.setObjectName("current_time_before")
        self.time_before.addWidget(self.current_time_before)
        self.time_seeker_before = QtWidgets.QSlider(self.centralwidget)
        self.time_seeker_before.setOrientation(QtCore.Qt.Horizontal)
        self.time_seeker_before.setObjectName("time_seeker_before")
        self.time_before.addWidget(self.time_seeker_before)
        self.total_time_before = QtWidgets.QLabel(self.centralwidget)
        self.total_time_before.setMinimumSize(QtCore.QSize(80, 0))
        self.total_time_before.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.total_time_before.setObjectName("total_time_before")
        self.time_before.addWidget(self.total_time_before)
        self.playback_speed_before = QtWidgets.QComboBox(self.centralwidget)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.playback_speed_before.setFont(font)
        self.playback_speed_before.setObjectName("playback_speed_before")
        self.playback_speed_before.addItem("")
        self.playback_speed_before.addItem("")
        self.playback_speed_before.addItem("")
        self.playback_speed_before.addItem("")
        self.playback_speed_before.addItem("")
        self.playback_speed_before.addItem("")
        self.time_before.addWidget(self.playback_speed_before)
        self.gridLayout.addLayout(self.time_before, 4, 0, 1, 1)
        self.time_after = QtWidgets.QHBoxLayout()
        self.time_after.setObjectName("time_after")
        self.current_time_after = QtWidgets.QLabel(self.centralwidget)
        self.current_time_after.setMinimumSize(QtCore.QSize(80, 0))
        self.current_time_after.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.current_time_after.setObjectName("current_time_after")
        self.time_after.addWidget(self.current_time_after)
        self.time_seeker_after = QtWidgets.QSlider(self.centralwidget)
        self.time_seeker_after.setOrientation(QtCore.Qt.Horizontal)
        self.time_seeker_after.setObjectName("time_seeker_after")
        self.time_after.addWidget(self.time_seeker_after)
        self.total_time_after = QtWidgets.QLabel(self.centralwidget)
        self.total_time_after.setMinimumSize(QtCore.QSize(80, 0))
        self.total_time_after.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.total_time_after.setObjectName("total_time_after")
        self.time_after.addWidget(self.total_time_after)
        self.playback_speed_after = QtWidgets.QComboBox(self.centralwidget)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.playback_speed_after.setFont(font)
        self.playback_speed_after.setObjectName("playback_speed_after")
        self.playback_speed_after.addItem("")
        self.playback_speed_after.addItem("")
        self.playback_speed_after.addItem("")
        self.playback_speed_after.addItem("")
        self.playback_speed_after.addItem("")
        self.playback_speed_after.addItem("")
        self.time_after.addWidget(self.playback_speed_after)
        self.gridLayout.addLayout(self.time_after, 4, 1, 1, 1)
        self.graph_after = PlotWidget(self.centralwidget)
        self.graph_after.setMinimumSize(QtCore.QSize(470, 227))
        self.graph_after.setObjectName("graph_after")
        self.gridLayout.addWidget(self.graph_after, 1, 1, 1, 1)
        self.graph_before = PlotWidget(self.centralwidget)
        self.graph_before.setMinimumSize(QtCore.QSize(470, 227))
        self.graph_before.setObjectName("graph_before")
        self.gridLayout.addWidget(self.graph_before, 1, 0, 1, 1)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.controlers_after = QtWidgets.QHBoxLayout()
        self.controlers_after.setObjectName("controlers_after")
        self.jump_back_btn_after = QtWidgets.QPushButton(self.centralwidget)
        self.jump_back_btn_after.setText("")
        self.jump_back_btn_after.setIcon(icon)
        self.jump_back_btn_after.setObjectName("jump_back_btn_after")
        self.controlers_after.addWidget(self.jump_back_btn_after)
        self.play_btn_after = QtWidgets.QPushButton(self.centralwidget)
        self.play_btn_after.setText("")
        self.play_btn_after.setIcon(icon1)
        self.play_btn_after.setObjectName("play_btn_after")
        self.controlers_after.addWidget(self.play_btn_after)
        self.pause_btn_after = QtWidgets.QPushButton(self.centralwidget)
        self.pause_btn_after.setText("")
        self.pause_btn_after.setIcon(icon2)
        self.pause_btn_after.setObjectName("pause_btn_after")
        self.controlers_after.addWidget(self.pause_btn_after)
        self.stop_btn_after = QtWidgets.QPushButton(self.centralwidget)
        self.stop_btn_after.setText("")
        self.stop_btn_after.setIcon(icon3)
        self.stop_btn_after.setObjectName("stop_btn_after")
        self.controlers_after.addWidget(self.stop_btn_after)
        self.jump_forward_btn_after = QtWidgets.QPushButton(self.centralwidget)
        self.jump_forward_btn_after.setText("")
        self.jump_forward_btn_after.setIcon(icon4)
        self.jump_forward_btn_after.setObjectName("jump_forward_btn_after")
        self.controlers_after.addWidget(self.jump_forward_btn_after)
        self.zoom_in_btn_after = QtWidgets.QPushButton(self.centralwidget)
        self.zoom_in_btn_after.setText("")
        self.zoom_in_btn_after.setIcon(icon5)
        self.zoom_in_btn_after.setObjectName("zoom_in_btn_after")
        self.controlers_after.addWidget(self.zoom_in_btn_after)
        self.zoom_out_btn_after = QtWidgets.QPushButton(self.centralwidget)
        self.zoom_out_btn_after.setText("")
        self.zoom_out_btn_after.setIcon(icon6)
        self.zoom_out_btn_after.setObjectName("zoom_out_btn_after")
        self.controlers_after.addWidget(self.zoom_out_btn_after)
        self.verticalLayout_3.addLayout(self.controlers_after)
        self.horizontalLayout.addLayout(self.verticalLayout_3)
        self.gridLayout.addLayout(self.horizontalLayout, 5, 1, 1, 1)
        self.verticalLayout_14 = QtWidgets.QVBoxLayout()
        self.verticalLayout_14.setObjectName("verticalLayout_14")
        self.max_freq_content_label = QtWidgets.QLabel(self.centralwidget)
        self.max_freq_content_label.setObjectName("max_freq_content_label")
        self.verticalLayout_14.addWidget(self.max_freq_content_label)
        self.max_freq_content = QtWidgets.QSlider(self.centralwidget)
        self.max_freq_content.setMaximum(11)
        self.max_freq_content.setProperty("value", 11)
        self.max_freq_content.setOrientation(QtCore.Qt.Vertical)
        self.max_freq_content.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.max_freq_content.setObjectName("max_freq_content")
        self.verticalLayout_14.addWidget(self.max_freq_content)
        self.max_freq_content_lab = QtWidgets.QLabel(self.centralwidget)
        self.max_freq_content_lab.setAlignment(QtCore.Qt.AlignCenter)
        self.max_freq_content_lab.setObjectName("max_freq_content_lab")
        self.verticalLayout_14.addWidget(self.max_freq_content_lab)
        self.gridLayout.addLayout(self.verticalLayout_14, 1, 2, 1, 1)
        self.verticalLayout_15 = QtWidgets.QVBoxLayout()
        self.verticalLayout_15.setObjectName("verticalLayout_15")
        self.min_freq_content_label = QtWidgets.QLabel(self.centralwidget)
        self.min_freq_content_label.setObjectName("min_freq_content_label")
        self.verticalLayout_15.addWidget(self.min_freq_content_label)
        self.min_freq_content = QtWidgets.QSlider(self.centralwidget)
        self.min_freq_content.setMaximum(11)
        self.min_freq_content.setOrientation(QtCore.Qt.Vertical)
        self.min_freq_content.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.min_freq_content.setObjectName("min_freq_content")
        self.verticalLayout_15.addWidget(self.min_freq_content)
        self.min_freq_content_lab = QtWidgets.QLabel(self.centralwidget)
        self.min_freq_content_lab.setAlignment(QtCore.Qt.AlignCenter)
        self.min_freq_content_lab.setObjectName("min_freq_content_lab")
        self.verticalLayout_15.addWidget(self.min_freq_content_lab)
        self.gridLayout.addLayout(self.verticalLayout_15, 3, 2, 1, 1)
        self.verticalLayout_16.addLayout(self.gridLayout)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.band_1 = QtWidgets.QSlider(self.centralwidget)
        self.band_1.setMaximum(8)
        self.band_1.setPageStep(1)
        self.band_1.setProperty("value", 4)
        self.band_1.setOrientation(QtCore.Qt.Vertical)
        self.band_1.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_1.setObjectName("band_1")
        self.verticalLayout.addWidget(self.band_1)
        self.band_1_label = QtWidgets.QLabel(self.centralwidget)
        self.band_1_label.setObjectName("band_1_label")
        self.verticalLayout.addWidget(self.band_1_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.verticalLayout_2.addWidget(self.label_2)
        self.band_2 = QtWidgets.QSlider(self.centralwidget)
        self.band_2.setMaximum(8)
        self.band_2.setPageStep(1)
        self.band_2.setProperty("value", 4)
        self.band_2.setOrientation(QtCore.Qt.Vertical)
        self.band_2.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_2.setObjectName("band_2")
        self.verticalLayout_2.addWidget(self.band_2)
        self.band_2_label = QtWidgets.QLabel(self.centralwidget)
        self.band_2_label.setObjectName("band_2_label")
        self.verticalLayout_2.addWidget(self.band_2_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_2)
        self.verticalLayout_5 = QtWidgets.QVBoxLayout()
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setObjectName("label_3")
        self.verticalLayout_5.addWidget(self.label_3)
        self.band_3 = QtWidgets.QSlider(self.centralwidget)
        self.band_3.setMaximum(8)
        self.band_3.setPageStep(1)
        self.band_3.setProperty("value", 4)
        self.band_3.setOrientation(QtCore.Qt.Vertical)
        self.band_3.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_3.setObjectName("band_3")
        self.verticalLayout_5.addWidget(self.band_3)
        self.band_3_label = QtWidgets.QLabel(self.centralwidget)
        self.band_3_label.setObjectName("band_3_label")
        self.verticalLayout_5.addWidget(self.band_3_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_5)
        self.verticalLayout_6 = QtWidgets.QVBoxLayout()
        self.verticalLayout_6.setObjectName("verticalLayout_6")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setObjectName("label_4")
        self.verticalLayout_6.addWidget(self.label_4)
        self.band_4 = QtWidgets.QSlider(self.centralwidget)
        self.band_4.setAutoFillBackground(False)
        self.band_4.setStyleSheet("color: rgb(0, 0, 0);")
        self.band_4.setMaximum(8)
        self.band_4.setPageStep(1)
        self.band_4.setProperty("value", 4)
        self.band_4.setOrientation(QtCore.Qt.Vertical)
        self.band_4.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_4.setObjectName("band_4")
        self.verticalLayout_6.addWidget(self.band_4)
        self.band_4_label = QtWidgets.QLabel(self.centralwidget)
        self.band_4_label.setObjectName("band_4_label")
        self.verticalLayout_6.addWidget(self.band_4_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_6)
        self.verticalLayout_7 = QtWidgets.QVBoxLayout()
        self.verticalLayout_7.setObjectName("verticalLayout_7")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setObjectName("label_5")
        self.verticalLayout_7.addWidget(self.label_5)
        self.band_5 = QtWidgets.QSlider(self.centralwidget)
        self.band_5.setMaximum(8)
        self.band_5.setPageStep(1)
        self.band_5.setProperty("value", 4)
        self.band_5.setOrientation(QtCore.Qt.Vertical)
        self.band_5.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_5.setObjectName("band_5")
        self.verticalLayout_7.addWidget(self.band_5)
        self.band_5_label = QtWidgets.QLabel(self.centralwidget)
        self.band_5_label.setObjectName("band_5_label")
        self.verticalLayout_7.addWidget(self.band_5_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_7)
        self.verticalLayout_8 = QtWidgets.QVBoxLayout()
        self.verticalLayout_8.setObjectName("verticalLayout_8")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setObjectName("label_6")
        self.verticalLayout_8.addWidget(self.label_6)
        self.band_6 = QtWidgets.QSlider(self.centralwidget)
        self.band_6.setMaximum(8)
        self.band_6.setPageStep(1)
        self.band_6.setProperty("value", 4)
        self.band_6.setOrientation(QtCore.Qt.Vertical)
        self.band_6.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_6.setObjectName("band_6")
        self.verticalLayout_8.addWidget(self.band_6)
        self.band_6_label = QtWidgets.QLabel(self.centralwidget)
        self.band_6_label.setObjectName("band_6_label")
        self.verticalLayout_8.addWidget(self.band_6_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_8)
        self.verticalLayout_9 = QtWidgets.QVBoxLayout()
        self.verticalLayout_9.setObjectName("verticalLayout_9")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setObjectName("label_7")
        self.verticalLayout_9.addWidget(self.label_7)
        self.band_7 = QtWidgets.QSlider(self.centralwidget)
        self.band_7.setMaximum(8)
        self.band_7.setPageStep(1)
        self.band_7.setProperty("value", 4)
        self.band_7.setOrientation(QtCore.Qt.Vertical)
        self.band_7.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_7.setObjectName("band_7")
        self.verticalLayout_9.addWidget(self.band_7)
        self.band_7_label = QtWidgets.QLabel(self.centralwidget)
        self.band_7_label.setObjectName("band_7_label")
        self.verticalLayout_9.addWidget(self.band_7_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_9)
        self.verticalLayout_10 = QtWidgets.QVBoxLayout()
        self.verticalLayout_10.setObjectName("verticalLayout_10")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setObjectName("label_8")
        self.verticalLayout_10.addWidget(self.label_8)
        self.band_8 = QtWidgets.QSlider(self.centralwidget)
        self.band_8.setMaximum(8)
        self.band_8.setPageStep(1)
        self.band_8.setProperty("value", 4)
        self.band_8.setOrientation(QtCore.Qt.Vertical)
        self.band_8.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_8.setObjectName("band_8")
        self.verticalLayout_10.addWidget(self.band_8)
        self.band_8_label = QtWidgets.QLabel(self.centralwidget)
        self.band_8_label.setObjectName("band_8_label")
        self.verticalLayout_10.addWidget(self.band_8_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_10)
        self.verticalLayout_11 = QtWidgets.QVBoxLayout()
        self.verticalLayout_11.setObjectName("verticalLayout_11")
        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setObjectName("label_9")
        self.verticalLayout_11.addWidget(self.label_9)
        self.band_9 = QtWidgets.QSlider(self.centralwidget)
        self.band_9.setMaximum(8)
        self.band_9.setPageStep(1)
        self.band_9.setProperty("value", 4)
        self.band_9.setOrientation(QtCore.Qt.Vertical)
        self.band_9.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_9.setObjectName("band_9")
        self.verticalLayout_11.addWidget(self.band_9)
        self.band_9_label = QtWidgets.QLabel(self.centralwidget)
        self.band_9_label.setObjectName("band_9_label")
        self.verticalLayout_11.addWidget(self.band_9_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_11)
        self.verticalLayout_12 = QtWidgets.QVBoxLayout()
        self.verticalLayout_12.setObjectName("verticalLayout_12")
        self.label_10 = QtWidgets.QLabel(self.centralwidget)
        self.label_10.setObjectName("label_10")
        self.verticalLayout_12.addWidget(self.label_10)
        self.band_10 = QtWidgets.QSlider(self.centralwidget)
        self.band_10.setMaximum(8)
        self.band_10.setPageStep(1)
        self.band_10.setProperty("value", 4)
        self.band_10.setOrientation(QtCore.Qt.Vertical)
        self.band_10.setTickPosition(QtWidgets.QSlider.TicksBothSides)
        self.band_10.setObjectName("band_10")
        self.verticalLayout_12.addWidget(self.band_10)
        self.band_10_label = QtWidgets.QLabel(self.centralwidget)
        self.band_10_label.setObjectName("band_10_label")
        self.verticalLayout_12.addWidget(self.band_10_label)
        self.horizontalLayout_2.addLayout(self.verticalLayout_12)
        self.verticalLayout_16.addLayout(self.horizontalLayout_2)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.verticalLayout_13 = QtWidgets.QVBoxLayout()
        self.verticalLayout_13.setObjectName("verticalLayout_13")
        self.palettes_box = QtWidgets.QComboBox(self.centralwidget)
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.palettes_box.setFont(font)
        self.palettes_box.setObjectName("palettes_box")
        self.palettes_box.addItem("")
        self.palettes_box.addItem("")
        self.palettes_box.addItem("")
        self.palettes_box.addItem("")
        self.palettes_box.addItem("")
        self.verticalLayout_13.addWidget(self.palettes_box)
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout_13.addWidget(self.pushButton)
        self.horizontalLayout_3.addLayout(self.verticalLayout_13)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem1)
        self.verticalLayout_16.addLayout(self.horizontalLayout_3)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1022, 26))
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setObjectName("menuFile")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionNew = QtWidgets.QAction(MainWindow)
        self.actionNew.setObjectName("actionNew")
        self.actionExit = QtWidgets.QAction(MainWindow)
        self.actionExit.setObjectName("actionExit")
        self.actionOpen = QtWidgets.QAction(MainWindow)
        self.actionOpen.setObjectName("actionOpen")
        self.actionSave = QtWidgets.QAction(MainWindow)
        self.actionSave.setObjectName("actionSave")
        self.menuFile.addAction(self.actionNew)
        self.menuFile.addAction(self.actionOpen)
        self.menuFile.addAction(self.actionSave)
        self.menuFile.addAction(self.actionExit)
        self.menubar.addAction(self.menuFile.menuAction())

        self.retranslateUi(MainWindow)
        self.playback_speed_before.setCurrentIndex(2)
        self.playback_speed_after.setCurrentIndex(2)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Пример #23
0
    def initialize(self):
        """
        This method will initialize the Main Window, create all the widgets and what not
        :return:
        """

        # ---------------- session filename options ------------------------------------------

        filename_grid_layout = QtWidgets.QGridLayout()

        filename_label = QtWidgets.QLabel("Filename:")
        self.filename = QtWidgets.QLineEdit()
        self.filename.setText(default_filename)
        self.filename.textChanged.connect(self.filename_changed)
        self.filename.setToolTip(
            'The name of the session that you will analyze in gebaSpike!')
        self.choose_filename_btn = QtWidgets.QPushButton("Choose Filename")
        self.choose_filename_btn.setToolTip(
            'This button will allow you to choose the filename to analyze!')
        self.choose_filename_btn.clicked.connect(self.choose_filename)

        filename_grid_layout.addWidget(self.choose_filename_btn, *(0, 0))
        filename_grid_layout.addWidget(filename_label, *(0, 1),
                                       QtCore.Qt.AlignRight)

        # ------------------- cut filename options ---------------------------------

        cut_filename_label = QtWidgets.QLabel("Cut Filename:")
        self.cut_filename = QtWidgets.QLineEdit()
        self.cut_filename.setText(default_filename)
        self.cut_filename.setToolTip(
            'The name of the cut file containing the sorted values!')
        self.choose_cut_filename_btn = QtWidgets.QPushButton(
            "Choose Cut Filename")
        self.choose_cut_filename_btn.setToolTip(
            'This button will allow you to choose a cut file to use!')
        self.choose_cut_filename_btn.clicked.connect(self.choose_cut_filename)

        line_edit_layout = QtWidgets.QVBoxLayout()
        line_edit_layout.addWidget(self.filename)
        line_edit_layout.addWidget(self.cut_filename)

        filename_grid_layout.addWidget(self.choose_cut_filename_btn, *(1, 0))
        filename_grid_layout.addWidget(cut_filename_label, *(1, 1),
                                       QtCore.Qt.AlignRight)

        filename_grid_layout.addLayout(line_edit_layout, *(0, 2), 2, 1)

        # -----------

        max_spike_label = QtWidgets.QLabel("Max Plot Spikes:")
        self.max_spike_plots_text = QtWidgets.QLineEdit()
        self.max_spike_plots_text.setToolTip(
            "This is the maximum number of spikes to plot.")
        self.max_spike_plots_text.setText(str(max_spike_plots))
        self.max_spike_plots_text.textChanged.connect(
            lambda: maxSpikesChange(self, 'main'))

        max_spikes_layout = QtWidgets.QHBoxLayout()
        max_spikes_layout.addWidget(max_spike_label)
        max_spikes_layout.addWidget(self.max_spike_plots_text)

        # ------- move invalid -----------

        move_to_channel_label = QtWidgets.QLabel("Move to Cell:")
        self.move_to_channel = QtWidgets.QLineEdit()
        self.move_to_channel.setToolTip(
            "This is the channel that you will move selected cells too.")
        self.move_to_channel.setText(default_move_channel)
        self.move_to_channel.textChanged.connect(
            lambda: moveToChannel(self, 'main'))

        move_to_channel_layout = QtWidgets.QHBoxLayout()
        move_to_channel_layout.addWidget(move_to_channel_label)
        move_to_channel_layout.addWidget(self.move_to_channel)

        # -------- spike parameter options -------------------------------------

        feature_options = ["None"] + list(feature_name_map.keys())

        spike_parameter_layout = QtWidgets.QHBoxLayout()
        x_axis_label = QtWidgets.QLabel("X-Axis")
        self.x_axis_cb = QtWidgets.QComboBox()
        for option in feature_options:
            self.x_axis_cb.addItem(option)
        self.x_axis_cb.setCurrentIndex(self.x_axis_cb.findText(defaultXAxis))

        self.x_axis_cb.setToolTip("Choose a feature to plot on the X-Axis")

        x_axis_layout = QtWidgets.QHBoxLayout()
        x_axis_layout.addWidget(x_axis_label)
        x_axis_layout.addWidget(self.x_axis_cb)

        y_axis_label = QtWidgets.QLabel("Y-Axis")
        self.y_axis_cb = QtWidgets.QComboBox()
        self.y_axis_cb.setToolTip("Choose a feature to plot on the Y-Axis")
        for option in feature_options:
            self.y_axis_cb.addItem(option)
        self.y_axis_cb.setCurrentIndex(self.y_axis_cb.findText(defaultYAxis))

        y_axis_layout = QtWidgets.QHBoxLayout()
        y_axis_layout.addWidget(y_axis_label)
        y_axis_layout.addWidget(self.y_axis_cb)

        z_axis_label = QtWidgets.QLabel("Z-Axis")
        self.z_axis_cb = QtWidgets.QComboBox()
        self.z_axis_cb.setToolTip("Choose a feature to plot on the Z-Axis")
        for option in feature_options:
            self.z_axis_cb.addItem(option)
        self.z_axis_cb.setCurrentIndex(self.z_axis_cb.findText(defaultZAxis))

        z_axis_layout = QtWidgets.QHBoxLayout()
        z_axis_layout.addWidget(z_axis_label)
        z_axis_layout.addWidget(self.z_axis_cb)

        axis_layout = QtWidgets.QHBoxLayout()
        axis_layout.addLayout(x_axis_layout)
        axis_layout.addLayout(y_axis_layout)
        axis_layout.addLayout(z_axis_layout)

        tetrode_layout = QtWidgets.QHBoxLayout()
        tetrode_label = QtWidgets.QLabel("Tetrode:")
        self.tetrode_cb = QtWidgets.QComboBox()
        self.tetrode_cb.currentIndexChanged.connect(self.tetrode_changed)
        tetrode_layout.addWidget(tetrode_label)
        tetrode_layout.addWidget(self.tetrode_cb)

        spike_parameter_widgets = [
            tetrode_layout, axis_layout, move_to_channel_layout,
            max_spikes_layout
        ]

        spike_parameter_layout.addStretch(1)
        for i, widget in enumerate(spike_parameter_widgets):
            if 'Layout' in widget.__str__():
                spike_parameter_layout.addLayout(widget)
                spike_parameter_layout.addStretch(1)
            else:
                spike_parameter_layout.addWidget(widget, 0,
                                                 QtCore.Qt.AlignCenter)
                spike_parameter_layout.addStretch(1)

        if openGL:
            self.feature_win = pg.GraphicsWindow()
            feature_win_layout = QtWidgets.QGridLayout()
            self.feature_win.setLayout(feature_win_layout)
            self.glViewWidget = gl.GLViewWidget()
            self.glViewWidget.setBackgroundColor('k')

            feature_win_layout.addWidget(self.glViewWidget)
        else:
            self.feature_win = MatplotlibWidget()
            self.feature_win.toolbar.hide()  # hide the toolbar

        self.unit_win = pg.GraphicsWindow()

        plot_layout = QtWidgets.QHBoxLayout()
        for _object in [self.feature_win, self.unit_win]:
            plot_layout.addWidget(_object)

        # ------------------------------------ version information -------------------------------------------------

        vers_label = QtWidgets.QLabel(f"gebaSpike V{version}")

        # --------- Create the Buttons at the bottom of the Main Window ------------- #

        button_layout = QtWidgets.QHBoxLayout()

        self.plot_btn = QtWidgets.QPushButton("Plot")
        self.plot_btn.clicked.connect(self.plotFunc)

        self.save_btn = QtWidgets.QPushButton("Save Cut")
        self.save_btn.clicked.connect(self.save_function)
        self.save_btn.setToolTip('Save to the current cut file')

        self.undo_btn = QtWidgets.QPushButton("Undo")
        self.undo_btn.clicked.connect(lambda: undo_function(self))
        self.undo_btn.setToolTip('Click to undo previous action!')

        self.quit_btn = QtWidgets.QPushButton("Quit")
        self.quit_btn.clicked.connect(self.close_app)
        self.quit_btn.setShortcut(
            "Ctrl+Q")  # creates shortcut for the quit button
        self.quit_btn.setToolTip('Click to quit gebaSpike!')

        button_order = [
            self.plot_btn, self.save_btn, self.undo_btn, self.quit_btn
        ]

        for btn in button_order:
            button_layout.addWidget(btn)

        main_window_layout = QtWidgets.QVBoxLayout()

        layout_order = [
            filename_grid_layout, spike_parameter_layout, plot_layout,
            button_layout, vers_label
        ]
        # do you want to add stretch to the widgets/layouts within the layout order?
        add_Stretch = [False, False, False, False, False]
        # do you want to center the widgets/layouts within the layout order?
        align_center = [True, True, True, True, False]

        # ---------------- add all the layouts and widgets to the Main Window's layout ------------ #

        # main_window_layout.addStretch(1)  # adds the widgets/layouts according to the order
        for widget, addStretch, alignCenter in zip(layout_order, add_Stretch,
                                                   align_center):
            if 'Layout' in widget.__str__():
                main_window_layout.addLayout(widget)
                if addStretch:
                    main_window_layout.addStretch(1)
            else:
                if alignCenter:
                    main_window_layout.addWidget(widget, 0,
                                                 QtCore.Qt.AlignCenter)
                else:
                    main_window_layout.addWidget(widget, 0)
                if addStretch:
                    main_window_layout.addStretch(1)

        self.setLayout(
            main_window_layout)  # defining the layout of the Main Window

        self.show()  # shows the window
Пример #24
0
    def __setup_layout(self):
        """
        Sets up default layout of ExperimentView
        """
        '''
        Set-up QMainWindow layout
        '''
        layout = QGridLayout()  # Create Grid Layout

        # QMainWindow requires central widget
        # Created blank QWidget, and set layout to GridLayout
        outer_layout = QGridLayout()
        widget = QWidget()
        widget.setLayout(outer_layout)
        self.setCentralWidget(widget)
        '''
        Set-up Widgets
        '''
        # -- Graph  -- #
        self.matplot_widget = MatplotlibWidget()
        # -- Graph Options -- #
        self.graph_options_widget = MainGraphOptionsWidget()
        self.graph_toolbox = GraphToolBoxDock()
        # -- Molecule Selection Widget -- #
        self.selection_widget = MoleculeSelectionWidget(self.experiment)
        # -- Validated Selection Widget --#
        self.validated_selection_widget = MoleculeSelectionWidget(
            self.experiment)
        # -- Invalidated Selection Widget --#
        self.invalidated_selection_widget = MoleculeSelectionWidget(
            self.experiment)
        # -- Experiment Info Widget -- #
        self.info_widget = ExperimentInfoWidget(self.experiment)
        # -- Buttons -- #
        self.main_menu_btn = QPushButton(
        )  # Main Menu (exits, returns to main menu)
        # --  Table -- #
        self.table_widget = QTableWidget(
        )  # Table Widget (molecule assignment and peaks)
        self.populate_table_widget()
        # -- Splatalogue Widget -- #
        self.splatalogue_dock_widget = SplatalogueDockWidget(self.experiment)
        '''
        Create Inner Layouts / Containers
        '''

        # ------------------------------------------------------------------ #
        # Create Docked Tool Box Widget
        # ------------------------------------------------------------------ #
        # --- 1st Tab: Graph options
        # --- 2nd Tab : Peak List

        # Create Tool Box
        # tool_box = QToolBox()
        # #text = QString("Graph Options")
        # text = QString("Experiment Info")
        # #self.table_widget.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        # #tool_box.addItem(self.info_widget, text)
        #
        # #tool_box.addItem(self.graph_options_widget, text)
        # tool_box.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        # text = QString("Peak List")
        # #tool_box.addItem(self.table_widget, text)

        # Dock the tool box
        # dock_tools = QDockWidget(self.window())
        # dock_tools.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
        # dock_tools.setFeatures(QDockWidget.DockWidgetClosable |
        #                        QDockWidget.DockWidgetMovable |
        #                        QDockWidget.DockWidgetFloatable |
        #                        QDockWidget.DockWidgetVerticalTitleBar)

        # ------------------------------------------------------------------ #
        # Molecule Selection Widgets in Tabs (Pending, Validated, Invalidated)
        # ------------------------------------------------------------------ #
        # --- 1st tab: Pending
        # --- 2nd tab: Validated
        # --- 3rd tab: Invalidated

        # 1st Container (pending)
        pending_scroll_selection_container = QScrollArea()
        pending_scroll_selection_container.setWidget(self.selection_widget)
        pending_scroll_selection_container.setSizePolicy(
            QSizePolicy.Minimum, QSizePolicy.Expanding)
        pending_scroll_selection_container.setFrameShadow(QFrame.Raised)

        # 2nd Container (validated)
        validated_scroll_selection_container = QScrollArea()
        validated_scroll_selection_container.setWidget(
            self.validated_selection_widget)
        validated_scroll_selection_container.setSizePolicy(
            QSizePolicy.Minimum, QSizePolicy.Expanding)
        validated_scroll_selection_container.setFrameShadow(QFrame.Raised)

        # 2nd Container (validated)
        invalidated_scroll_selection_container = QScrollArea()
        invalidated_scroll_selection_container.setWidget(
            self.invalidated_selection_widget)
        invalidated_scroll_selection_container.setSizePolicy(
            QSizePolicy.Minimum, QSizePolicy.Expanding)
        invalidated_scroll_selection_container.setFrameShadow(QFrame.Raised)

        # Create Tab Widget
        selection_tab_widget = QTabWidget()
        selection_tab_widget.addTab(pending_scroll_selection_container,
                                    "Pending")
        selection_tab_widget.addTab(validated_scroll_selection_container,
                                    "Validated")
        selection_tab_widget.addTab(invalidated_scroll_selection_container,
                                    "Invalidated")

        selection_tab_widget.setSizePolicy(QSizePolicy.Minimum,
                                           QSizePolicy.Expanding)
        self.selection_tab_widget = selection_tab_widget
        # self.selection_tab_widget.setAutoFillBackground(True)
        # self.selection_tab_widget.setStyleSheet("background-color: #353535")
        self.selection_tab_widget.tabBar().setAutoFillBackground(True)

        # self.selection_tab_widget.tabBar().setStyleSheet("color:white; background")  # tab color fix (windows)
        self.selection_tab_widget.setStyleSheet(
            'QTabBar::tab {background-color: #333333; font-size: 12px;'
            'border: 2px solid #262626; border-style: outset;} '
            'QTabBar {background-color: #262626;}')
        # Save
        self.pending_scroll_selection_container = pending_scroll_selection_container
        self.validated_scroll_selection_container = validated_scroll_selection_container
        self.invalidated_scroll_selection_container = invalidated_scroll_selection_container
        ''' Dock Widgets '''
        self.table_toolbox = QDockWidget()
        self.table_toolbox.setWidget(self.table_widget)
        # dock_tools.setWidget(tool_box)

        self.info_toolbox = QDockWidget()
        self.info_toolbox.setWidget(self.info_widget)
        self.info_toolbox.setSizePolicy(QSizePolicy.MinimumExpanding,
                                        QSizePolicy.MinimumExpanding)
        '''
        Add widgets to Layout
        '''

        hlayout = QHBoxLayout()
        v1 = QVBoxLayout()
        v3 = QVBoxLayout()
        v2 = QVBoxLayout()

        #v3.addWidget(self.info_widget)
        #v3.addWidget(self.table_widget)
        v1.addWidget(selection_tab_widget)
        v2.addWidget(self.matplot_widget)

        hlayout.addLayout(v3)
        hlayout.addLayout(v1)
        hlayout.addLayout(v2)

        outer_layout.addLayout(hlayout, 0, 0)

        self.window().addDockWidget(Qt.LeftDockWidgetArea, self.info_toolbox)
        self.window().addDockWidget(Qt.LeftDockWidgetArea, self.table_toolbox)
        self.window().addDockWidget(Qt.RightDockWidgetArea, self.graph_toolbox)
        self.window().addDockWidget(Qt.RightDockWidgetArea,
                                    self.splatalogue_dock_widget)
        self.graph_toolbox.hide()
        self.splatalogue_dock_widget.hide()

        self.table_widget.setMaximumWidth(450)
        '''
        Toolbar and ShortCuts
        '''
        self.__setup_toolbar_and_shortcuts()
        ''' Button Connections '''
        self.graph_options_widget.deselect_all_btn.clicked.connect(
            self.deselect_all)
        self.graph_options_widget.redisplay_btn.clicked.connect(
            self.redisplay_graph)
        self.graph_options_widget.select_all_btn.clicked.connect(
            self.select_all)
        self.graph_options_widget.show_validations_btn.clicked.connect(
            self.toggle_validations_on_graph)
        self.graph_toolbox.ui.reset_btn.clicked.connect(self.reset_options)
        self.graph_toolbox.ui.graph_btn.clicked.connect(self.redisplay_graph)