示例#1
0
    def createChannelWidget(self, ch, daqName=None):
        conf = self.dev._DGConfig[ch]
        p = PlotWidget(self)

        units = ''
        if 'units' in conf:
            units = conf['units']

        p.setLabel('left', text=ch, units=units)
        self.plots[ch] = p

        p.registerPlot(self.dev.name() + '.' + ch)

        if conf['type'] in ['ao', 'do']:
            w = OutputChannelGui(self, ch, conf, p, self.dev, self.taskRunner,
                                 daqName)
            w.sigSequenceChanged.connect(self.sequenceChanged)
        elif conf['type'] in ['ai', 'di']:
            w = InputChannelGui(self, ch, conf, p, self.dev, self.taskRunner,
                                daqName)
        else:
            raise Exception("Unrecognized device type '%s'" % conf['type'])
        self.channels[ch] = w

        return (w, p)
示例#2
0
    def addPlot(self, name=None, state=None):
        if name is None:
            name = 'Plot'
            i = 0
            while True:
                name2 = '%s_%03d' % (name, i)
                if name2 not in self.dockItems:
                    break
                i += 1
            name = name2
        
        p = PlotWidget(name=name)
        d = QtGui.QDockWidget(name)
        d.setObjectName(name)
        d.setWidget(p)
        
        if state is not None:
            p.restoreState(state)

        nodes = self.flowchart.nodes()
        #print name, nodes
        if name in nodes:
            node = nodes[name]
        else:
            node = self.flowchart.createNode('PlotWidget', name=name)
        node.setPlot(p)

        self.addDockWidget(QtCore.Qt.RightDockWidgetArea, d)
        item = ListItem(name, d)
        self.dockItems[name] = {'type': 'Plot', 'listItem': item, 'dock': d, 'widget': p, 'node': node}
        self.ui.dockList.addItem(item)
示例#3
0
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(330, 97)
        Form.setAutoFillBackground(True)
        self.verticalLayout_3 = QtGui.QVBoxLayout(Form)
        self.verticalLayout_3.setSpacing(0)
        self.verticalLayout_3.setMargin(0)
        self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
        self.splitter_2 = QtGui.QSplitter(Form)
        self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
        self.splitter_2.setObjectName(_fromUtf8("splitter_2"))
        self.layoutWidget = QtGui.QWidget(self.splitter_2)
        self.layoutWidget.setObjectName(_fromUtf8("layoutWidget"))
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.layoutWidget)
        self.verticalLayout_2.setSpacing(0)
        self.verticalLayout_2.setMargin(0)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.gridLayout_2 = QtGui.QGridLayout()
        self.gridLayout_2.setSpacing(0)
        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
        self.frame_2 = QtGui.QFrame(self.layoutWidget)
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName(_fromUtf8("frame_2"))
        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.frame_2)
        self.horizontalLayout_2.setSpacing(0)
        self.horizontalLayout_2.setMargin(0)
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.vcModeRadio = QtGui.QRadioButton(self.frame_2)
        self.vcModeRadio.setObjectName(_fromUtf8("vcModeRadio"))
        self.horizontalLayout_2.addWidget(self.vcModeRadio)
        self.i0ModeRadio = QtGui.QRadioButton(self.frame_2)
        self.i0ModeRadio.setChecked(True)
        self.i0ModeRadio.setObjectName(_fromUtf8("i0ModeRadio"))
        self.horizontalLayout_2.addWidget(self.i0ModeRadio)
        self.icModeRadio = QtGui.QRadioButton(self.frame_2)
        self.icModeRadio.setObjectName(_fromUtf8("icModeRadio"))
        self.horizontalLayout_2.addWidget(self.icModeRadio)
        self.horizontalLayout_6 = QtGui.QHBoxLayout()
        self.horizontalLayout_6.setSpacing(0)
        self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
        self.holdingCheck = QtGui.QCheckBox(self.frame_2)
        self.holdingCheck.setObjectName(_fromUtf8("holdingCheck"))
        self.horizontalLayout_6.addWidget(self.holdingCheck)
        self.holdingSpin = SpinBox(self.frame_2)
        self.holdingSpin.setEnabled(False)
        self.holdingSpin.setMinimum(-1000000.0)
        self.holdingSpin.setMaximum(1000000.0)
        self.holdingSpin.setObjectName(_fromUtf8("holdingSpin"))
        self.horizontalLayout_6.addWidget(self.holdingSpin)
        self.horizontalLayout_2.addLayout(self.horizontalLayout_6)
        self.gridLayout_2.addWidget(self.frame_2, 0, 0, 1, 2)
        self.gridLayout = QtGui.QGridLayout()
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.primarySignalCheck = QtGui.QCheckBox(self.layoutWidget)
        self.primarySignalCheck.setObjectName(_fromUtf8("primarySignalCheck"))
        self.gridLayout.addWidget(self.primarySignalCheck, 0, 0, 1, 1)
        self.secondarySignalCheck = QtGui.QCheckBox(self.layoutWidget)
        self.secondarySignalCheck.setObjectName(_fromUtf8("secondarySignalCheck"))
        self.gridLayout.addWidget(self.secondarySignalCheck, 1, 0, 1, 1)
        self.primarySignalCombo = QtGui.QComboBox(self.layoutWidget)
        self.primarySignalCombo.setEnabled(False)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(2)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.primarySignalCombo.sizePolicy().hasHeightForWidth())
        self.primarySignalCombo.setSizePolicy(sizePolicy)
        self.primarySignalCombo.setMinimumSize(QtCore.QSize(40, 0))
        self.primarySignalCombo.setObjectName(_fromUtf8("primarySignalCombo"))
        self.primarySignalCombo.addItem(_fromUtf8(""))
        self.gridLayout.addWidget(self.primarySignalCombo, 0, 1, 1, 1)
        self.secondarySignalCombo = QtGui.QComboBox(self.layoutWidget)
        self.secondarySignalCombo.setEnabled(False)
        self.secondarySignalCombo.setMinimumSize(QtCore.QSize(40, 0))
        self.secondarySignalCombo.setObjectName(_fromUtf8("secondarySignalCombo"))
        self.secondarySignalCombo.addItem(_fromUtf8(""))
        self.gridLayout.addWidget(self.secondarySignalCombo, 1, 1, 1, 1)
        self.gridLayout_2.addLayout(self.gridLayout, 1, 0, 2, 1)
        self.horizontalLayout_7 = QtGui.QHBoxLayout()
        self.horizontalLayout_7.setSpacing(0)
        self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
        self.secondaryGainCheck = QtGui.QCheckBox(self.layoutWidget)
        self.secondaryGainCheck.setObjectName(_fromUtf8("secondaryGainCheck"))
        self.horizontalLayout_7.addWidget(self.secondaryGainCheck)
        self.secondaryGainSpin = QtGui.QSpinBox(self.layoutWidget)
        self.secondaryGainSpin.setEnabled(False)
        self.secondaryGainSpin.setMaximum(100000)
        self.secondaryGainSpin.setObjectName(_fromUtf8("secondaryGainSpin"))
        self.horizontalLayout_7.addWidget(self.secondaryGainSpin)
        self.gridLayout_2.addLayout(self.horizontalLayout_7, 2, 1, 1, 1)
        self.horizontalLayout_5 = QtGui.QHBoxLayout()
        self.horizontalLayout_5.setSpacing(0)
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.primaryGainCheck = QtGui.QCheckBox(self.layoutWidget)
        self.primaryGainCheck.setObjectName(_fromUtf8("primaryGainCheck"))
        self.horizontalLayout_5.addWidget(self.primaryGainCheck)
        self.primaryGainSpin = QtGui.QSpinBox(self.layoutWidget)
        self.primaryGainSpin.setEnabled(False)
        self.primaryGainSpin.setMaximum(100000)
        self.primaryGainSpin.setObjectName(_fromUtf8("primaryGainSpin"))
        self.horizontalLayout_5.addWidget(self.primaryGainSpin)
        self.gridLayout_2.addLayout(self.horizontalLayout_5, 1, 1, 1, 1)
        self.verticalLayout_2.addLayout(self.gridLayout_2)
        self.frame = QtGui.QFrame(self.layoutWidget)
        self.frame.setFrameShape(QtGui.QFrame.Box)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName(_fromUtf8("frame"))
        self.verticalLayout = QtGui.QVBoxLayout(self.frame)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.waveGeneratorLabel = QtGui.QLabel(self.frame)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.waveGeneratorLabel.sizePolicy().hasHeightForWidth())
        self.waveGeneratorLabel.setSizePolicy(sizePolicy)
        self.waveGeneratorLabel.setObjectName(_fromUtf8("waveGeneratorLabel"))
        self.verticalLayout.addWidget(self.waveGeneratorLabel)
        self.waveGeneratorWidget = StimGenerator(self.frame)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.waveGeneratorWidget.sizePolicy().hasHeightForWidth())
        self.waveGeneratorWidget.setSizePolicy(sizePolicy)
        self.waveGeneratorWidget.setObjectName(_fromUtf8("waveGeneratorWidget"))
        self.verticalLayout.addWidget(self.waveGeneratorWidget)
        self.verticalLayout_2.addWidget(self.frame)
        self.splitter = QtGui.QSplitter(self.splitter_2)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName(_fromUtf8("splitter"))
        self.topPlotWidget = PlotWidget(self.splitter)
        self.topPlotWidget.setObjectName(_fromUtf8("topPlotWidget"))
        self.bottomPlotWidget = PlotWidget(self.splitter)
        self.bottomPlotWidget.setObjectName(_fromUtf8("bottomPlotWidget"))
        self.verticalLayout_3.addWidget(self.splitter_2)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(208, 349)
        self.gridLayout = QtWidgets.QGridLayout(Form)
        self.gridLayout.setObjectName("gridLayout")
        self.rateAverageSpin = SpinBox(Form)
        self.rateAverageSpin.setObjectName("rateAverageSpin")
        self.gridLayout.addWidget(self.rateAverageSpin, 4, 1, 1, 1)
        self.label = QtWidgets.QLabel(Form)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 4, 0, 1, 1)
        self.groupBox_2 = QtWidgets.QGroupBox(Form)
        self.groupBox_2.setObjectName("groupBox_2")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBox_2)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.poisMaxCheck = QtWidgets.QCheckBox(self.groupBox_2)
        self.poisMaxCheck.setObjectName("poisMaxCheck")
        self.gridLayout_3.addWidget(self.poisMaxCheck, 2, 0, 1, 1)
        self.poisMaxAmpCheck = QtWidgets.QCheckBox(self.groupBox_2)
        self.poisMaxAmpCheck.setObjectName("poisMaxAmpCheck")
        self.gridLayout_3.addWidget(self.poisMaxAmpCheck, 3, 0, 1, 1)
        self.chargeTransferCheck = QtWidgets.QCheckBox(self.groupBox_2)
        self.chargeTransferCheck.setObjectName("chargeTransferCheck")
        self.gridLayout_3.addWidget(self.chargeTransferCheck, 0, 0, 1, 1)
        self.eventCountCheck = QtWidgets.QCheckBox(self.groupBox_2)
        self.eventCountCheck.setObjectName("eventCountCheck")
        self.gridLayout_3.addWidget(self.eventCountCheck, 1, 0, 1, 1)
        self.gridLayout.addWidget(self.groupBox_2, 3, 0, 1, 2)
        self.groupBox = QtWidgets.QGroupBox(Form)
        self.groupBox.setObjectName("groupBox")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.excitatoryRadio = QtWidgets.QRadioButton(self.groupBox)
        self.excitatoryRadio.setObjectName("excitatoryRadio")
        self.gridLayout_2.addWidget(self.excitatoryRadio, 0, 0, 1, 1)
        self.fitErrorSpin = SpinBox(self.groupBox)
        self.fitErrorSpin.setObjectName("fitErrorSpin")
        self.gridLayout_2.addWidget(self.fitErrorSpin, 1, 1, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.groupBox)
        self.label_2.setObjectName("label_2")
        self.gridLayout_2.addWidget(self.label_2, 1, 0, 1, 1)
        self.inhibitoryRadio = QtWidgets.QRadioButton(self.groupBox)
        self.inhibitoryRadio.setObjectName("inhibitoryRadio")
        self.gridLayout_2.addWidget(self.inhibitoryRadio, 0, 1, 1, 1)
        self.gridLayout.addWidget(self.groupBox, 2, 0, 1, 2)
        self.groupBox_3 = QtWidgets.QGroupBox(Form)
        self.groupBox_3.setObjectName("groupBox_3")
        self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_3)
        self.gridLayout_4.setObjectName("gridLayout_4")
        self.label_3 = QtWidgets.QLabel(self.groupBox_3)
        self.label_3.setObjectName("label_3")
        self.gridLayout_4.addWidget(self.label_3, 0, 0, 1, 1)
        self.thresholdSpin = SpinBox(self.groupBox_3)
        self.thresholdSpin.setObjectName("thresholdSpin")
        self.gridLayout_4.addWidget(self.thresholdSpin, 0, 1, 1, 1)
        self.detectionHistogram = PlotWidget(self.groupBox_3)
        self.detectionHistogram.setObjectName("detectionHistogram")
        self.gridLayout_4.addWidget(self.detectionHistogram, 1, 0, 1, 2)
        self.gridLayout.addWidget(self.groupBox_3, 5, 0, 1, 2)

        self.retranslateUi(Form)
        Qt.QMetaObject.connectSlotsByName(Form)
示例#5
0
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(307, 609)
        self.verticalLayout_2 = QtGui.QVBoxLayout(Form)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.splitter_4 = QtGui.QSplitter(Form)
        self.splitter_4.setOrientation(QtCore.Qt.Vertical)
        self.splitter_4.setObjectName(_fromUtf8("splitter_4"))
        self.splitter_2 = QtGui.QSplitter(self.splitter_4)
        self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
        self.splitter_2.setObjectName(_fromUtf8("splitter_2"))
        self.layoutWidget = QtGui.QWidget(self.splitter_2)
        self.layoutWidget.setObjectName(_fromUtf8("layoutWidget"))
        self.verticalLayout = QtGui.QVBoxLayout(self.layoutWidget)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.startBtn = QtGui.QPushButton(self.layoutWidget)
        self.startBtn.setCheckable(True)
        self.startBtn.setObjectName(_fromUtf8("startBtn"))
        self.horizontalLayout.addWidget(self.startBtn)
        self.recordBtn = QtGui.QPushButton(self.layoutWidget)
        self.recordBtn.setCheckable(True)
        self.recordBtn.setObjectName(_fromUtf8("recordBtn"))
        self.horizontalLayout.addWidget(self.recordBtn)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.modeLayout = QtGui.QVBoxLayout()
        self.modeLayout.setObjectName(_fromUtf8("modeLayout"))
        self.verticalLayout.addLayout(self.modeLayout)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.label_4 = QtGui.QLabel(self.layoutWidget)
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.horizontalLayout_2.addWidget(self.label_4)
        self.delayTimeSpin = SpinBox(self.layoutWidget)
        self.delayTimeSpin.setMinimum(1.0)
        self.delayTimeSpin.setMaximum(10000.0)
        self.delayTimeSpin.setSingleStep(1.0)
        self.delayTimeSpin.setObjectName(_fromUtf8("delayTimeSpin"))
        self.horizontalLayout_2.addWidget(self.delayTimeSpin)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout_3 = QtGui.QHBoxLayout()
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.label_3 = QtGui.QLabel(self.layoutWidget)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.horizontalLayout_3.addWidget(self.label_3)
        self.pulseTimeSpin = SpinBox(self.layoutWidget)
        self.pulseTimeSpin.setSingleStep(1.0)
        self.pulseTimeSpin.setObjectName(_fromUtf8("pulseTimeSpin"))
        self.horizontalLayout_3.addWidget(self.pulseTimeSpin)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_5 = QtGui.QHBoxLayout()
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.label = QtGui.QLabel(self.layoutWidget)
        self.label.setObjectName(_fromUtf8("label"))
        self.horizontalLayout_5.addWidget(self.label)
        self.cycleTimeSpin = SpinBox(self.layoutWidget)
        self.cycleTimeSpin.setSingleStep(1.0)
        self.cycleTimeSpin.setProperty("value", 0.2)
        self.cycleTimeSpin.setObjectName(_fromUtf8("cycleTimeSpin"))
        self.horizontalLayout_5.addWidget(self.cycleTimeSpin)
        self.verticalLayout.addLayout(self.horizontalLayout_5)
        self.horizontalLayout_4 = QtGui.QHBoxLayout()
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.label_2 = QtGui.QLabel(self.layoutWidget)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.horizontalLayout_4.addWidget(self.label_2)
        self.averageSpin = QtGui.QSpinBox(self.layoutWidget)
        self.averageSpin.setMinimum(1)
        self.averageSpin.setMaximum(100)
        self.averageSpin.setProperty("value", 1)
        self.averageSpin.setObjectName(_fromUtf8("averageSpin"))
        self.horizontalLayout_4.addWidget(self.averageSpin)
        self.verticalLayout.addLayout(self.horizontalLayout_4)
        spacerItem = QtGui.QSpacerItem(20, 13, QtGui.QSizePolicy.Minimum,
                                       QtGui.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem)
        self.tabWidget = QtGui.QTabWidget(self.layoutWidget)
        self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
        self.verticalLayout.addWidget(self.tabWidget)
        self.splitter = QtGui.QSplitter(self.splitter_2)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName(_fromUtf8("splitter"))
        self.patchPlot = PlotWidget(self.splitter)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.patchPlot.sizePolicy().hasHeightForWidth())
        self.patchPlot.setSizePolicy(sizePolicy)
        self.patchPlot.setObjectName(_fromUtf8("patchPlot"))
        self.commandPlot = PlotWidget(self.splitter)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.commandPlot.sizePolicy().hasHeightForWidth())
        self.commandPlot.setSizePolicy(sizePolicy)
        self.commandPlot.setObjectName(_fromUtf8("commandPlot"))
        self.splitter_3 = QtGui.QSplitter(self.splitter_4)
        self.splitter_3.setOrientation(QtCore.Qt.Horizontal)
        self.splitter_3.setObjectName(_fromUtf8("splitter_3"))
        self.widget = QtGui.QWidget(self.splitter_3)
        self.widget.setObjectName(_fromUtf8("widget"))
        self.gridLayout = QtGui.QGridLayout(self.widget)
        self.gridLayout.setMargin(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.restingPotentialLabel = QtGui.QLabel(self.widget)
        self.restingPotentialLabel.setMinimumSize(QtCore.QSize(140, 0))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.restingPotentialLabel.setFont(font)
        self.restingPotentialLabel.setAlignment(QtCore.Qt.AlignLeading
                                                | QtCore.Qt.AlignLeft
                                                | QtCore.Qt.AlignVCenter)
        self.restingPotentialLabel.setObjectName(
            _fromUtf8("restingPotentialLabel"))
        self.gridLayout.addWidget(self.restingPotentialLabel, 3, 1, 1, 1)
        self.fitErrorCheck = QtGui.QCheckBox(self.widget)
        self.fitErrorCheck.setObjectName(_fromUtf8("fitErrorCheck"))
        self.gridLayout.addWidget(self.fitErrorCheck, 6, 0, 1, 1)
        self.drawFitCheck = QtGui.QCheckBox(self.widget)
        self.drawFitCheck.setChecked(True)
        self.drawFitCheck.setObjectName(_fromUtf8("drawFitCheck"))
        self.gridLayout.addWidget(self.drawFitCheck, 0, 1, 1, 1)
        self.inputResistanceCheck = QtGui.QCheckBox(self.widget)
        font = QtGui.QFont()
        font.setPointSize(11)
        self.inputResistanceCheck.setFont(font)
        self.inputResistanceCheck.setChecked(True)
        self.inputResistanceCheck.setObjectName(
            _fromUtf8("inputResistanceCheck"))
        self.gridLayout.addWidget(self.inputResistanceCheck, 1, 0, 1, 1)
        self.accessResistanceLabel = QtGui.QLabel(self.widget)
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.accessResistanceLabel.setFont(font)
        self.accessResistanceLabel.setAlignment(QtCore.Qt.AlignRight
                                                | QtCore.Qt.AlignTrailing
                                                | QtCore.Qt.AlignVCenter)
        self.accessResistanceLabel.setObjectName(
            _fromUtf8("accessResistanceLabel"))
        self.gridLayout.addWidget(self.accessResistanceLabel, 2, 1, 1, 1)
        self.inputResistanceLabel = QtGui.QLabel(self.widget)
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.inputResistanceLabel.setFont(font)
        self.inputResistanceLabel.setAlignment(QtCore.Qt.AlignRight
                                               | QtCore.Qt.AlignTrailing
                                               | QtCore.Qt.AlignVCenter)
        self.inputResistanceLabel.setObjectName(
            _fromUtf8("inputResistanceLabel"))
        self.gridLayout.addWidget(self.inputResistanceLabel, 1, 1, 1, 1)
        self.accessResistanceCheck = QtGui.QCheckBox(self.widget)
        font = QtGui.QFont()
        font.setPointSize(11)
        self.accessResistanceCheck.setFont(font)
        self.accessResistanceCheck.setObjectName(
            _fromUtf8("accessResistanceCheck"))
        self.gridLayout.addWidget(self.accessResistanceCheck, 2, 0, 1, 1)
        self.restingCurrentLabel = QtGui.QLabel(self.widget)
        self.restingCurrentLabel.setMinimumSize(QtCore.QSize(120, 0))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.restingCurrentLabel.setFont(font)
        self.restingCurrentLabel.setAlignment(QtCore.Qt.AlignLeading
                                              | QtCore.Qt.AlignLeft
                                              | QtCore.Qt.AlignVCenter)
        self.restingCurrentLabel.setObjectName(
            _fromUtf8("restingCurrentLabel"))
        self.gridLayout.addWidget(self.restingCurrentLabel, 4, 1, 1, 1)
        self.capacitanceCheck = QtGui.QCheckBox(self.widget)
        self.capacitanceCheck.setObjectName(_fromUtf8("capacitanceCheck"))
        self.gridLayout.addWidget(self.capacitanceCheck, 5, 0, 1, 1)
        self.restingPotentialCheck = QtGui.QCheckBox(self.widget)
        font = QtGui.QFont()
        font.setPointSize(11)
        self.restingPotentialCheck.setFont(font)
        self.restingPotentialCheck.setObjectName(
            _fromUtf8("restingPotentialCheck"))
        self.gridLayout.addWidget(self.restingPotentialCheck, 3, 0, 1, 1)
        self.restingCurrentCheck = QtGui.QCheckBox(self.widget)
        self.restingCurrentCheck.setObjectName(
            _fromUtf8("restingCurrentCheck"))
        self.gridLayout.addWidget(self.restingCurrentCheck, 4, 0, 1, 1)
        self.capacitanceLabel = QtGui.QLabel(self.widget)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.capacitanceLabel.setFont(font)
        self.capacitanceLabel.setAlignment(QtCore.Qt.AlignRight
                                           | QtCore.Qt.AlignTrailing
                                           | QtCore.Qt.AlignVCenter)
        self.capacitanceLabel.setObjectName(_fromUtf8("capacitanceLabel"))
        self.gridLayout.addWidget(self.capacitanceLabel, 5, 1, 1, 1)
        self.fitErrorLabel = QtGui.QLabel(self.widget)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.fitErrorLabel.setFont(font)
        self.fitErrorLabel.setAlignment(QtCore.Qt.AlignRight
                                        | QtCore.Qt.AlignTrailing
                                        | QtCore.Qt.AlignVCenter)
        self.fitErrorLabel.setObjectName(_fromUtf8("fitErrorLabel"))
        self.gridLayout.addWidget(self.fitErrorLabel, 6, 1, 1, 1)
        self.resetBtn = QtGui.QToolButton(self.widget)
        self.resetBtn.setObjectName(_fromUtf8("resetBtn"))
        self.gridLayout.addWidget(self.resetBtn, 0, 0, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
                                        QtGui.QSizePolicy.Expanding)
        self.gridLayout.addItem(spacerItem1, 7, 1, 1, 1)
        self.layoutWidget1 = QtGui.QWidget(self.splitter_3)
        self.layoutWidget1.setObjectName(_fromUtf8("layoutWidget1"))
        self.plotLayout = QtGui.QVBoxLayout(self.layoutWidget1)
        self.plotLayout.setSpacing(0)
        self.plotLayout.setMargin(0)
        self.plotLayout.setObjectName(_fromUtf8("plotLayout"))
        self.verticalLayout_2.addWidget(self.splitter_4)

        self.retranslateUi(Form)
        self.tabWidget.setCurrentIndex(-1)
        QtCore.QMetaObject.connectSlotsByName(Form)
示例#6
0
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(840, 504)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(4)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth())
        Form.setSizePolicy(sizePolicy)
        self.gridLayout_4 = QtWidgets.QGridLayout(Form)
        self.gridLayout_4.setContentsMargins(3, 3, 3, 3)
        self.gridLayout_4.setHorizontalSpacing(9)
        self.gridLayout_4.setVerticalSpacing(2)
        self.gridLayout_4.setObjectName("gridLayout_4")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
        self.gridLayout.setObjectName("gridLayout")
        self.cameraCombo = InterfaceCombo(Form)
        self.cameraCombo.setObjectName("cameraCombo")
        self.gridLayout.addWidget(self.cameraCombo, 0, 1, 1, 1)
        self.loadConfigBtn = QtWidgets.QPushButton(Form)
        self.loadConfigBtn.setObjectName("loadConfigBtn")
        self.gridLayout.addWidget(self.loadConfigBtn, 6, 0, 1, 2)
        self.label = QtWidgets.QLabel(Form)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.laserCombo = InterfaceCombo(Form)
        self.laserCombo.setObjectName("laserCombo")
        self.gridLayout.addWidget(self.laserCombo, 1, 1, 1, 1)
        self.simulateShutterCheck = QtWidgets.QCheckBox(Form)
        self.simulateShutterCheck.setObjectName("simulateShutterCheck")
        self.gridLayout.addWidget(self.simulateShutterCheck, 2, 0, 1, 2)
        self.enablePosCtrlCheck = QtWidgets.QCheckBox(Form)
        self.enablePosCtrlCheck.setChecked(True)
        self.enablePosCtrlCheck.setObjectName("enablePosCtrlCheck")
        self.gridLayout.addWidget(self.enablePosCtrlCheck, 3, 0, 1, 2)
        self.enableScanProgCheck = QtWidgets.QCheckBox(Form)
        self.enableScanProgCheck.setChecked(True)
        self.enableScanProgCheck.setObjectName("enableScanProgCheck")
        self.gridLayout.addWidget(self.enableScanProgCheck, 4, 0, 1, 2)
        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.gridLayout.addItem(spacerItem, 5, 0, 1, 1)
        self.gridLayout_4.addLayout(self.gridLayout, 0, 0, 2, 1)
        self.positionCtrlGroup = QtWidgets.QGroupBox(Form)
        self.positionCtrlGroup.setCheckable(False)
        self.positionCtrlGroup.setChecked(False)
        self.positionCtrlGroup.setObjectName("positionCtrlGroup")
        self.gridLayout_5 = QtWidgets.QGridLayout(self.positionCtrlGroup)
        self.gridLayout_5.setContentsMargins(5, 5, 5, 5)
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.showPosCtrlCheck = QtWidgets.QCheckBox(self.positionCtrlGroup)
        self.showPosCtrlCheck.setEnabled(True)
        self.showPosCtrlCheck.setChecked(True)
        self.showPosCtrlCheck.setObjectName("showPosCtrlCheck")
        self.gridLayout_5.addWidget(self.showPosCtrlCheck, 1, 0, 1, 1)
        self.spotDisplayGroup = GroupBox(self.positionCtrlGroup)
        self.spotDisplayGroup.setObjectName("spotDisplayGroup")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.spotDisplayGroup)
        self.gridLayout_2.setContentsMargins(3, 3, 3, 3)
        self.gridLayout_2.setSpacing(0)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.sizeFromCalibrationRadio = QtWidgets.QRadioButton(self.spotDisplayGroup)
        self.sizeFromCalibrationRadio.setChecked(True)
        self.sizeFromCalibrationRadio.setObjectName("sizeFromCalibrationRadio")
        self.gridLayout_2.addWidget(self.sizeFromCalibrationRadio, 0, 0, 1, 2)
        self.sizeCustomRadio = QtWidgets.QRadioButton(self.spotDisplayGroup)
        self.sizeCustomRadio.setObjectName("sizeCustomRadio")
        self.gridLayout_2.addWidget(self.sizeCustomRadio, 1, 0, 1, 1)
        self.sizeSpin = SpinBox(self.spotDisplayGroup)
        self.sizeSpin.setSuffix("")
        self.sizeSpin.setMinimum(0.0)
        self.sizeSpin.setMaximum(100000.0)
        self.sizeSpin.setSingleStep(1e-06)
        self.sizeSpin.setProperty("value", 0.0)
        self.sizeSpin.setObjectName("sizeSpin")
        self.gridLayout_2.addWidget(self.sizeSpin, 1, 1, 1, 1)
        self.showLastSpotCheck = QtWidgets.QCheckBox(self.spotDisplayGroup)
        self.showLastSpotCheck.setObjectName("showLastSpotCheck")
        self.gridLayout_2.addWidget(self.showLastSpotCheck, 2, 0, 1, 1)
        self.gridLayout_5.addWidget(self.spotDisplayGroup, 3, 0, 1, 1)
        self.spotSequenceGroup = GroupBox(self.positionCtrlGroup)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.spotSequenceGroup.sizePolicy().hasHeightForWidth())
        self.spotSequenceGroup.setSizePolicy(sizePolicy)
        self.spotSequenceGroup.setObjectName("spotSequenceGroup")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.spotSequenceGroup)
        self.gridLayout_3.setContentsMargins(3, 3, 3, 3)
        self.gridLayout_3.setSpacing(3)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.minTimeSpin = SpinBox(self.spotSequenceGroup)
        self.minTimeSpin.setSuffix("")
        self.minTimeSpin.setDecimals(2)
        self.minTimeSpin.setMaximum(1000000.0)
        self.minTimeSpin.setObjectName("minTimeSpin")
        self.gridLayout_3.addWidget(self.minTimeSpin, 1, 1, 1, 1)
        self.timeLabel = QtWidgets.QLabel(self.spotSequenceGroup)
        self.timeLabel.setObjectName("timeLabel")
        self.gridLayout_3.addWidget(self.timeLabel, 4, 0, 1, 2)
        self.minDistSpin = SpinBox(self.spotSequenceGroup)
        self.minDistSpin.setSuffix("")
        self.minDistSpin.setMaximum(1000000.0)
        self.minDistSpin.setObjectName("minDistSpin")
        self.gridLayout_3.addWidget(self.minDistSpin, 2, 1, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.spotSequenceGroup)
        self.label_3.setObjectName("label_3")
        self.gridLayout_3.addWidget(self.label_3, 1, 0, 1, 1)
        self.recomputeBtn = QtWidgets.QPushButton(self.spotSequenceGroup)
        self.recomputeBtn.setObjectName("recomputeBtn")
        self.gridLayout_3.addWidget(self.recomputeBtn, 5, 0, 1, 2)
        self.label_4 = QtWidgets.QLabel(self.spotSequenceGroup)
        self.label_4.setObjectName("label_4")
        self.gridLayout_3.addWidget(self.label_4, 2, 0, 1, 1)
        self.tdPlotWidget = PlotWidget(self.spotSequenceGroup)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.tdPlotWidget.sizePolicy().hasHeightForWidth())
        self.tdPlotWidget.setSizePolicy(sizePolicy)
        self.tdPlotWidget.setMinimumSize(Qt.QSize(0, 100))
        self.tdPlotWidget.setMaximumSize(Qt.QSize(16777215, 100))
        self.tdPlotWidget.setObjectName("tdPlotWidget")
        self.gridLayout_3.addWidget(self.tdPlotWidget, 0, 0, 1, 2)
        self.gridLayout_5.addWidget(self.spotSequenceGroup, 2, 0, 1, 1)
        self.itemTree = ParameterTree(self.positionCtrlGroup)
        self.itemTree.setObjectName("itemTree")
        self.itemTree.headerItem().setText(0, "1")
        self.itemTree.header().setVisible(False)
        self.gridLayout_5.addWidget(self.itemTree, 0, 0, 1, 1)
        self.gridLayout_4.addWidget(self.positionCtrlGroup, 0, 1, 2, 1)
        self.scanProgramGroup = QtWidgets.QGroupBox(Form)
        self.scanProgramGroup.setCheckable(False)
        self.scanProgramGroup.setChecked(False)
        self.scanProgramGroup.setObjectName("scanProgramGroup")
        self.gridLayout_6 = QtWidgets.QGridLayout(self.scanProgramGroup)
        self.gridLayout_6.setContentsMargins(5, 5, 5, 5)
        self.gridLayout_6.setObjectName("gridLayout_6")
        self.gridLayout_9 = QtWidgets.QGridLayout()
        self.gridLayout_9.setObjectName("gridLayout_9")
        self.previewBtn = QtWidgets.QPushButton(self.scanProgramGroup)
        self.previewBtn.setCheckable(True)
        self.previewBtn.setObjectName("previewBtn")
        self.gridLayout_9.addWidget(self.previewBtn, 1, 0, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_9.addItem(spacerItem1, 1, 1, 1, 1)
        self.programPreviewSlider = QtWidgets.QSlider(self.scanProgramGroup)
        self.programPreviewSlider.setMaximum(999)
        self.programPreviewSlider.setProperty("value", 666)
        self.programPreviewSlider.setOrientation(Qt.Qt.Horizontal)
        self.programPreviewSlider.setTickPosition(QtWidgets.QSlider.TicksBelow)
        self.programPreviewSlider.setTickInterval(333)
        self.programPreviewSlider.setObjectName("programPreviewSlider")
        self.gridLayout_9.addWidget(self.programPreviewSlider, 1, 2, 1, 1)
        self.gridLayout_6.addLayout(self.gridLayout_9, 1, 0, 1, 1)
        self.scanProgramSplitter = QtWidgets.QSplitter(self.scanProgramGroup)
        self.scanProgramSplitter.setOrientation(Qt.Qt.Vertical)
        self.scanProgramSplitter.setObjectName("scanProgramSplitter")
        self.programTree = ParameterTree(self.scanProgramSplitter)
        self.programTree.setObjectName("programTree")
        self.programTree.headerItem().setText(0, "1")
        self.programTree.header().setVisible(False)
        self.programTimeline = PlotWidget(self.scanProgramSplitter)
        self.programTimeline.setObjectName("programTimeline")
        self.gridLayout_6.addWidget(self.scanProgramSplitter, 0, 0, 1, 1)
        self.gridLayout_4.addWidget(self.scanProgramGroup, 1, 2, 1, 1)

        self.retranslateUi(Form)
        Qt.QMetaObject.connectSlotsByName(Form)
示例#7
0
    def __init__(self, dm, config):
        clampName = config['clampDev']
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle(clampName)
        self.startTime = None
        self.redrawCommand = 1

        self.analysisItems = {
            'inputResistance': u'Ω',
            'accessResistance': u'Ω',
            'capacitance': 'F',
            'restingPotential': 'V',
            'restingCurrent': 'A',
            'fitError': ''
        }

        self.params = {
            'mode': 'vc',
            'rate': config.get('sampleRate', 100000),
            'downsample': config.get('downsample', 3),
            'cycleTime': .2,
            'recordTime': 0.1,
            'delayTime': 0.03,
            'pulseTime': 0.05,
            'icPulse': -30e-12,
            'vcPulse': -10e-3,
            'icHolding': 0,
            'vcHolding': -65e-3,
            'icHoldingEnabled': False,
            'icPulseEnabled': True,
            'vcHoldingEnabled': False,
            'vcPulseEnabled': True,
            'drawFit': True,
            'average': 1,
        }

        self.paramLock = Mutex(QtCore.QMutex.Recursive)

        self.manager = dm
        self.clampName = clampName
        self.thread = PatchThread(self)
        self.cw = QtGui.QWidget()
        self.setCentralWidget(self.cw)
        self.ui = Ui_Form()
        self.ui.setupUi(self.cw)
        #self.logBtn = LogButton("Log")
        #self.statusBar().addPermanentWidget(self.logBtn)
        self.setStatusBar(StatusBar())

        self.stateFile = os.path.join('modules', self.clampName + '_ui.cfg')
        uiState = Manager.getManager().readConfigFile(self.stateFile)
        if 'geometry' in uiState:
            geom = QtCore.QRect(*uiState['geometry'])
            self.setGeometry(geom)
        if 'window' in uiState:
            ws = QtCore.QByteArray.fromPercentEncoding(uiState['window'])
            self.restoreState(ws)

        self.ui.splitter_2.setSizes([self.width() / 4, self.width() * 3. / 4.])
        self.ui.splitter.setStretchFactor(0, 30)
        self.ui.splitter.setStretchFactor(1, 10)

        self.plots = {}
        for k in self.analysisItems:
            p = PlotWidget()
            p.setLabel('left', text=k, units=self.analysisItems[k])
            self.ui.plotLayout.addWidget(p)
            self.plots[k] = p
        irp = self.plots['inputResistance']
        irp.setLogMode(y=True, x=False)
        irp.setYRange(6, 11)

        self.ui.icPulseSpin.setOpts(dec=True,
                                    step=1,
                                    minStep=1e-12,
                                    bounds=[None, None],
                                    siPrefix=True,
                                    suffix='A')
        self.ui.vcPulseSpin.setOpts(dec=True,
                                    step=1,
                                    minStep=1e-3,
                                    bounds=[None, None],
                                    siPrefix=True,
                                    suffix='V')
        self.ui.icHoldSpin.setOpts(dec=True,
                                   step=1,
                                   minStep=1e-12,
                                   bounds=[None, None],
                                   siPrefix=True,
                                   suffix='A')
        self.ui.vcHoldSpin.setOpts(dec=True,
                                   step=1,
                                   minStep=1e-3,
                                   bounds=[None, None],
                                   siPrefix=True,
                                   suffix='V')
        self.ui.cycleTimeSpin.setOpts(dec=True,
                                      step=1,
                                      minStep=1e-6,
                                      bounds=[0, None],
                                      siPrefix=True,
                                      suffix='s')
        self.ui.pulseTimeSpin.setOpts(dec=True,
                                      step=1,
                                      minStep=1e-6,
                                      bounds=[0, 1.],
                                      siPrefix=True,
                                      suffix='s')
        self.ui.delayTimeSpin.setOpts(dec=True,
                                      step=1,
                                      minStep=1e-6,
                                      bounds=[0, 1.],
                                      siPrefix=True,
                                      suffix='s')

        self.stateGroup = WidgetGroup([
            (self.ui.icPulseSpin, 'icPulse'),
            (self.ui.vcPulseSpin, 'vcPulse'),
            (self.ui.icHoldSpin, 'icHolding'),
            (self.ui.vcHoldSpin, 'vcHolding'),
            (self.ui.icPulseCheck, 'icPulseEnabled'),
            (self.ui.vcPulseCheck, 'vcPulseEnabled'),
            (self.ui.icHoldCheck, 'icHoldingEnabled'),
            (self.ui.vcHoldCheck, 'vcHoldingEnabled'),
            (self.ui.cycleTimeSpin, 'cycleTime'),
            (self.ui.pulseTimeSpin, 'pulseTime'),
            (self.ui.delayTimeSpin, 'delayTime'),
            (self.ui.drawFitCheck, 'drawFit'),
            (self.ui.averageSpin, 'average'),
        ])
        self.stateGroup.setState(self.params)

        self.ui.patchPlot.setLabel('left', text='Primary', units='A')
        self.patchCurve = self.ui.patchPlot.plot(
            pen=QtGui.QPen(QtGui.QColor(200, 200, 200)))
        self.patchFitCurve = self.ui.patchPlot.plot(
            pen=QtGui.QPen(QtGui.QColor(0, 100, 200)))
        self.ui.commandPlot.setLabel('left', text='Command', units='V')
        self.commandCurve = self.ui.commandPlot.plot(
            pen=QtGui.QPen(QtGui.QColor(200, 200, 200)))

        self.ui.startBtn.clicked.connect(self.startClicked)
        self.ui.recordBtn.clicked.connect(self.recordClicked)
        self.ui.bathModeBtn.clicked.connect(self.bathMode)
        self.ui.patchModeBtn.clicked.connect(self.patchMode)
        self.ui.cellModeBtn.clicked.connect(self.cellMode)
        self.ui.monitorModeBtn.clicked.connect(self.monitorMode)
        self.ui.resetBtn.clicked.connect(self.resetClicked)
        self.thread.finished.connect(self.threadStopped)
        self.thread.sigNewFrame.connect(self.handleNewFrame)
        self.ui.vcModeRadio.toggled.connect(self.updateParams)
        self.stateGroup.sigChanged.connect(self.updateParams)

        ## Configure analysis plots, curves, and data arrays
        self.analysisCurves = {}
        self.analysisData = {'time': []}
        for n in self.analysisItems:
            w = getattr(self.ui, n + 'Check')
            w.clicked.connect(self.showPlots)
            p = self.plots[n]
            self.analysisCurves[n] = p.plot(
                pen=QtGui.QPen(QtGui.QColor(200, 200, 200)))
            for suf in ['', 'Std']:
                self.analysisData[n + suf] = []
        self.showPlots()
        self.updateParams()
        self.show()
        self.bathMode()
示例#8
0
    def __init__(self, dev, taskRunner):
        DAQGenericTaskGui.__init__(self, dev, taskRunner, ownUi=False)

        self.ui = taskTemplate.Ui_Form()

        self.cache = {}

        self.layout = QtGui.QGridLayout()
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(self.layout)

        self.splitter1 = QtGui.QSplitter()
        self.splitter1.setOrientation(QtCore.Qt.Horizontal)
        self.layout.addWidget(self.splitter1)

        self.ctrlLayout = QtGui.QVBoxLayout()
        wid1 = QtGui.QWidget()
        wid1.setLayout(self.ctrlLayout)
        self.plotSplitter = QtGui.QSplitter()
        self.plotSplitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter1.addWidget(wid1)
        self.splitter1.addWidget(self.plotSplitter)
        #wid = QtGui.QWidget()
        #hLayout = QtGui.QHBoxLayout()
        #wid.setLayout(hLayout)
        #self.ctrlLayout.addLayout(hLayout)
        wid2 = QtGui.QWidget()
        self.ui.setupUi(wid2)
        self.ctrlLayout.addWidget(wid2)

        if not self.dev.hasPowerIndicator:
            self.ui.checkPowerBtn.setEnabled(False)
            self.ui.checkPowerCheck.hide()
            self.ui.checkPowerCheck.setChecked(False)
        if not self.dev.hasTunableWavelength:
            self.ui.wavelengthWidget.hide()

        self.powerWidget, self.powerPlot = self.createChannelWidget(
            'power', daqName=self.dev.getDAQName()[0])

        ## all we want is the function generator
        self.powerFnGenerator = self.powerWidget.ui.waveGeneratorWidget
        self.powerWidget.hide()
        self.ctrlLayout.addWidget(self.powerFnGenerator)
        self.powerFnGenerator.show()

        self.plotSplitter.addWidget(self.powerPlot)
        self.powerWidget.setMeta('y',
                                 units='W',
                                 siPrefix=True,
                                 dec=True,
                                 step=0.5,
                                 minStep=1e-3,
                                 limits=(0, None))
        self.powerWidget.setMeta('xy',
                                 units='J',
                                 siPrefix=True,
                                 dec=True,
                                 step=0.5,
                                 minStep=1e-6,
                                 limits=(0, None))
        self.powerWidget.setMeta('x',
                                 units='s',
                                 siPrefix=True,
                                 dec=True,
                                 step=0.5,
                                 minStep=1e-6,
                                 limits=(None, None))

        if self.dev.hasTriggerableShutter:
            #(self.shutterWidget, self.shutterPlot) = self.createChannelWidget('shutter')
            self.shutterPlot = PlotWidget(name='%s.shutter' % self.dev.name)
            self.shutterPlot.setLabel('left', text='Shutter')
            self.plotSplitter.addWidget(self.shutterPlot)
            #self.shutterPlot.hide()
        if self.dev.hasQSwitch:
            #self.qSwitchWidget, self.qSwitchPlot = self.createChannelWidget('qSwitch')
            self.qSwitchPlot = PlotWidget(name='%s.qSwitch' % self.dev.name)
            self.qSwitchPlot.setLabel('left', text='Q-Switch')
            self.plotSplitter.addWidget(self.qSwitchPlot)
            #self.qSwitchPlot.hide()
        if self.dev.hasPCell:
            #self.pCellWidget, self.pCellPlot = self.createChannelWidget('pCell')
            self.pCellPlot = PlotWidget(name='%s.pCell' % self.dev.name)
            self.pCellPlot.setLabel('left', text='Pockel Cell', units='V')
            self.plotSplitter.addWidget(self.pCellPlot)
            #self.pCellPlot.hide()

        ## catch self.powerWidget.sigDataChanged and connect it to functions that calculate and plot raw shutter and qswitch traces
        self.powerWidget.sigDataChanged.connect(self.powerCmdChanged)
        self.ui.checkPowerBtn.clicked.connect(self.dev.outputPower)
        self.dev.sigOutputPowerChanged.connect(self.laserPowerChanged)
        self.dev.sigSamplePowerChanged.connect(self.samplePowerChanged)

        self.dev.outputPower()
示例#9
0
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(315, 464)
        self.verticalLayout_2 = QtGui.QVBoxLayout(Form)
        self.verticalLayout_2.setSpacing(0)
        self.verticalLayout_2.setMargin(0)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.splitter_3 = QtGui.QSplitter(Form)
        self.splitter_3.setOrientation(QtCore.Qt.Vertical)
        self.splitter_3.setObjectName(_fromUtf8("splitter_3"))
        self.splitter_2 = QtGui.QSplitter(self.splitter_3)
        self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
        self.splitter_2.setObjectName(_fromUtf8("splitter_2"))
        self.layoutWidget = QtGui.QWidget(self.splitter_2)
        self.layoutWidget.setObjectName(_fromUtf8("layoutWidget"))
        self.verticalLayout = QtGui.QVBoxLayout(self.layoutWidget)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.groupBox_2 = QtGui.QGroupBox(self.layoutWidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.groupBox_2.sizePolicy().hasHeightForWidth())
        self.groupBox_2.setSizePolicy(sizePolicy)
        self.groupBox_2.setTitle(_fromUtf8(""))
        self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
        self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_2)
        self.gridLayout_2.setMargin(0)
        self.gridLayout_2.setSpacing(0)
        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
        self.vcPulseCheck = QtGui.QCheckBox(self.groupBox_2)
        self.vcPulseCheck.setChecked(True)
        self.vcPulseCheck.setObjectName(_fromUtf8("vcPulseCheck"))
        self.gridLayout_2.addWidget(self.vcPulseCheck, 2, 1, 1, 1)
        self.vcHoldCheck = QtGui.QCheckBox(self.groupBox_2)
        self.vcHoldCheck.setObjectName(_fromUtf8("vcHoldCheck"))
        self.gridLayout_2.addWidget(self.vcHoldCheck, 3, 1, 1, 1)
        self.icPulseCheck = QtGui.QCheckBox(self.groupBox_2)
        self.icPulseCheck.setChecked(True)
        self.icPulseCheck.setObjectName(_fromUtf8("icPulseCheck"))
        self.gridLayout_2.addWidget(self.icPulseCheck, 4, 1, 1, 1)
        self.icHoldCheck = QtGui.QCheckBox(self.groupBox_2)
        self.icHoldCheck.setObjectName(_fromUtf8("icHoldCheck"))
        self.gridLayout_2.addWidget(self.icHoldCheck, 6, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
                                       QtGui.QSizePolicy.Expanding)
        self.gridLayout_2.addItem(spacerItem, 7, 1, 1, 1)
        self.label = QtGui.QLabel(self.groupBox_2)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout_2.addWidget(self.label, 10, 0, 1, 2)
        self.label_3 = QtGui.QLabel(self.groupBox_2)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout_2.addWidget(self.label_3, 9, 0, 1, 2)
        self.label_4 = QtGui.QLabel(self.groupBox_2)
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.gridLayout_2.addWidget(self.label_4, 8, 0, 1, 2)
        self.icModeRadio = QtGui.QRadioButton(self.groupBox_2)
        self.icModeRadio.setObjectName(_fromUtf8("icModeRadio"))
        self.gridLayout_2.addWidget(self.icModeRadio, 4, 0, 1, 1)
        self.vcModeRadio = QtGui.QRadioButton(self.groupBox_2)
        self.vcModeRadio.setChecked(True)
        self.vcModeRadio.setObjectName(_fromUtf8("vcModeRadio"))
        self.gridLayout_2.addWidget(self.vcModeRadio, 2, 0, 1, 1)
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.startBtn = QtGui.QPushButton(self.groupBox_2)
        self.startBtn.setCheckable(True)
        self.startBtn.setObjectName(_fromUtf8("startBtn"))
        self.horizontalLayout.addWidget(self.startBtn)
        self.recordBtn = QtGui.QPushButton(self.groupBox_2)
        self.recordBtn.setCheckable(True)
        self.recordBtn.setObjectName(_fromUtf8("recordBtn"))
        self.horizontalLayout.addWidget(self.recordBtn)
        self.gridLayout_2.addLayout(self.horizontalLayout, 0, 0, 1, 3)
        self.icPulseSpin = SpinBox(self.groupBox_2)
        self.icPulseSpin.setObjectName(_fromUtf8("icPulseSpin"))
        self.gridLayout_2.addWidget(self.icPulseSpin, 4, 2, 1, 1)
        self.pulseTimeSpin = SpinBox(self.groupBox_2)
        self.pulseTimeSpin.setSingleStep(1.0)
        self.pulseTimeSpin.setObjectName(_fromUtf8("pulseTimeSpin"))
        self.gridLayout_2.addWidget(self.pulseTimeSpin, 9, 2, 1, 1)
        self.delayTimeSpin = SpinBox(self.groupBox_2)
        self.delayTimeSpin.setMinimum(1.0)
        self.delayTimeSpin.setMaximum(10000.0)
        self.delayTimeSpin.setSingleStep(1.0)
        self.delayTimeSpin.setObjectName(_fromUtf8("delayTimeSpin"))
        self.gridLayout_2.addWidget(self.delayTimeSpin, 8, 2, 1, 1)
        self.vcPulseSpin = SpinBox(self.groupBox_2)
        self.vcPulseSpin.setObjectName(_fromUtf8("vcPulseSpin"))
        self.gridLayout_2.addWidget(self.vcPulseSpin, 2, 2, 1, 1)
        self.icHoldSpin = SpinBox(self.groupBox_2)
        self.icHoldSpin.setObjectName(_fromUtf8("icHoldSpin"))
        self.gridLayout_2.addWidget(self.icHoldSpin, 5, 2, 2, 1)
        self.cycleTimeSpin = SpinBox(self.groupBox_2)
        self.cycleTimeSpin.setSingleStep(1.0)
        self.cycleTimeSpin.setProperty("value", 0.2)
        self.cycleTimeSpin.setObjectName(_fromUtf8("cycleTimeSpin"))
        self.gridLayout_2.addWidget(self.cycleTimeSpin, 10, 2, 1, 1)
        self.vcHoldSpin = SpinBox(self.groupBox_2)
        self.vcHoldSpin.setObjectName(_fromUtf8("vcHoldSpin"))
        self.gridLayout_2.addWidget(self.vcHoldSpin, 3, 2, 1, 1)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setSpacing(0)
        self.horizontalLayout_2.setContentsMargins(0, -1, -1, -1)
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.bathModeBtn = QtGui.QToolButton(self.groupBox_2)
        self.bathModeBtn.setObjectName(_fromUtf8("bathModeBtn"))
        self.horizontalLayout_2.addWidget(self.bathModeBtn)
        self.patchModeBtn = QtGui.QToolButton(self.groupBox_2)
        self.patchModeBtn.setObjectName(_fromUtf8("patchModeBtn"))
        self.horizontalLayout_2.addWidget(self.patchModeBtn)
        self.cellModeBtn = QtGui.QToolButton(self.groupBox_2)
        self.cellModeBtn.setObjectName(_fromUtf8("cellModeBtn"))
        self.horizontalLayout_2.addWidget(self.cellModeBtn)
        self.monitorModeBtn = QtGui.QToolButton(self.groupBox_2)
        self.monitorModeBtn.setObjectName(_fromUtf8("monitorModeBtn"))
        self.horizontalLayout_2.addWidget(self.monitorModeBtn)
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                        QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem1)
        self.gridLayout_2.addLayout(self.horizontalLayout_2, 1, 0, 1, 3)
        self.label_2 = QtGui.QLabel(self.groupBox_2)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.gridLayout_2.addWidget(self.label_2, 11, 0, 1, 1)
        self.averageSpin = QtGui.QSpinBox(self.groupBox_2)
        self.averageSpin.setMinimum(1)
        self.averageSpin.setMaximum(100)
        self.averageSpin.setProperty("value", 1)
        self.averageSpin.setObjectName(_fromUtf8("averageSpin"))
        self.gridLayout_2.addWidget(self.averageSpin, 11, 2, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_2)
        self.groupBox = QtGui.QGroupBox(self.layoutWidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.groupBox.sizePolicy().hasHeightForWidth())
        self.groupBox.setSizePolicy(sizePolicy)
        self.groupBox.setTitle(_fromUtf8(""))
        self.groupBox.setObjectName(_fromUtf8("groupBox"))
        self.gridLayout = QtGui.QGridLayout(self.groupBox)
        self.gridLayout.setMargin(0)
        self.gridLayout.setHorizontalSpacing(5)
        self.gridLayout.setVerticalSpacing(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.restingPotentialCheck = QtGui.QCheckBox(self.groupBox)
        self.restingPotentialCheck.setText(_fromUtf8(""))
        self.restingPotentialCheck.setObjectName(
            _fromUtf8("restingPotentialCheck"))
        self.gridLayout.addWidget(self.restingPotentialCheck, 3, 0, 1, 1)
        self.restingPotentialLabel = QtGui.QLabel(self.groupBox)
        self.restingPotentialLabel.setMinimumSize(QtCore.QSize(140, 0))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.restingPotentialLabel.setFont(font)
        self.restingPotentialLabel.setAlignment(QtCore.Qt.AlignRight
                                                | QtCore.Qt.AlignTrailing
                                                | QtCore.Qt.AlignVCenter)
        self.restingPotentialLabel.setObjectName(
            _fromUtf8("restingPotentialLabel"))
        self.gridLayout.addWidget(self.restingPotentialLabel, 3, 2, 1, 1)
        self.restingCurrentCheck = QtGui.QCheckBox(self.groupBox)
        self.restingCurrentCheck.setText(_fromUtf8(""))
        self.restingCurrentCheck.setObjectName(
            _fromUtf8("restingCurrentCheck"))
        self.gridLayout.addWidget(self.restingCurrentCheck, 4, 0, 1, 1)
        self.fitErrorCheck = QtGui.QCheckBox(self.groupBox)
        self.fitErrorCheck.setText(_fromUtf8(""))
        self.fitErrorCheck.setObjectName(_fromUtf8("fitErrorCheck"))
        self.gridLayout.addWidget(self.fitErrorCheck, 6, 0, 1, 1)
        self.fitErrorLabel = QtGui.QLabel(self.groupBox)
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.fitErrorLabel.setFont(font)
        self.fitErrorLabel.setAlignment(QtCore.Qt.AlignRight
                                        | QtCore.Qt.AlignTrailing
                                        | QtCore.Qt.AlignVCenter)
        self.fitErrorLabel.setObjectName(_fromUtf8("fitErrorLabel"))
        self.gridLayout.addWidget(self.fitErrorLabel, 6, 2, 1, 1)
        self.drawFitCheck = QtGui.QCheckBox(self.groupBox)
        self.drawFitCheck.setChecked(True)
        self.drawFitCheck.setObjectName(_fromUtf8("drawFitCheck"))
        self.gridLayout.addWidget(self.drawFitCheck, 0, 2, 1, 1)
        self.accessResistanceLabel = QtGui.QLabel(self.groupBox)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.accessResistanceLabel.setFont(font)
        self.accessResistanceLabel.setAlignment(QtCore.Qt.AlignRight
                                                | QtCore.Qt.AlignTrailing
                                                | QtCore.Qt.AlignVCenter)
        self.accessResistanceLabel.setObjectName(
            _fromUtf8("accessResistanceLabel"))
        self.gridLayout.addWidget(self.accessResistanceLabel, 2, 2, 1, 1)
        self.inputResistanceLabel = QtGui.QLabel(self.groupBox)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.inputResistanceLabel.setFont(font)
        self.inputResistanceLabel.setAlignment(QtCore.Qt.AlignRight
                                               | QtCore.Qt.AlignTrailing
                                               | QtCore.Qt.AlignVCenter)
        self.inputResistanceLabel.setObjectName(
            _fromUtf8("inputResistanceLabel"))
        self.gridLayout.addWidget(self.inputResistanceLabel, 1, 2, 1, 1)
        self.accessResistanceCheck = QtGui.QCheckBox(self.groupBox)
        self.accessResistanceCheck.setText(_fromUtf8(""))
        self.accessResistanceCheck.setObjectName(
            _fromUtf8("accessResistanceCheck"))
        self.gridLayout.addWidget(self.accessResistanceCheck, 2, 0, 1, 1)
        self.restingCurrentLabel = QtGui.QLabel(self.groupBox)
        self.restingCurrentLabel.setMinimumSize(QtCore.QSize(120, 0))
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.restingCurrentLabel.setFont(font)
        self.restingCurrentLabel.setAlignment(QtCore.Qt.AlignRight
                                              | QtCore.Qt.AlignTrailing
                                              | QtCore.Qt.AlignVCenter)
        self.restingCurrentLabel.setObjectName(
            _fromUtf8("restingCurrentLabel"))
        self.gridLayout.addWidget(self.restingCurrentLabel, 4, 2, 1, 1)
        self.inputResistanceCheck = QtGui.QCheckBox(self.groupBox)
        self.inputResistanceCheck.setMaximumSize(QtCore.QSize(20, 16777215))
        self.inputResistanceCheck.setText(_fromUtf8(""))
        self.inputResistanceCheck.setChecked(True)
        self.inputResistanceCheck.setObjectName(
            _fromUtf8("inputResistanceCheck"))
        self.gridLayout.addWidget(self.inputResistanceCheck, 1, 0, 1, 1)
        self.capacitanceCheck = QtGui.QCheckBox(self.groupBox)
        self.capacitanceCheck.setText(_fromUtf8(""))
        self.capacitanceCheck.setObjectName(_fromUtf8("capacitanceCheck"))
        self.gridLayout.addWidget(self.capacitanceCheck, 5, 0, 1, 1)
        self.capacitanceLabel = QtGui.QLabel(self.groupBox)
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.capacitanceLabel.setFont(font)
        self.capacitanceLabel.setAlignment(QtCore.Qt.AlignRight
                                           | QtCore.Qt.AlignTrailing
                                           | QtCore.Qt.AlignVCenter)
        self.capacitanceLabel.setObjectName(_fromUtf8("capacitanceLabel"))
        self.gridLayout.addWidget(self.capacitanceLabel, 5, 2, 1, 1)
        self.label_5 = QtGui.QLabel(self.groupBox)
        self.label_5.setObjectName(_fromUtf8("label_5"))
        self.gridLayout.addWidget(self.label_5, 1, 1, 1, 1)
        self.resetBtn = QtGui.QToolButton(self.groupBox)
        self.resetBtn.setObjectName(_fromUtf8("resetBtn"))
        self.gridLayout.addWidget(self.resetBtn, 0, 0, 1, 2)
        self.label_6 = QtGui.QLabel(self.groupBox)
        self.label_6.setObjectName(_fromUtf8("label_6"))
        self.gridLayout.addWidget(self.label_6, 2, 1, 1, 1)
        self.label_7 = QtGui.QLabel(self.groupBox)
        self.label_7.setObjectName(_fromUtf8("label_7"))
        self.gridLayout.addWidget(self.label_7, 3, 1, 1, 1)
        self.label_8 = QtGui.QLabel(self.groupBox)
        self.label_8.setObjectName(_fromUtf8("label_8"))
        self.gridLayout.addWidget(self.label_8, 4, 1, 1, 1)
        self.label_9 = QtGui.QLabel(self.groupBox)
        self.label_9.setObjectName(_fromUtf8("label_9"))
        self.gridLayout.addWidget(self.label_9, 5, 1, 1, 1)
        self.label_10 = QtGui.QLabel(self.groupBox)
        self.label_10.setObjectName(_fromUtf8("label_10"))
        self.gridLayout.addWidget(self.label_10, 6, 1, 1, 1)
        self.verticalLayout.addWidget(self.groupBox)
        self.splitter = QtGui.QSplitter(self.splitter_2)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName(_fromUtf8("splitter"))
        self.patchPlot = PlotWidget(self.splitter)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.patchPlot.sizePolicy().hasHeightForWidth())
        self.patchPlot.setSizePolicy(sizePolicy)
        self.patchPlot.setObjectName(_fromUtf8("patchPlot"))
        self.commandPlot = PlotWidget(self.splitter)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.commandPlot.sizePolicy().hasHeightForWidth())
        self.commandPlot.setSizePolicy(sizePolicy)
        self.commandPlot.setObjectName(_fromUtf8("commandPlot"))
        self.layoutWidget1 = QtGui.QWidget(self.splitter_3)
        self.layoutWidget1.setObjectName(_fromUtf8("layoutWidget1"))
        self.plotLayout = QtGui.QVBoxLayout(self.layoutWidget1)
        self.plotLayout.setSpacing(0)
        self.plotLayout.setMargin(0)
        self.plotLayout.setObjectName(_fromUtf8("plotLayout"))
        self.verticalLayout_2.addWidget(self.splitter_3)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)