コード例 #1
0
ファイル: threshold.py プロジェクト: tones9/OpenNFB
    def init(self, name, input):
        self.FS = 250
        self.name = name

        epoch_samples = int(self.FS * self.epoch)

        self.signal = Signal(buffer_size=epoch_samples)
        self.passfail = Signal()
        self.ratio = Signal()

        self.threshold = 1.0
        self.high_threshold = 0.0

        self.calc_cnt = 0

        self.bar = QtGui.QProgressBar(orientation=QtCore.Qt.Vertical)
        self.slider = QtGui.QSlider()

        self.slider.setRange(0, 17)
        self.bar.setRange(0, 17)

        self.pass_palette = self.bar.palette()

        self.input = input

        if isinstance(self.input.color, QtGui.QColor):
            self.color = self.input.color
        else:
            self.color = QtGui.QColor(self.input.color)

        self.bar.setStyleSheet("""
			QProgressBar::chunk { background: red; }
			QProgressBar::chunk[pass='******'] { background: %s ; }
			""" % self.color.name())

        self.button = QtGui.QPushButton("config")
        self.button.clicked.connect(self.configure_traits)

        self._widget = ThresholdWidget(self)
コード例 #2
0
    def __init__(self, **kwargs):
        self.holograms = list()

        super(TimeSeriesCreator, self).__init__(**kwargs)
        self.setModal(True)
        self.setWindowTitle('Create hologram time series')

        # Create reorderable list
        # Example from http://www.walletfox.com/course/qtreorderablelist.php
        self.hologram_table = QtGui.QListWidget(parent=self)
        self.hologram_table.setDragDropMode(
            QtGui.QAbstractItemView.InternalMove)

        self.assembly_progress_bar = QtGui.QProgressBar(parent=self)
        self.assembly_progress_bar.setRange(0, 100)
        self._assembly_update_signal.connect(
            self.assembly_progress_bar.setValue)
        self.assembly_progress_bar.hide()

        # Wavelength widgets as spinboxes
        # wavelength 2 and 3 are hidden with a default of None
        self.wavelength1_widget = QtGui.QSpinBox(parent=self)
        self.wavelength2_widget = QtGui.QSpinBox(parent=self)
        self.wavelength3_widget = QtGui.QSpinBox(parent=self)

        self.wavelength2_widget.hide()
        self.wavelength3_widget.hide()

        for widget in (self.wavelength1_widget, self.wavelength2_widget,
                       self.wavelength3_widget):
            widget.setSuffix(' nm')
            widget.setMinimum(0)  # value of 0  -> not to be counted
            widget.setMaximum(999)

        self.wavelength1_widget.setValue(405)
        self.wavelength1_widget.setMinimum(
            1)  # At least one wavelength must be given

        # Create an exclusive button group in which only one-wavelength or three-wavelengths
        # can be active at one time
        self.one_wavelength_mode_btn = QtGui.QPushButton(
            'Single-wavelength time-series', self)
        self.one_wavelength_mode_btn.setCheckable(True)
        self.one_wavelength_mode_btn.setChecked(True)
        self.three_wavelength_mode_btn = QtGui.QPushButton(
            'Three-wavelength time-series', self)
        self.three_wavelength_mode_btn.setCheckable(True)
        self.three_wavelength_mode_btn.setChecked(False)

        self.wavelength_btns = QtGui.QButtonGroup(parent=self)
        self.wavelength_btns.addButton(self.one_wavelength_mode_btn, id=1)
        self.wavelength_btns.addButton(self.three_wavelength_mode_btn, id=3)
        self.wavelength_btns.setExclusive(True)
        self.wavelength_btns.buttonClicked[int].connect(
            self.set_wavelength_mode)

        file_search_btn = QtGui.QPushButton('Add hologram', self)
        file_search_btn.clicked.connect(self.add_hologram_file)

        clear_btn = QtGui.QPushButton('Clear holograms', self)
        clear_btn.clicked.connect(self.clear)

        accept_btn = QtGui.QPushButton('Create', self)
        accept_btn.clicked.connect(self.accept)

        reject_btn = QtGui.QPushButton('Cancel', self)
        reject_btn.clicked.connect(self.reject)
        reject_btn.setDefault(True)

        hologram_btns = QtGui.QHBoxLayout()
        hologram_btns.addWidget(file_search_btn)
        hologram_btns.addWidget(clear_btn)

        wavelength_mode_layout = QtGui.QHBoxLayout()
        wavelength_mode_layout.addWidget(self.one_wavelength_mode_btn)
        wavelength_mode_layout.addWidget(self.three_wavelength_mode_btn)

        wavelength_layout = QtGui.QHBoxLayout()
        wlabel = QtGui.QLabel('Wavelength(s):')
        wlabel.setAlignment(QtCore.Qt.AlignCenter)
        wavelength_layout.addWidget(wlabel)
        wavelength_layout.addWidget(self.wavelength1_widget)
        wavelength_layout.addWidget(self.wavelength2_widget)
        wavelength_layout.addWidget(self.wavelength3_widget)

        btns = QtGui.QHBoxLayout()
        btns.addWidget(accept_btn)
        btns.addWidget(reject_btn)

        explanation = QtGui.QLabel(
            'Add holograms and order them by drag-and-drop')
        explanation.setAlignment(QtCore.Qt.AlignCenter)

        layout = QtGui.QVBoxLayout()
        layout.addWidget(explanation)
        layout.addLayout(hologram_btns)
        layout.addWidget(self.hologram_table)
        layout.addLayout(wavelength_mode_layout)
        layout.addLayout(wavelength_layout)
        layout.addWidget(self.assembly_progress_bar)
        layout.addLayout(btns)
        self.setLayout(layout)
コード例 #3
0
    def initUI(self):
        """Initialise the GUI."""
        self.usemock = False
        hbmain = QtGui.QHBoxLayout()
        
        self.plt1 = pg.PlotWidget()
        self.plt1.setLabel('left', "y (mm)")
        self.plt1.setLabel('bottom', "x (mm)")
        self.plt1.showGrid(x=True, y=True)
        self.plt_headposition_x = pg.InfiniteLine(angle=90, movable=False)
        self.plt_headposition_y = pg.InfiniteLine(angle=0, movable=False)
        self.plt1.addItem(self.plt_headposition_x)
        self.plt1.addItem(self.plt_headposition_y)
        self.plt_gcode = self.plt1.plot(pen=pg.mkPen('r', width=2))
        self.plt1.setAspectLocked(True,ratio=1)
        
        hbmain.addWidget(self.plt1)
        
        
        vbconsole = QtGui.QVBoxLayout()
        gb = QtGui.QGroupBox('console:')
        gbvb = QtGui.QVBoxLayout()
        
        gbvbhb = QtGui.QHBoxLayout()
        self.gui_console_date_cb = QtGui.QCheckBox('show date', self, checkable=True, checked=False)
        self.gui_console_time_cb = QtGui.QCheckBox('show time', self, checkable=True, checked=False)
        gbvbhb.addWidget(self.gui_console_date_cb)
        gbvbhb.addWidget(self.gui_console_time_cb)
        gbvb.addLayout(gbvbhb)

        self.gui_consoletext = QtGui.QTextEdit()
        gbvb.addWidget(self.gui_consoletext)
        
        self.gui_command = QtGui.QLineEdit('', self)
        self.gui_command.returnPressed.connect(self.respond_gui_command)
        gbvb.addWidget(self.gui_command)
        
        gb.setLayout(gbvb)
        vbconsole.addWidget(gb)

        hbmain.addLayout(vbconsole)


        vbcontrols = QtGui.QVBoxLayout()
        
        gb = QtGui.QGroupBox('connection:')
        gbvb = QtGui.QVBoxLayout()
        hbox = QtGui.QHBoxLayout()
        pb = QtGui.QPushButton("Scan")
        pb.clicked.connect(self.scan)
        self.scanbtn = pb
        hbox.addWidget(pb)
        cb=QtGui.QComboBox()
        self.port_list=cb
        self.port_list.setMinimumWidth(200)
        hbox.addWidget(cb)
        cb=QtGui.QCheckBox("Open")
        self.opened=cb
        cb.stateChanged.connect(self.toggle_connection)
        hbox.addWidget(cb)
        gbvb.addLayout(hbox)
        gb.setLayout(gbvb)
        vbcontrols.addWidget(gb)

        # gb = QtGui.QGroupBox('controls:')
        # gbvb = QtGui.QVBoxLayout()
        # gbvbhb = QtGui.QHBoxLayout()
        # btn = QtGui.QPushButton('unlock')
        # btn.clicked.connect(self.unlock)
        # gbvbhb.addWidget(btn)
        # btn = QtGui.QPushButton('FEED HOLD')
        # btn.clicked.connect(self.feed_hold)
        # gbvbhb.addWidget(btn)
        # btn = QtGui.QPushButton('RESUME')
        # btn.clicked.connect(self.feed_resume)
        # gbvbhb.addWidget(btn)
        # gbvb.addLayout(gbvbhb)
        # gb.setLayout(gbvb)
        # vbcontrols.addWidget(gb)

        gb = QtGui.QGroupBox('main:')
        gbvb = QtGui.QVBoxLayout()
        
        
        gbvbhb = QtGui.QHBoxLayout()
        btn = QtGui.QPushButton('unlock')
        btn.clicked.connect(self.unlock)
        gbvbhb.addWidget(btn)
        
        self.motorlock_enable_cb = QtGui.QCheckBox('motorlock', self, checkable=True, checked=True)
        self.motorlock_enable_cb.clicked.connect(self.motorlock_toggle)
        gbvbhb.addWidget(self.motorlock_enable_cb)
        
        btn = QtGui.QPushButton('set MCS zero (home)!')
        btn.clicked.connect(self.gui_set_mcs_zero)
        gbvbhb.addWidget(btn)
        btn = QtGui.QPushButton('set WCS zero!')
        btn.clicked.connect(self.gui_set_wcs_zero)
        gbvbhb.addWidget(btn)
        gbvb.addLayout(gbvbhb)
        
        gbvbhb = QtGui.QHBoxLayout()
        btn = QtGui.QPushButton('G0 go to MCS origin')
        btn.clicked.connect(self.go_to_mcs_origin)
        gbvbhb.addWidget(btn)
        btn = QtGui.QPushButton('G0 go to WCS origin')
        btn.clicked.connect(self.go_to_wcs_origin)
        gbvbhb.addWidget(btn)
        gbvb.addLayout(gbvbhb)

        gb.setLayout(gbvb)
        vbcontrols.addWidget(gb)

        gb = QtGui.QGroupBox('position:')
        gbvb = QtGui.QVBoxLayout()
        gbvbhb = QtGui.QHBoxLayout()
        btn = QtGui.QPushButton('get state')
        btn.clicked.connect(self.gui_get_state)
        gbvbhb.addWidget(btn)
        self.gui_get_state_online_cb = QtGui.QCheckBox('online', self, checkable=True, checked=False)
        self.gui_get_state_online_cb.clicked.connect(self.gui_get_state_online_cb_clicked)
        gbvbhb.addWidget(self.gui_get_state_online_cb)
        
        
        
        gbvb.addLayout(gbvbhb)
        
        gbvbhb = QtGui.QHBoxLayout()
        self.gui_info_state1 = QtGui.QLabel('state', self)
        self.gui_info_state2 = QtGui.QLabel('state', self)
        self.gui_info_mcs_x = QtGui.QLabel('MCS x', self)
        self.gui_info_mcs_y = QtGui.QLabel('MCS y', self)
        self.gui_info_wcs_x = QtGui.QLabel('WCS x', self)
        self.gui_info_wcs_y = QtGui.QLabel('WCS y', self)        
        
        gbvb.addWidget(self.gui_info_state1)
        gbvb.addWidget(self.gui_info_state2)
        
        gbvbhb = QtGui.QHBoxLayout()
        gbvbhb.addWidget(self.gui_info_mcs_x)
        gbvbhb.addWidget(self.gui_info_mcs_y)
        # gbvb.addLayout(gbvbhb)
        
        #gbvbhb = QtGui.QHBoxLayout()
        gbvbhb.addWidget(self.gui_info_wcs_x)
        gbvbhb.addWidget(self.gui_info_wcs_y)
        gbvb.addLayout(gbvbhb)

        gbvb.addLayout(gbvbhb)
        
        gb.setLayout(gbvb)
        vbcontrols.addWidget(gb)
        
        

        

        gb = QtGui.QGroupBox('jogging controls:')
        gbvb = QtGui.QVBoxLayout()
        
        gbvbhb = QtGui.QHBoxLayout()
        #btn = QtGui.QPushButton('1')
        #btn.clicked.connect(self.unlock)
        #gbvbhb.addWidget(btn)
        self.gui_jog_stepsize = Spinner('jog step size (mm):', 1, step=1, guic=gbvbhb)
        self.gui_jog_feedrate = Spinner('feed rate (mm/min):', 5000, step=100, guic=gbvbhb)
        gbvb.addLayout(gbvbhb)

        horizontalGroupBox = QtGui.QGroupBox("")
        layout = QtGui.QGridLayout()
        layout.setColumnStretch(0, 1)
        layout.setColumnStretch(1, 1)
        layout.setColumnStretch(2, 1)
        
        def set_jogfun(what):
            def fun():
                self.jog(what)
            return fun
        
        
        #d = {'what': '-x +y', 'n': 0, 'm': 0}
        
        def makebutton(d):
            btn = QtGui.QPushButton(d['what'])
            btn.clicked.connect(set_jogfun(d['what']))
            layout.addWidget(btn,d['n'],d['m'])
            
        makebutton({'what': '-x +y', 'n': 0, 'm': 0})   
        makebutton({'what': '+y',    'n': 0, 'm': 1})   
        makebutton({'what': '+x +y', 'n': 0, 'm': 2})   

        makebutton({'what': '-x',    'n': 1, 'm': 0})   
        # makebutton({'what': '',      'n': 1, 'm': 1})   
        makebutton({'what': '+x',    'n': 1, 'm': 2})   

        makebutton({'what': '-x -y', 'n': 2, 'm': 0})   
        makebutton({'what': '-y',    'n': 2, 'm': 1})   
        makebutton({'what': '+x -y', 'n': 2, 'm': 2})        
        
        horizontalGroupBox.setLayout(layout)
        gbvb.addWidget(horizontalGroupBox)
        
        gb.setLayout(gbvb)
        vbcontrols.addWidget(gb)
        
        
        gb = QtGui.QGroupBox('absolute positioning:')
        gbvb = QtGui.QVBoxLayout()
        
        
        
        gbvbhb = QtGui.QHBoxLayout()
        self.gui_g1_xpos_mm = Spinner('x (mm):', 0, step=1, guic=gbvbhb)
        self.gui_g1_ypos_mm = Spinner('y (mm):', 0, step=1, guic=gbvbhb)
        gbvb.addLayout(gbvbhb)
        self.gui_g1_feedrate = Spinner('feed rate (mm/min):', 5000, step=100, guic=gbvb)
        
        gbvbhb = QtGui.QHBoxLayout()
        btn = QtGui.QPushButton('G0 GO')
        btn.clicked.connect(self.g0_go_to_position)
        gbvbhb.addWidget(btn)
        btn = QtGui.QPushButton('G1 GO')
        btn.clicked.connect(self.g1_go_to_position)
        gbvbhb.addWidget(btn)
        gbvb.addLayout(gbvbhb)
        
        gb.setLayout(gbvb)
        vbcontrols.addWidget(gb)
        
        
        gb = QtGui.QGroupBox('spindle control:')
        gbvb = QtGui.QVBoxLayout()
        
        gbvbhb = QtGui.QHBoxLayout()
        self.gui_spindlespeed = Spinner('spindle / servo:', 600, step=50, bounds=[0, 1000], guic=gbvbhb, fun=self.set_spindle_speed)
        
        self.gui_spindle_enable_cb = QtGui.QCheckBox('Spindle', self, checkable=True, checked=False)
        self.gui_spindle_enable_cb.clicked.connect(self.gui_spindle_enable_cb_clicked)
        gbvbhb.addWidget(self.gui_spindle_enable_cb)
        
        #btn = QtGui.QPushButton('ON')
        #btn.clicked.connect(self.set_spindle_on)
        #gbvbhb.addWidget(btn)
        #btn = QtGui.QPushButton('OFF')
        #btn.clicked.connect(self.set_spindle_off)
        #gbvbhb.addWidget(btn)
        
        gbvb.addLayout(gbvbhb)
        gb.setLayout(gbvb)
        vbcontrols.addWidget(gb)
        
        
        
        gb = QtGui.QGroupBox('G-code streaming:')
        gbvb = QtGui.QVBoxLayout()
        
        gbvbhb = QtGui.QHBoxLayout()
        l = QtGui.QLabel('file:')
        gbvbhb.addWidget(l)
        self.gcodefile_text = QtGui.QTextEdit(os.path.join(os.path.expanduser('~'), 'test.gcode'))
        self.gcodefile_text.setMinimumWidth(150)
        self.gcodefile_text.setMaximumHeight(30)
        gbvbhb.addWidget(self.gcodefile_text)
        btn = QtGui.QPushButton('...')
        btn.clicked.connect(self._browse_gcodefile)
        gbvbhb.addWidget(btn)
        btn = QtGui.QPushButton('load')
        btn.clicked.connect(self.gcode_load_file)
        gbvbhb.addWidget(btn)
        gbvb.addLayout(gbvbhb)
        
        gbvbhb = QtGui.QHBoxLayout()
        self.gcode_stream_progressbar = QtGui.QProgressBar(self)
        gbvbhb.addWidget(self.gcode_stream_progressbar)
        
        
        btn = QtGui.QPushButton('start streaming')
        btn.clicked.connect(self.gcode_stream_start)
        gbvbhb.addWidget(btn)
        btn = QtGui.QPushButton('stop streaming')
        btn.clicked.connect(self.gcode_stream_stop)
        gbvbhb.addWidget(btn)
        gbvb.addLayout(gbvbhb)
        
        self.gui_eta_info = QtGui.QLabel('--- streaming ETA info ---', self)
        gbvb.addWidget(self.gui_eta_info)
        
        gbvb.addLayout(gbvbhb)
        gb.setLayout(gbvb)
        vbcontrols.addWidget(gb)
        
        gb = QtGui.QGroupBox('')
        gbhb = QtGui.QHBoxLayout()
        
        btn = QtGui.QPushButton('FEED HOLD')
        btn.clicked.connect(self.feed_hold)
        btn.setMinimumHeight(60)
        gbhb.addWidget(btn)
        btn = QtGui.QPushButton('RESUME')
        btn.clicked.connect(self.feed_resume)
        btn.setMinimumHeight(60)
        gbhb.addWidget(btn)
        
        gb.setLayout(gbhb)
        vbcontrols.addWidget(gb)
        
        
        
        hbmain.addLayout(vbcontrols)
        hbmain.setStretch(0,2)
        hbmain.setStretch(1,1)
        hbmain.setStretch(2,1)
        
        self.setLayout(hbmain)
        self.setGeometry(20, 40, 1400, 900)
        self.setWindowTitle('Vplotter Controller')
        self.setStyleSheet("font-size: 12pt")
        self.show()
        self.scan()
        
        self.get_state_timer = QtCore.QTimer()
        self.get_state_timer.timeout.connect(self.gui_get_state)
        self.serial_active = False
        self.gcode_stream_running = False
コード例 #4
0
    def __init__(self, **kwargs):
        super(TimeSeriesReconstructionDialog, self).__init__(**kwargs)

        self.time_series = None
        self._propagation_distances = None
        self._fourier_mask = None

        self.setModal(True)
        self.setWindowTitle('Reconstruct time-series')

        self.holograms_viewer = ImageView(parent=self, name='Raw holograms')

        self.holograms_slider = QtGui.QSlider(QtCore.Qt.Horizontal,
                                              parent=self)
        self.holograms_slider.setDisabled(True)
        self.holograms_slider.valueChanged.connect(
            self.update_holograms_viewer)

        self.time_point_label = QtGui.QLabel('')
        self.time_point_label.setAlignment(QtCore.Qt.AlignCenter)

        labeled_slider = QtGui.QHBoxLayout()
        labeled_slider.addWidget(self.time_point_label)
        labeled_slider.addWidget(self.holograms_slider)

        progress_label = QtGui.QLabel('<h3>Reconstruction Progress</h3>')
        progress_label.setAlignment(QtCore.Qt.AlignCenter)

        self.reconstruction_progress = QtGui.QProgressBar(parent=self)
        self.reconstruction_progress.setRange(0, 100)
        self.reconstruction_progress.setValue(0)
        self.reconstruction_progress.setAlignment(QtCore.Qt.AlignCenter)
        self._reconstruction_update_signal.connect(
            self.reconstruction_progress.setValue)
        #self.reconstruction_progress.hide()

        self.recons_params_widget = ReconstructionParametersWidget(parent=self)
        self.recons_params_widget.propagation_distance_signal.connect(
            self.update_propagation_distance)
        self.recons_params_widget.fourier_mask_signal.connect(
            self.update_fourier_mask)

        load_time_series_btn = QtGui.QPushButton('Load time-series', self)
        load_time_series_btn.clicked.connect(self.load_time_series)

        accept_btn = QtGui.QPushButton('Reconstruct time-series', self)
        accept_btn.clicked.connect(self.accept)

        cancel_btn = QtGui.QPushButton('Cancel', self)
        cancel_btn.clicked.connect(self.reject)

        btns = QtGui.QHBoxLayout()
        btns.addWidget(accept_btn)
        btns.addWidget(cancel_btn)

        layout = QtGui.QVBoxLayout()
        layout.addWidget(load_time_series_btn)
        layout.addWidget(self.holograms_viewer)
        layout.addLayout(labeled_slider)
        layout.addWidget(self.recons_params_widget)
        layout.addWidget(progress_label)
        layout.addWidget(self.reconstruction_progress)
        layout.addLayout(btns)
        self.setLayout(layout)
    def __init__(self):
        super().__init__()

        self.ui = loadUi('TrackerLab.ui', self)

        # restore setting from TrackerLab.ini file
        self.settings = QSettings('TrackerLab.ini', QSettings.IniFormat)
        self.restoreSettings()

        self.openFilesButton.clicked.connect(self.openFilesDialog)
        self.frameSlider.valueChanged.connect(self.frameSliderChanged)
        self.frameSpinBox.valueChanged.connect(self.frameSpinBoxChanged)
        self.fileComboBox.currentIndexChanged.connect(self.fileComboBoxChanged)

        self.colormapComboBox.currentIndexChanged.connect(
            self.colormapComboBoxChanged)
        self.scalingComboBox.currentIndexChanged.connect(
            self.scalingComboBoxChanged)

        self.lminSlider.valueChanged.connect(self.lminSliderChanged)
        self.lminSpinBox.valueChanged.connect(self.lminSpinBoxChanged)
        self.lmaxSlider.valueChanged.connect(self.lmaxSliderChanged)
        self.lmaxSpinBox.valueChanged.connect(self.lmaxSpinBoxChanged)

        self.batchButton.clicked.connect(self.batchButtonClicked)
        self.abortButton.clicked.connect(self.abortButtonClicked)
        self.abort = False

        self.medianCheckBox.stateChanged.connect(self.update)
        self.medianSpinBox.valueChanged.connect(self.update)
        self.maskCheckBox.stateChanged.connect(self.update)
        self.maskXSpinBox.valueChanged.connect(self.maskChanged)
        self.maskYSpinBox.valueChanged.connect(self.maskChanged)
        self.maskRadiusSpinBox.valueChanged.connect(self.maskChanged)
        self.mask = np.array([])

        self.trackingCheckBox.stateChanged.connect(
            self.trackingCheckBoxChanged)
        self.trackingTabWidget.currentChanged.connect(self.update)
        self.tabIndex = 0

        # Tab 1
        self.tab1ThresholdSpinBox.valueChanged.connect(self.update)
        self.tab1MinAreaSpinBox.valueChanged.connect(self.update)
        self.tab1MaxAreaSpinBox.valueChanged.connect(self.update)
        self.tab1InvertCheckBox.stateChanged.connect(self.update)
        self.tab1MaxFeaturesSpinBox.valueChanged.connect(self.update)

        self.actionOpen.triggered.connect(self.openFilesDialog)
        self.actionExit.triggered.connect(self.close)
        self.actionSettings.triggered.connect(self.showSettingsWindow)
        self.actionAbout.triggered.connect(self.aboutClicked)

        pg.setConfigOption('background', 'w')
        pg.setConfigOption('foreground', 0.75)
        pg.setConfigOption('imageAxisOrder', 'row-major')

        graphicsLayout = pg.GraphicsLayoutWidget()
        self.layout.addWidget(graphicsLayout)
        '''
        self.p = graphicsLayout.addPlot()
        self.p.setAspectLocked(True)
        self.img = pg.ImageItem()
        self.p.addItem(self.img)
        '''

        self.p1 = graphicsLayout.addPlot(row=1, col=1)
        self.p1.showAxis('top')
        self.p1.showAxis('right')
        self.p1.getAxis('top').setStyle(showValues=False)
        self.p1.getAxis('right').setStyle(showValues=False)
        self.p1.getAxis('top').setHeight(10)
        self.p1.getAxis('right').setWidth(15)
        #self.p1.setLimits(xMin=0, yMin=0)
        self.p1.setAspectLocked(True)
        self.im1 = pg.ImageItem()
        self.p1.addItem(self.im1)
        self.p1.getViewBox().invertY(True)

        self.p2 = graphicsLayout.addPlot(row=1, col=2)
        self.p2.showAxis('top')
        self.p2.showAxis('right')
        self.p2.getAxis('top').setStyle(showValues=False)
        self.p2.getAxis('right').setStyle(showValues=False)
        self.p2.getAxis('top').setHeight(10)
        self.p2.getAxis('right').setWidth(15)
        #self.p2.setLimits(xMin=0, yMin=0)
        self.p2.setAspectLocked(True)
        self.im2 = pg.ImageItem()
        self.p2.addItem(self.im2)
        self.p2.getViewBox().invertY(True)

        self.p2.setXLink(self.p1.vb)
        self.p2.setYLink(self.p1.vb)

        self.sp = pg.ScatterPlotItem(pen=pg.mkPen('r', width=3),
                                     brush=pg.mkBrush(None),
                                     pxMode=False)
        self.p2.addItem(self.sp)

        self.lp1 = pg.PlotCurveItem(pen=pg.mkPen('b', width=3),
                                    brush=pg.mkBrush(None),
                                    pxMode=False)
        self.lp2 = pg.PlotCurveItem(pen=pg.mkPen('r', width=3),
                                    brush=pg.mkBrush(None),
                                    pxMode=False)
        self.p2.addItem(self.lp1)
        self.p2.addItem(self.lp2)

        #self.lp = pg.PlotCurveItem(pen=pg.mkPen('b', width=3), brush=pg.mkBrush(None), pxMode=False)
        #self.p2.addItem(self.lp)

        #self.p = pg.PlotItem(pen=pg.mkPen('r', width=2), brush=pg.mkBrush(None), pxMode=False)
        #self.p2.addItem(self.p)

        #self.vb = self.p.vb
        #self.p.scene().sigMouseMoved.connect(self.mouseMoved)

        self.p1.scene().sigMouseMoved.connect(self.mouseMoved)
        self.p2.getViewBox().scene().sigMouseMoved.connect(self.mouseMoved)

        #self.vb.scene().sigMouseMoved.connect(self.mouseMoved)
        #self.vb2.scene().sigMouseMoved.connect(self.mouseMoved)

        self.batch = False
        self.spots = pd.DataFrame()

        self.statusBar.showMessage('Ready')
        self.progressBar = QtGui.QProgressBar()
        self.statusBar.addPermanentWidget(self.progressBar)
        #self.abortProgressButton = QtGui.QPushButton("Abort")
        #self.statusBar.addPermanentWidget(self.abortProgressButton)
        self.progressBar.setMinimumHeight(15)
        self.progressBar.setMaximumHeight(15)
        self.progressBar.setMinimumWidth(250)
        self.progressBar.setMaximumWidth(250)
        self.progressBar.setValue(0)

        # load colormaps
        self.colormaps = []
        self.colormapComboBox.clear()
        for file in glob.glob('Colormaps/*.csv'):
            self.colormapComboBox.addItem(
                os.path.splitext(os.path.basename(file))[0])
            self.colormaps.append(np.loadtxt(file, delimiter=','))

        if not self.colormaps:
            self.colormapsComboBox.addItem('Gray')  # default
        else:
            self.colormapComboBox.setCurrentIndex(
                self.colormapComboBox.findText('Gray'))

        #pg.SignalProxy(self.p.scene().sigMouseMoved, rateLimit=60, slot=self.mouseMoved)
        #pg.SignalProxy(self.p2.scene().sigMouseMoved, rateLimit=60, slot=self.mouseMoved)

        self.settingsWindow = SettingsWindow()
        self.settingsWindow.checkBoxHDF5.setChecked(self.hdf5)
        self.settingsWindow.checkBoxCSV.setChecked(self.csv)