Exemple #1
0
    def __init__(self, dev, win):
        Qt.QWidget.__init__(self)
        self.win = win
        self.dev = dev

        self.layout = Qt.QGridLayout()
        self.setLayout(self.layout)
        self.axCtrls = {}
        self.posLabels = {}
        self.limitChecks = {}

        cap = dev.capabilities()
        self.nextRow = 0

        for axis in (0, 1, 2):
            if cap['getPos'][axis]:
                axLabel = Qt.QLabel('XYZ'[axis])
                axLabel.setMaximumWidth(15)
                posLabel = Qt.QLabel('0')
                self.posLabels[axis] = posLabel
                widgets = [axLabel, posLabel]
                if cap['limits'][axis]:
                    minCheck = Qt.QCheckBox('Min:')
                    minCheck.tag = (axis, 0)
                    # minBtn = Qt.QPushButton('set')
                    # minBtn.tag = (axis, 0)
                    # minBtn.setMaximumWidth(30)
                    maxCheck = Qt.QCheckBox('Max:')
                    maxCheck.tag = (axis, 1)
                    # maxBtn = Qt.QPushButton('set')
                    # maxBtn.tag = (axis, 1)
                    # maxBtn.setMaximumWidth(30)
                    self.limitChecks[axis] = (minCheck, maxCheck)
                    widgets.extend([minCheck, maxCheck])
                    for check in (minCheck, maxCheck):
                        check.clicked.connect(self.limitCheckClicked)
                    # for btn in (minBtn, maxBtn):
                    #     btn.sigClicked.connect(self.limitBtnClicked)

                for i, w in enumerate(widgets):
                    self.layout.addWidget(w, self.nextRow, i)
                self.axCtrls[axis] = widgets
                self.nextRow += 1

        self.updateLimits()
        self.dev.sigPositionChanged.connect(self.update)
        self.dev.sigLimitsChanged.connect(self.updateLimits)
        self.update()
 def writeParams(self):
     nodes = self.flowchart.nodes()
     params = {}
     #excludes=['Input', 'Output', 'GatherInfo', 'NegativeEventFilter', 'EventListPlotter', 'ColumnJoin', 'ColumnSelect', 'Plot']
     includes = ['DenoiseFilter','LowPassBesselFilter','HighPassBesselFilter','DetrendFilter','HistogramDetrend','ExpDeconvolve','ThresholdEvents','CaEventFitter']
     
     ## get previously stored values
     if os.path.exists(self.paramStorageFile):
         prev = pg.configfile.readConfigFile(self.paramStorageFile)
     else:
         prev = {}
     
     for name in includes:
         node = nodes[name]
         d = {}
         if hasattr(node, 'ctrls'):
             for k, v in node.ctrls.items():
                 if type(v) == type(Qt.QCheckBox()):
                     d[k] = v.isChecked()
                 elif type(v) == type(Qt.QComboBox()):
                     d[k] = str(v.currentText())
                 elif type(v) in [type(Qt.QSpinBox()), type(Qt.QDoubleSpinBox()), type(pg.SpinBox())]:
                     d[k] = v.value()
                 else:
                     print("Not saving param %s for node %s because we don't know how to record value of type %s" %(k, name, str(type(v))))
         d['bypassed'] = node.isBypassed()
         params[name] = d
     
     item = self.fileLoader.ui.fileTree.currentItem()
     roi = str(item.text(0))
     
     ## replace or add previously stored values
     prev[roi] = params
     pg.configfile.writeConfigFile(prev, self.paramStorageFile)
Exemple #3
0
    def __init__(self, dev, taskRunner):
        TaskGui.__init__(self, dev, taskRunner)
        self.layout = Qt.QGridLayout()
        self.setLayout(self.layout)
        self.blankCheck = Qt.QCheckBox("Blank Screen")

        self.layout.addWidget(self.blankCheck)
Exemple #4
0
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(228, 75)
        self.gridLayout = Qt.QGridLayout(Form)
        self.gridLayout.setMargin(0)
        self.gridLayout.setVerticalSpacing(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.label = Qt.QLabel(Form)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.slicePlaneCombo = Qt.QComboBox(Form)
        self.slicePlaneCombo.setObjectName(_fromUtf8("slicePlaneCombo"))
        self.slicePlaneCombo.addItem(_fromUtf8(""))
        self.slicePlaneCombo.addItem(_fromUtf8(""))
        self.slicePlaneCombo.addItem(_fromUtf8(""))
        self.slicePlaneCombo.addItem(_fromUtf8(""))
        self.gridLayout.addWidget(self.slicePlaneCombo, 0, 1, 1, 1)
        self.label_2 = Qt.QLabel(Form)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.hemisphereCombo = Qt.QComboBox(Form)
        self.hemisphereCombo.setObjectName(_fromUtf8("hemisphereCombo"))
        self.hemisphereCombo.addItem(_fromUtf8(""))
        self.hemisphereCombo.addItem(_fromUtf8(""))
        self.gridLayout.addWidget(self.hemisphereCombo, 1, 1, 1, 1)
        self.label_3 = Qt.QLabel(Form)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1)
        self.thicknessSpin = SpinBox(Form)
        self.thicknessSpin.setObjectName(_fromUtf8("thicknessSpin"))
        self.gridLayout.addWidget(self.thicknessSpin, 3, 1, 1, 1)
        self.photoCheck = Qt.QCheckBox(Form)
        self.photoCheck.setObjectName(_fromUtf8("photoCheck"))
        self.gridLayout.addWidget(self.photoCheck, 2, 0, 1, 1)
        self.drawingCheck = Qt.QCheckBox(Form)
        self.drawingCheck.setChecked(True)
        self.drawingCheck.setObjectName(_fromUtf8("drawingCheck"))
        self.gridLayout.addWidget(self.drawingCheck, 2, 1, 1, 1)

        self.retranslateUi(Form)
        Qt.QMetaObject.connectSlotsByName(Form)
Exemple #5
0
 def __init__(self, cp, parentImage=None):
     self.cp = cp
     Qt.QTreeWidgetItem.__init__(self)
     self.paramCombo = pg.ComboBox()
     self.thresholdSpin = pg.SpinBox(value=0.98, dec=True, step=0.1)
     self.maxCheck = Qt.QCheckBox()
     self.colorBtn = ColorButton(color=(255,255,255))
     self.remBtn = Qt.QPushButton('Remove')
     self.curveItem = pg.IsocurveItem()
     self.curveItem.setParentItem(parentImage)
     
     
     self.paramCombo.currentIndexChanged.connect(self.emitChanged)
     self.thresholdSpin.valueChanged.connect(self.emitChanged)
     self.maxCheck.stateChanged.connect(self.emitChanged)
     
     self.colorBtn.sigColorChanged.connect(self.setPen)
     self.remBtn.clicked.connect(self.delete)
Exemple #6
0
    def __init__(self):
        Qt.QDialog.__init__(self)
        #self.setModal(False)
        self.setWindowFlags(Qt.Qt.Window)
        #self.setWindowModality(Qt.Qt.NonModal)
        self.setWindowTitle('ACQ4 Error')
        self.layout = Qt.QVBoxLayout()
        self.layout.setContentsMargins(3, 3, 3, 3)
        self.setLayout(self.layout)
        self.messages = []

        self.msgLabel = Qt.QLabel()
        #self.msgLabel.setWordWrap(False)
        #self.msgLabel.setMaximumWidth(800)
        self.msgLabel.setSizePolicy(Qt.QSizePolicy.Expanding,
                                    Qt.QSizePolicy.Expanding)
        #self.msgLabel.setFrameStyle(Qt.QFrame.Box)
        #self.msgLabel.setStyleSheet('QLabel { font-weight: bold }')
        self.layout.addWidget(self.msgLabel)
        self.msgLabel.setMaximumWidth(800)
        self.msgLabel.setMinimumWidth(500)
        self.msgLabel.setWordWrap(True)
        self.layout.addStretch()
        self.disableCheck = Qt.QCheckBox('Disable error message popups')
        self.layout.addWidget(self.disableCheck)

        self.btnLayout = Qt.QHBoxLayout()
        self.btnLayout.addStretch()
        self.okBtn = Qt.QPushButton('OK')
        self.btnLayout.addWidget(self.okBtn)
        self.nextBtn = Qt.QPushButton('Show next error')
        self.btnLayout.addWidget(self.nextBtn)
        self.nextBtn.hide()
        self.logBtn = Qt.QPushButton('Show Log...')
        self.btnLayout.addWidget(self.logBtn)
        self.btnLayoutWidget = Qt.QWidget()
        self.layout.addWidget(self.btnLayoutWidget)
        self.btnLayoutWidget.setLayout(self.btnLayout)
        self.btnLayout.addStretch()

        self.okBtn.clicked.connect(self.okClicked)
        self.nextBtn.clicked.connect(self.nextMessage)
        self.logBtn.clicked.connect(self.logClicked)
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(384, 410)
        sizePolicy = Qt.QSizePolicy(Qt.QSizePolicy.Minimum,
                                    Qt.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth())
        Form.setSizePolicy(sizePolicy)
        Form.setMaximumSize(Qt.QSize(384, 410))
        font = Qt.QFont()
        font.setFamily(_fromUtf8("Arial"))
        font.setPointSize(12)
        Form.setFont(font)
        self.gridLayout = Qt.QGridLayout(Form)
        self.gridLayout.setMargin(0)
        self.gridLayout.setHorizontalSpacing(10)
        self.gridLayout.setVerticalSpacing(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.groupBox = Qt.QGroupBox(Form)
        self.groupBox.setMaximumSize(Qt.QSize(392, 410))
        font = Qt.QFont()
        font.setFamily(_fromUtf8("Lucida Grande"))
        font.setPointSize(13)
        self.groupBox.setFont(font)
        self.groupBox.setAlignment(Qt.Qt.AlignCenter)
        self.groupBox.setFlat(True)
        self.groupBox.setObjectName(_fromUtf8("groupBox"))
        self.groupBox_3 = Qt.QGroupBox(self.groupBox)
        self.groupBox_3.setGeometry(Qt.QRect(15, 20, 171, 371))
        sizePolicy = Qt.QSizePolicy(Qt.QSizePolicy.Preferred,
                                    Qt.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.groupBox_3.sizePolicy().hasHeightForWidth())
        self.groupBox_3.setSizePolicy(sizePolicy)
        palette = Qt.QPalette()
        brush = Qt.QBrush(Qt.QColor(99, 99, 99))
        brush.setStyle(Qt.Qt.SolidPattern)
        palette.setBrush(Qt.QPalette.Active, Qt.QPalette.Shadow, brush)
        brush = Qt.QBrush(Qt.QColor(99, 99, 99))
        brush.setStyle(Qt.Qt.SolidPattern)
        palette.setBrush(Qt.QPalette.Inactive, Qt.QPalette.Shadow, brush)
        brush = Qt.QBrush(Qt.QColor(99, 99, 99))
        brush.setStyle(Qt.Qt.SolidPattern)
        palette.setBrush(Qt.QPalette.Disabled, Qt.QPalette.Shadow, brush)
        self.groupBox_3.setPalette(palette)
        self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
        self.layoutWidget = Qt.QWidget(self.groupBox_3)
        self.layoutWidget.setGeometry(Qt.QRect(10, 240, 146, 26))
        self.layoutWidget.setObjectName(_fromUtf8("layoutWidget"))
        self.horizontalLayout_10 = Qt.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout_10.setMargin(9)
        self.horizontalLayout_10.setSpacing(6)
        self.horizontalLayout_10.setObjectName(
            _fromUtf8("horizontalLayout_10"))
        self.label_6 = Qt.QLabel(self.layoutWidget)
        self.label_6.setObjectName(_fromUtf8("label_6"))
        self.horizontalLayout_10.addWidget(self.label_6)
        self.ImagePhys_ROIKernel = Qt.QComboBox(self.layoutWidget)
        self.ImagePhys_ROIKernel.setMaximumSize(Qt.QSize(75, 16777215))
        self.ImagePhys_ROIKernel.setToolTip(_fromUtf8(""))
        self.ImagePhys_ROIKernel.setLayoutDirection(Qt.Qt.LeftToRight)
        self.ImagePhys_ROIKernel.setStyleSheet(
            _fromUtf8("<align = \'right\'>"))
        self.ImagePhys_ROIKernel.setMaxVisibleItems(1)
        self.ImagePhys_ROIKernel.setMaxCount(10)
        self.ImagePhys_ROIKernel.setSizeAdjustPolicy(
            Qt.QComboBox.AdjustToMinimumContentsLength)
        self.ImagePhys_ROIKernel.setFrame(False)
        self.ImagePhys_ROIKernel.setModelColumn(0)
        self.ImagePhys_ROIKernel.setObjectName(
            _fromUtf8("ImagePhys_ROIKernel"))
        self.ImagePhys_ROIKernel.addItem(_fromUtf8(""))
        self.ImagePhys_ROIKernel.addItem(_fromUtf8(""))
        self.ImagePhys_ROIKernel.addItem(_fromUtf8(""))
        self.ImagePhys_ROIKernel.addItem(_fromUtf8(""))
        self.ImagePhys_ROIKernel.addItem(_fromUtf8(""))
        self.ImagePhys_ROIKernel.addItem(_fromUtf8(""))
        self.horizontalLayout_10.addWidget(self.ImagePhys_ROIKernel)
        self.layoutWidget1 = Qt.QWidget(self.groupBox_3)
        self.layoutWidget1.setGeometry(Qt.QRect(5, 215, 156, 25))
        self.layoutWidget1.setObjectName(_fromUtf8("layoutWidget1"))
        self.horizontalLayout_14 = Qt.QHBoxLayout(self.layoutWidget1)
        self.horizontalLayout_14.setMargin(9)
        self.horizontalLayout_14.setSpacing(6)
        self.horizontalLayout_14.setObjectName(
            _fromUtf8("horizontalLayout_14"))
        self.ImagePhys_StdRB = Qt.QRadioButton(self.layoutWidget1)
        self.ImagePhys_StdRB.setObjectName(_fromUtf8("ImagePhys_StdRB"))
        self.horizontalLayout_14.addWidget(self.ImagePhys_StdRB)
        self.ImagePhys_FFTRB = Qt.QRadioButton(self.layoutWidget1)
        self.ImagePhys_FFTRB.setChecked(True)
        self.ImagePhys_FFTRB.setObjectName(_fromUtf8("ImagePhys_FFTRB"))
        self.horizontalLayout_14.addWidget(self.ImagePhys_FFTRB)
        self.layoutWidget2 = Qt.QWidget(self.groupBox_3)
        self.layoutWidget2.setGeometry(Qt.QRect(10, 270, 146, 100))
        self.layoutWidget2.setObjectName(_fromUtf8("layoutWidget2"))
        self.verticalLayout_2 = Qt.QVBoxLayout(self.layoutWidget2)
        self.verticalLayout_2.setMargin(9)
        self.verticalLayout_2.setSpacing(6)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.ImagePhys_RecalculateROIs = Qt.QPushButton(self.layoutWidget2)
        self.ImagePhys_RecalculateROIs.setObjectName(
            _fromUtf8("ImagePhys_RecalculateROIs"))
        self.verticalLayout_2.addWidget(self.ImagePhys_RecalculateROIs)
        self.ImagePhys_RetrieveROI = Qt.QPushButton(self.layoutWidget2)
        self.ImagePhys_RetrieveROI.setObjectName(
            _fromUtf8("ImagePhys_RetrieveROI"))
        self.verticalLayout_2.addWidget(self.ImagePhys_RetrieveROI)
        self.ImagePhys_SaveROI = Qt.QPushButton(self.layoutWidget2)
        self.ImagePhys_SaveROI.setObjectName(_fromUtf8("ImagePhys_SaveROI"))
        self.verticalLayout_2.addWidget(self.ImagePhys_SaveROI)
        self.widget = Qt.QWidget(self.groupBox_3)
        self.widget.setGeometry(Qt.QRect(5, 20, 161, 136))
        self.widget.setObjectName(_fromUtf8("widget"))
        self.gridLayout_2 = Qt.QGridLayout(self.widget)
        self.gridLayout_2.setMargin(9)
        self.gridLayout_2.setSpacing(6)
        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
        self.ImagePhys_addRoi = Qt.QPushButton(self.widget)
        self.ImagePhys_addRoi.setObjectName(_fromUtf8("ImagePhys_addRoi"))
        self.gridLayout_2.addWidget(self.ImagePhys_addRoi, 0, 0, 1, 1)
        self.ImagePhys_clearRoi = Qt.QPushButton(self.widget)
        self.ImagePhys_clearRoi.setObjectName(_fromUtf8("ImagePhys_clearRoi"))
        self.gridLayout_2.addWidget(self.ImagePhys_clearRoi, 1, 0, 1, 1)
        self.ImagePhys_findROIs = Qt.QPushButton(self.widget)
        self.ImagePhys_findROIs.setObjectName(_fromUtf8("ImagePhys_findROIs"))
        self.gridLayout_2.addWidget(self.ImagePhys_findROIs, 2, 0, 1, 1)
        self.horizontalLayout_3 = Qt.QHBoxLayout()
        self.horizontalLayout_3.setMargin(9)
        self.horizontalLayout_3.setSpacing(6)
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.label_13 = Qt.QLabel(self.widget)
        self.label_13.setObjectName(_fromUtf8("label_13"))
        self.horizontalLayout_3.addWidget(self.label_13)
        self.ImagePhys_ROISize = Qt.QSpinBox(self.widget)
        self.ImagePhys_ROISize.setMinimum(1)
        self.ImagePhys_ROISize.setMaximum(25)
        self.ImagePhys_ROISize.setProperty("value", 2)
        self.ImagePhys_ROISize.setObjectName(_fromUtf8("ImagePhys_ROISize"))
        self.horizontalLayout_3.addWidget(self.ImagePhys_ROISize)
        self.gridLayout_2.addLayout(self.horizontalLayout_3, 3, 0, 1, 1)
        self.widget1 = Qt.QWidget(self.groupBox_3)
        self.widget1.setGeometry(Qt.QRect(5, 160, 161, 53))
        self.widget1.setObjectName(_fromUtf8("widget1"))
        self.horizontalLayout_4 = Qt.QHBoxLayout(self.widget1)
        self.horizontalLayout_4.setMargin(9)
        self.horizontalLayout_4.setSpacing(6)
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.verticalLayout = Qt.QVBoxLayout()
        self.verticalLayout.setMargin(9)
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.label_11 = Qt.QLabel(self.widget1)
        self.label_11.setAlignment(Qt.Qt.AlignCenter)
        self.label_11.setObjectName(_fromUtf8("label_11"))
        self.verticalLayout.addWidget(self.label_11)
        self.ImagePhys_ROIThrLow = Qt.QDoubleSpinBox(self.widget1)
        sizePolicy = Qt.QSizePolicy(Qt.QSizePolicy.Minimum,
                                    Qt.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.ImagePhys_ROIThrLow.sizePolicy().hasHeightForWidth())
        self.ImagePhys_ROIThrLow.setSizePolicy(sizePolicy)
        self.ImagePhys_ROIThrLow.setAlignment(Qt.Qt.AlignRight
                                              | Qt.Qt.AlignTrailing
                                              | Qt.Qt.AlignVCenter)
        self.ImagePhys_ROIThrLow.setMinimum(0.01)
        self.ImagePhys_ROIThrLow.setMaximum(1.0)
        self.ImagePhys_ROIThrLow.setSingleStep(0.1)
        self.ImagePhys_ROIThrLow.setProperty("value", 0.2)
        self.ImagePhys_ROIThrLow.setObjectName(
            _fromUtf8("ImagePhys_ROIThrLow"))
        self.verticalLayout.addWidget(self.ImagePhys_ROIThrLow)
        self.horizontalLayout_4.addLayout(self.verticalLayout)
        self.verticalLayout_3 = Qt.QVBoxLayout()
        self.verticalLayout_3.setMargin(9)
        self.verticalLayout_3.setSpacing(6)
        self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
        self.label_12 = Qt.QLabel(self.widget1)
        self.label_12.setAlignment(Qt.Qt.AlignCenter)
        self.label_12.setObjectName(_fromUtf8("label_12"))
        self.verticalLayout_3.addWidget(self.label_12)
        self.ImagePhys_ROIThrHigh = Qt.QDoubleSpinBox(self.widget1)
        sizePolicy = Qt.QSizePolicy(Qt.QSizePolicy.Minimum,
                                    Qt.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.ImagePhys_ROIThrHigh.sizePolicy().hasHeightForWidth())
        self.ImagePhys_ROIThrHigh.setSizePolicy(sizePolicy)
        self.ImagePhys_ROIThrHigh.setAlignment(Qt.Qt.AlignRight
                                               | Qt.Qt.AlignTrailing
                                               | Qt.Qt.AlignVCenter)
        self.ImagePhys_ROIThrHigh.setMinimum(0.1)
        self.ImagePhys_ROIThrHigh.setMaximum(1.0)
        self.ImagePhys_ROIThrHigh.setSingleStep(0.1)
        self.ImagePhys_ROIThrHigh.setProperty("value", 1.0)
        self.ImagePhys_ROIThrHigh.setObjectName(
            _fromUtf8("ImagePhys_ROIThrHigh"))
        self.verticalLayout_3.addWidget(self.ImagePhys_ROIThrHigh)
        self.horizontalLayout_4.addLayout(self.verticalLayout_3)
        self.groupBox_2 = Qt.QGroupBox(self.groupBox)
        self.groupBox_2.setGeometry(Qt.QRect(205, 20, 156, 191))
        self.groupBox_2.setMinimumSize(Qt.QSize(120, 190))
        self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
        self.ImagePhys_RegisterStack = Qt.QPushButton(self.groupBox_2)
        self.ImagePhys_RegisterStack.setGeometry(Qt.QRect(0, 15, 151, 29))
        self.ImagePhys_RegisterStack.setObjectName(
            _fromUtf8("ImagePhys_RegisterStack"))
        self.layoutWidget3 = Qt.QWidget(self.groupBox_2)
        self.layoutWidget3.setGeometry(Qt.QRect(0, 40, 141, 32))
        self.layoutWidget3.setObjectName(_fromUtf8("layoutWidget3"))
        self.horizontalLayout_6 = Qt.QHBoxLayout(self.layoutWidget3)
        self.horizontalLayout_6.setMargin(9)
        self.horizontalLayout_6.setSpacing(6)
        self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
        self.ImagePhys_UnBleach = Qt.QPushButton(self.layoutWidget3)
        self.ImagePhys_UnBleach.setCheckable(True)
        self.ImagePhys_UnBleach.setObjectName(_fromUtf8("ImagePhys_UnBleach"))
        self.horizontalLayout_6.addWidget(self.ImagePhys_UnBleach)
        self.ImagePhys_BleachInfo = Qt.QLabel(self.layoutWidget3)
        self.ImagePhys_BleachInfo.setFrameShape(Qt.QFrame.StyledPanel)
        self.ImagePhys_BleachInfo.setFrameShadow(Qt.QFrame.Sunken)
        self.ImagePhys_BleachInfo.setAlignment(Qt.Qt.AlignCenter)
        self.ImagePhys_BleachInfo.setObjectName(
            _fromUtf8("ImagePhys_BleachInfo"))
        self.horizontalLayout_6.addWidget(self.ImagePhys_BleachInfo)
        self.ImagePhys_SpecCalc = Qt.QPushButton(self.groupBox_2)
        self.ImagePhys_SpecCalc.setGeometry(Qt.QRect(0, 70, 151, 30))
        self.ImagePhys_SpecCalc.setObjectName(_fromUtf8("ImagePhys_SpecCalc"))
        self.layoutWidget4 = Qt.QWidget(self.groupBox_2)
        self.layoutWidget4.setGeometry(Qt.QRect(0, 95, 146, 27))
        self.layoutWidget4.setObjectName(_fromUtf8("layoutWidget4"))
        self.horizontalLayout = Qt.QHBoxLayout(self.layoutWidget4)
        self.horizontalLayout.setMargin(9)
        self.horizontalLayout.setSpacing(6)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.label_7 = Qt.QLabel(self.layoutWidget4)
        self.label_7.setObjectName(_fromUtf8("label_7"))
        self.horizontalLayout.addWidget(self.label_7)
        self.ImagePhys_SpecHPF = Qt.QDoubleSpinBox(self.layoutWidget4)
        self.ImagePhys_SpecHPF.setAlignment(Qt.Qt.AlignRight
                                            | Qt.Qt.AlignTrailing
                                            | Qt.Qt.AlignVCenter)
        self.ImagePhys_SpecHPF.setProperty("value", 1.0)
        self.ImagePhys_SpecHPF.setObjectName(_fromUtf8("ImagePhys_SpecHPF"))
        self.horizontalLayout.addWidget(self.ImagePhys_SpecHPF)
        self.layoutWidget5 = Qt.QWidget(self.groupBox_2)
        self.layoutWidget5.setGeometry(Qt.QRect(0, 125, 146, 27))
        self.layoutWidget5.setObjectName(_fromUtf8("layoutWidget5"))
        self.horizontalLayout_11 = Qt.QHBoxLayout(self.layoutWidget5)
        self.horizontalLayout_11.setMargin(9)
        self.horizontalLayout_11.setSpacing(6)
        self.horizontalLayout_11.setObjectName(
            _fromUtf8("horizontalLayout_11"))
        self.label_8 = Qt.QLabel(self.layoutWidget5)
        self.label_8.setObjectName(_fromUtf8("label_8"))
        self.horizontalLayout_11.addWidget(self.label_8)
        self.ImagePhys_SpecLPF = Qt.QDoubleSpinBox(self.layoutWidget5)
        self.ImagePhys_SpecLPF.setAlignment(Qt.Qt.AlignRight
                                            | Qt.Qt.AlignTrailing
                                            | Qt.Qt.AlignVCenter)
        self.ImagePhys_SpecLPF.setProperty("value", 10.0)
        self.ImagePhys_SpecLPF.setObjectName(_fromUtf8("ImagePhys_SpecLPF"))
        self.horizontalLayout_11.addWidget(self.ImagePhys_SpecLPF)
        self.layoutWidget6 = Qt.QWidget(self.groupBox_2)
        self.layoutWidget6.setGeometry(Qt.QRect(1, 155, 149, 27))
        self.layoutWidget6.setObjectName(_fromUtf8("layoutWidget6"))
        self.horizontalLayout_12 = Qt.QHBoxLayout(self.layoutWidget6)
        self.horizontalLayout_12.setMargin(9)
        self.horizontalLayout_12.setSpacing(6)
        self.horizontalLayout_12.setObjectName(
            _fromUtf8("horizontalLayout_12"))
        self.label_10 = Qt.QLabel(self.layoutWidget6)
        self.label_10.setObjectName(_fromUtf8("label_10"))
        self.horizontalLayout_12.addWidget(self.label_10)
        self.ImagePhys_FFTSmooth = Qt.QSpinBox(self.layoutWidget6)
        self.ImagePhys_FFTSmooth.setAlignment(Qt.Qt.AlignRight
                                              | Qt.Qt.AlignTrailing
                                              | Qt.Qt.AlignVCenter)
        self.ImagePhys_FFTSmooth.setMaximum(16)
        self.ImagePhys_FFTSmooth.setObjectName(
            _fromUtf8("ImagePhys_FFTSmooth"))
        self.horizontalLayout_12.addWidget(self.ImagePhys_FFTSmooth)
        self.groupBox_6 = Qt.QGroupBox(self.groupBox)
        self.groupBox_6.setGeometry(Qt.QRect(205, 220, 161, 161))
        self.groupBox_6.setObjectName(_fromUtf8("groupBox_6"))
        self.layoutWidget7 = Qt.QWidget(self.groupBox_6)
        self.layoutWidget7.setGeometry(Qt.QRect(5, 51, 152, 31))
        self.layoutWidget7.setObjectName(_fromUtf8("layoutWidget7"))
        self.horizontalLayout_7 = Qt.QHBoxLayout(self.layoutWidget7)
        self.horizontalLayout_7.setMargin(9)
        self.horizontalLayout_7.setSpacing(6)
        self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
        self.label_3 = Qt.QLabel(self.layoutWidget7)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.horizontalLayout_7.addWidget(self.label_3)
        self.ImagePhys_BaseEnd = Qt.QDoubleSpinBox(self.layoutWidget7)
        self.ImagePhys_BaseEnd.setAlignment(Qt.Qt.AlignRight
                                            | Qt.Qt.AlignTrailing
                                            | Qt.Qt.AlignVCenter)
        self.ImagePhys_BaseEnd.setMinimum(-5000.0)
        self.ImagePhys_BaseEnd.setMaximum(50000.0)
        self.ImagePhys_BaseEnd.setObjectName(_fromUtf8("ImagePhys_BaseEnd"))
        self.horizontalLayout_7.addWidget(self.ImagePhys_BaseEnd)
        self.layoutWidget8 = Qt.QWidget(self.groupBox_6)
        self.layoutWidget8.setGeometry(Qt.QRect(5, 20, 152, 27))
        self.layoutWidget8.setObjectName(_fromUtf8("layoutWidget8"))
        self.horizontalLayout_2 = Qt.QHBoxLayout(self.layoutWidget8)
        self.horizontalLayout_2.setMargin(9)
        self.horizontalLayout_2.setSpacing(6)
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.label = Qt.QLabel(self.layoutWidget8)
        self.label.setObjectName(_fromUtf8("label"))
        self.horizontalLayout_2.addWidget(self.label)
        self.ImagePhys_BaseStart = Qt.QDoubleSpinBox(self.layoutWidget8)
        self.ImagePhys_BaseStart.setAlignment(Qt.Qt.AlignRight
                                              | Qt.Qt.AlignTrailing
                                              | Qt.Qt.AlignVCenter)
        self.ImagePhys_BaseStart.setMinimum(-5000.0)
        self.ImagePhys_BaseStart.setMaximum(50000.0)
        self.ImagePhys_BaseStart.setObjectName(
            _fromUtf8("ImagePhys_BaseStart"))
        self.horizontalLayout_2.addWidget(self.ImagePhys_BaseStart)
        self.layoutWidget9 = Qt.QWidget(self.groupBox_6)
        self.layoutWidget9.setGeometry(Qt.QRect(5, 85, 151, 32))
        self.layoutWidget9.setObjectName(_fromUtf8("layoutWidget9"))
        self.horizontalLayout_8 = Qt.QHBoxLayout(self.layoutWidget9)
        self.horizontalLayout_8.setMargin(9)
        self.horizontalLayout_8.setSpacing(6)
        self.horizontalLayout_8.setObjectName(_fromUtf8("horizontalLayout_8"))
        self.ImagePhys_CorrTool_LPF = Qt.QCheckBox(self.layoutWidget9)
        self.ImagePhys_CorrTool_LPF.setEnabled(True)
        self.ImagePhys_CorrTool_LPF.setLayoutDirection(Qt.Qt.RightToLeft)
        self.ImagePhys_CorrTool_LPF.setObjectName(
            _fromUtf8("ImagePhys_CorrTool_LPF"))
        self.horizontalLayout_8.addWidget(self.ImagePhys_CorrTool_LPF)
        self.ImagePhys_ImgLPF = Qt.QDoubleSpinBox(self.layoutWidget9)
        self.ImagePhys_ImgLPF.setAlignment(Qt.Qt.AlignRight
                                           | Qt.Qt.AlignTrailing
                                           | Qt.Qt.AlignVCenter)
        self.ImagePhys_ImgLPF.setDecimals(2)
        self.ImagePhys_ImgLPF.setMinimum(0.1)
        self.ImagePhys_ImgLPF.setMaximum(5000.0)
        self.ImagePhys_ImgLPF.setSingleStep(1.0)
        self.ImagePhys_ImgLPF.setProperty("value", 20.0)
        self.ImagePhys_ImgLPF.setObjectName(_fromUtf8("ImagePhys_ImgLPF"))
        self.horizontalLayout_8.addWidget(self.ImagePhys_ImgLPF)
        self.layoutWidget10 = Qt.QWidget(self.groupBox_6)
        self.layoutWidget10.setGeometry(Qt.QRect(5, 120, 151, 32))
        self.layoutWidget10.setObjectName(_fromUtf8("layoutWidget10"))
        self.horizontalLayout_9 = Qt.QHBoxLayout(self.layoutWidget10)
        self.horizontalLayout_9.setMargin(9)
        self.horizontalLayout_9.setSpacing(6)
        self.horizontalLayout_9.setObjectName(_fromUtf8("horizontalLayout_9"))
        self.ImagePhys_CorrTool_HPF = Qt.QCheckBox(self.layoutWidget10)
        self.ImagePhys_CorrTool_HPF.setLayoutDirection(Qt.Qt.RightToLeft)
        self.ImagePhys_CorrTool_HPF.setObjectName(
            _fromUtf8("ImagePhys_CorrTool_HPF"))
        self.horizontalLayout_9.addWidget(self.ImagePhys_CorrTool_HPF)
        self.ImagePhys_ImgHPF = Qt.QDoubleSpinBox(self.layoutWidget10)
        self.ImagePhys_ImgHPF.setAlignment(Qt.Qt.AlignRight
                                           | Qt.Qt.AlignTrailing
                                           | Qt.Qt.AlignVCenter)
        self.ImagePhys_ImgHPF.setSuffix(_fromUtf8(""))
        self.ImagePhys_ImgHPF.setDecimals(3)
        self.ImagePhys_ImgHPF.setMinimum(0.001)
        self.ImagePhys_ImgHPF.setMaximum(10.0)
        self.ImagePhys_ImgHPF.setSingleStep(0.2)
        self.ImagePhys_ImgHPF.setProperty("value", 0.2)
        self.ImagePhys_ImgHPF.setObjectName(_fromUtf8("ImagePhys_ImgHPF"))
        self.horizontalLayout_9.addWidget(self.ImagePhys_ImgHPF)
        self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 1)

        self.retranslateUi(Form)
        self.ImagePhys_ROIKernel.setCurrentIndex(1)
        Qt.QMetaObject.connectSlotsByName(Form)
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(400, 410)
        sizePolicy = Qt.QSizePolicy(Qt.QSizePolicy.Preferred,
                                    Qt.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth())
        Form.setSizePolicy(sizePolicy)
        font = Qt.QFont()
        font.setFamily(_fromUtf8("Arial"))
        font.setPointSize(12)
        Form.setFont(font)
        self.gridLayout = Qt.QGridLayout(Form)
        self.gridLayout.setMargin(0)
        self.gridLayout.setHorizontalSpacing(10)
        self.gridLayout.setVerticalSpacing(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.groupBox = Qt.QGroupBox(Form)
        sizePolicy = Qt.QSizePolicy(Qt.QSizePolicy.Preferred,
                                    Qt.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.groupBox.sizePolicy().hasHeightForWidth())
        self.groupBox.setSizePolicy(sizePolicy)
        self.groupBox.setMinimumSize(Qt.QSize(0, 380))
        self.groupBox.setAlignment(Qt.Qt.AlignCenter)
        self.groupBox.setObjectName(_fromUtf8("groupBox"))
        self.gridLayout_2 = Qt.QGridLayout(self.groupBox)
        self.gridLayout_2.setSizeConstraint(Qt.QLayout.SetNoConstraint)
        self.gridLayout_2.setMargin(0)
        self.gridLayout_2.setHorizontalSpacing(5)
        self.gridLayout_2.setVerticalSpacing(0)
        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
        self.line = Qt.QFrame(self.groupBox)
        self.line.setFrameShape(Qt.QFrame.VLine)
        self.line.setFrameShadow(Qt.QFrame.Sunken)
        self.line.setObjectName(_fromUtf8("line"))
        self.gridLayout_2.addWidget(self.line, 1, 1, 2, 1)
        self.line_2 = Qt.QFrame(self.groupBox)
        self.line_2.setFrameShape(Qt.QFrame.HLine)
        self.line_2.setFrameShadow(Qt.QFrame.Sunken)
        self.line_2.setObjectName(_fromUtf8("line_2"))
        self.gridLayout_2.addWidget(self.line_2, 0, 0, 1, 1)
        self.IAFuncs_widget = Qt.QWidget(self.groupBox)
        sizePolicy = Qt.QSizePolicy(Qt.QSizePolicy.Preferred,
                                    Qt.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.IAFuncs_widget.sizePolicy().hasHeightForWidth())
        self.IAFuncs_widget.setSizePolicy(sizePolicy)
        self.IAFuncs_widget.setObjectName(_fromUtf8("IAFuncs_widget"))
        self.IAFuncs_checkbox_TraceLabels = Qt.QCheckBox(self.IAFuncs_widget)
        self.IAFuncs_checkbox_TraceLabels.setGeometry(Qt.QRect(
            10, 360, 83, 18))
        self.IAFuncs_checkbox_TraceLabels.setChecked(True)
        self.IAFuncs_checkbox_TraceLabels.setObjectName(
            _fromUtf8("IAFuncs_checkbox_TraceLabels"))
        self.widget = Qt.QWidget(self.IAFuncs_widget)
        self.widget.setGeometry(Qt.QRect(180, 0, 196, 371))
        sizePolicy = Qt.QSizePolicy(Qt.QSizePolicy.Preferred,
                                    Qt.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.widget.sizePolicy().hasHeightForWidth())
        self.widget.setSizePolicy(sizePolicy)
        self.widget.setObjectName(_fromUtf8("widget"))
        self.label_15 = Qt.QLabel(self.widget)
        self.label_15.setGeometry(Qt.QRect(10, 10, 136, 16))
        self.label_15.setObjectName(_fromUtf8("label_15"))
        self.layoutWidget = Qt.QWidget(self.widget)
        self.layoutWidget.setGeometry(Qt.QRect(10, 30, 176, 186))
        self.layoutWidget.setObjectName(_fromUtf8("layoutWidget"))
        self.formLayout = Qt.QFormLayout(self.layoutWidget)
        self.formLayout.setMargin(9)
        self.formLayout.setSpacing(6)
        self.formLayout.setObjectName(_fromUtf8("formLayout"))
        self.horizontalLayout_2 = Qt.QHBoxLayout()
        self.horizontalLayout_2.setMargin(9)
        self.horizontalLayout_2.setSpacing(6)
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.label_18 = Qt.QLabel(self.layoutWidget)
        self.label_18.setObjectName(_fromUtf8("label_18"))
        self.horizontalLayout_2.addWidget(self.label_18)
        self.smc_Kd = Qt.QDoubleSpinBox(self.layoutWidget)
        self.smc_Kd.setAlignment(Qt.Qt.AlignRight | Qt.Qt.AlignTrailing
                                 | Qt.Qt.AlignVCenter)
        self.smc_Kd.setDecimals(0)
        self.smc_Kd.setMinimum(0.0)
        self.smc_Kd.setMaximum(5000.0)
        self.smc_Kd.setProperty("value", 345.0)
        self.smc_Kd.setObjectName(_fromUtf8("smc_Kd"))
        self.horizontalLayout_2.addWidget(self.smc_Kd)
        self.formLayout.setLayout(1, Qt.QFormLayout.SpanningRole,
                                  self.horizontalLayout_2)
        self.horizontalLayout_3 = Qt.QHBoxLayout()
        self.horizontalLayout_3.setMargin(9)
        self.horizontalLayout_3.setSpacing(6)
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.label_19 = Qt.QLabel(self.layoutWidget)
        self.label_19.setObjectName(_fromUtf8("label_19"))
        self.horizontalLayout_3.addWidget(self.label_19)
        self.smc_TCa = Qt.QDoubleSpinBox(self.layoutWidget)
        self.smc_TCa.setAlignment(Qt.Qt.AlignRight | Qt.Qt.AlignTrailing
                                  | Qt.Qt.AlignVCenter)
        self.smc_TCa.setDecimals(3)
        self.smc_TCa.setMinimum(0.001)
        self.smc_TCa.setMaximum(5.0)
        self.smc_TCa.setSingleStep(0.01)
        self.smc_TCa.setProperty("value", 0.025)
        self.smc_TCa.setObjectName(_fromUtf8("smc_TCa"))
        self.horizontalLayout_3.addWidget(self.smc_TCa)
        self.formLayout.setLayout(2, Qt.QFormLayout.SpanningRole,
                                  self.horizontalLayout_3)
        self.horizontalLayout_4 = Qt.QHBoxLayout()
        self.horizontalLayout_4.setMargin(9)
        self.horizontalLayout_4.setSpacing(6)
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.label_17 = Qt.QLabel(self.layoutWidget)
        self.label_17.setObjectName(_fromUtf8("label_17"))
        self.horizontalLayout_4.addWidget(self.label_17)
        self.smc_C0 = Qt.QDoubleSpinBox(self.layoutWidget)
        self.smc_C0.setAlignment(Qt.Qt.AlignRight | Qt.Qt.AlignTrailing
                                 | Qt.Qt.AlignVCenter)
        self.smc_C0.setDecimals(3)
        self.smc_C0.setMinimum(0.01)
        self.smc_C0.setMaximum(1000.0)
        self.smc_C0.setObjectName(_fromUtf8("smc_C0"))
        self.horizontalLayout_4.addWidget(self.smc_C0)
        self.formLayout.setLayout(3, Qt.QFormLayout.SpanningRole,
                                  self.horizontalLayout_4)
        self.horizontalLayout = Qt.QHBoxLayout()
        self.horizontalLayout.setMargin(9)
        self.horizontalLayout.setSpacing(6)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.label_16 = Qt.QLabel(self.layoutWidget)
        self.label_16.setObjectName(_fromUtf8("label_16"))
        self.horizontalLayout.addWidget(self.label_16)
        self.smc_Amplitude = Qt.QDoubleSpinBox(self.layoutWidget)
        self.smc_Amplitude.setAlignment(Qt.Qt.AlignRight | Qt.Qt.AlignTrailing
                                        | Qt.Qt.AlignVCenter)
        self.smc_Amplitude.setMaximum(1000.0)
        self.smc_Amplitude.setSingleStep(0.1)
        self.smc_Amplitude.setProperty("value", 1.0)
        self.smc_Amplitude.setObjectName(_fromUtf8("smc_Amplitude"))
        self.horizontalLayout.addWidget(self.smc_Amplitude)
        self.formLayout.setLayout(0, Qt.QFormLayout.SpanningRole,
                                  self.horizontalLayout)
        self.IAFuncs_Analysis_smcAnalyze = Qt.QPushButton(self.layoutWidget)
        self.IAFuncs_Analysis_smcAnalyze.setObjectName(
            _fromUtf8("IAFuncs_Analysis_smcAnalyze"))
        self.formLayout.setWidget(5, Qt.QFormLayout.LabelRole,
                                  self.IAFuncs_Analysis_smcAnalyze)
        self.IAFuncs_Analysis_SpikeXCorr = Qt.QPushButton(self.layoutWidget)
        self.IAFuncs_Analysis_SpikeXCorr.setObjectName(
            _fromUtf8("IAFuncs_Analysis_SpikeXCorr"))
        self.formLayout.setWidget(5, Qt.QFormLayout.FieldRole,
                                  self.IAFuncs_Analysis_SpikeXCorr)
        self.widget1 = Qt.QWidget(self.widget)
        self.widget1.setGeometry(Qt.QRect(10, 220, 176, 140))
        self.widget1.setObjectName(_fromUtf8("widget1"))
        self.verticalLayout = Qt.QVBoxLayout(self.widget1)
        self.verticalLayout.setMargin(9)
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.label_13 = Qt.QLabel(self.widget1)
        self.label_13.setObjectName(_fromUtf8("label_13"))
        self.verticalLayout.addWidget(self.label_13)
        self.line_4 = Qt.QFrame(self.widget1)
        self.line_4.setLineWidth(2)
        self.line_4.setFrameShape(Qt.QFrame.HLine)
        self.line_4.setFrameShadow(Qt.QFrame.Sunken)
        self.line_4.setObjectName(_fromUtf8("line_4"))
        self.verticalLayout.addWidget(self.line_4)
        self.IAFuncs_Analysis_AFFT = Qt.QPushButton(self.widget1)
        self.IAFuncs_Analysis_AFFT.setText(_fromUtf8("Avg FFT"))
        self.IAFuncs_Analysis_AFFT.setObjectName(
            _fromUtf8("IAFuncs_Analysis_AFFT"))
        self.verticalLayout.addWidget(self.IAFuncs_Analysis_AFFT)
        self.IAFuncs_Analysis_AFFT_Individual = Qt.QPushButton(self.widget1)
        self.IAFuncs_Analysis_AFFT_Individual.setObjectName(
            _fromUtf8("IAFuncs_Analysis_AFFT_Individual"))
        self.verticalLayout.addWidget(self.IAFuncs_Analysis_AFFT_Individual)
        self.IAFuncs_Analysis_FourierMap = Qt.QPushButton(self.widget1)
        self.IAFuncs_Analysis_FourierMap.setObjectName(
            _fromUtf8("IAFuncs_Analysis_FourierMap"))
        self.verticalLayout.addWidget(self.IAFuncs_Analysis_FourierMap)
        self.layoutWidget1 = Qt.QWidget(self.IAFuncs_widget)
        self.layoutWidget1.setGeometry(Qt.QRect(10, 110, 171, 221))
        self.layoutWidget1.setObjectName(_fromUtf8("layoutWidget1"))
        self.formLayout_4 = Qt.QFormLayout(self.layoutWidget1)
        self.formLayout_4.setFieldGrowthPolicy(
            Qt.QFormLayout.FieldsStayAtSizeHint)
        self.formLayout_4.setMargin(9)
        self.formLayout_4.setSpacing(0)
        self.formLayout_4.setObjectName(_fromUtf8("formLayout_4"))
        self.IAFuncs_Analysis_AXCorr_Individual = Qt.QPushButton(
            self.layoutWidget1)
        self.IAFuncs_Analysis_AXCorr_Individual.setObjectName(
            _fromUtf8("IAFuncs_Analysis_AXCorr_Individual"))
        self.formLayout_4.setWidget(1, Qt.QFormLayout.SpanningRole,
                                    self.IAFuncs_Analysis_AXCorr_Individual)
        self.IAFuncs_Analysis_UnbiasedXC = Qt.QPushButton(self.layoutWidget1)
        self.IAFuncs_Analysis_UnbiasedXC.setObjectName(
            _fromUtf8("IAFuncs_Analysis_UnbiasedXC"))
        self.formLayout_4.setWidget(2, Qt.QFormLayout.SpanningRole,
                                    self.IAFuncs_Analysis_UnbiasedXC)
        self.IAFuncs_Distance = Qt.QPushButton(self.layoutWidget1)
        self.IAFuncs_Distance.setObjectName(_fromUtf8("IAFuncs_Distance"))
        self.formLayout_4.setWidget(3, Qt.QFormLayout.SpanningRole,
                                    self.IAFuncs_Distance)
        self.IAFuncs_DistanceStrength = Qt.QPushButton(self.layoutWidget1)
        self.IAFuncs_DistanceStrength.setObjectName(
            _fromUtf8("IAFuncs_DistanceStrength"))
        self.formLayout_4.setWidget(4, Qt.QFormLayout.SpanningRole,
                                    self.IAFuncs_DistanceStrength)
        self.formLayout_3 = Qt.QFormLayout()
        self.formLayout_3.setMargin(9)
        self.formLayout_3.setSpacing(6)
        self.formLayout_3.setObjectName(_fromUtf8("formLayout_3"))
        self.label = Qt.QLabel(self.layoutWidget1)
        self.label.setObjectName(_fromUtf8("label"))
        self.formLayout_3.setWidget(0, Qt.QFormLayout.LabelRole, self.label)
        self.IAFuncs_XCorrThreshold = Qt.QDoubleSpinBox(self.layoutWidget1)
        self.IAFuncs_XCorrThreshold.setAlignment(Qt.Qt.AlignRight
                                                 | Qt.Qt.AlignTrailing
                                                 | Qt.Qt.AlignVCenter)
        self.IAFuncs_XCorrThreshold.setMaximum(1.0)
        self.IAFuncs_XCorrThreshold.setSingleStep(0.02)
        self.IAFuncs_XCorrThreshold.setProperty("value", 0.25)
        self.IAFuncs_XCorrThreshold.setObjectName(
            _fromUtf8("IAFuncs_XCorrThreshold"))
        self.formLayout_3.setWidget(0, Qt.QFormLayout.FieldRole,
                                    self.IAFuncs_XCorrThreshold)
        self.formLayout_4.setLayout(5, Qt.QFormLayout.SpanningRole,
                                    self.formLayout_3)
        self.IAFuncs_NetworkGraph = Qt.QPushButton(self.layoutWidget1)
        self.IAFuncs_NetworkGraph.setObjectName(
            _fromUtf8("IAFuncs_NetworkGraph"))
        self.formLayout_4.setWidget(6, Qt.QFormLayout.SpanningRole,
                                    self.IAFuncs_NetworkGraph)
        self.IAFuncs_DistanceStrengthPrint = Qt.QPushButton(self.layoutWidget1)
        self.IAFuncs_DistanceStrengthPrint.setObjectName(
            _fromUtf8("IAFuncs_DistanceStrengthPrint"))
        self.formLayout_4.setWidget(7, Qt.QFormLayout.SpanningRole,
                                    self.IAFuncs_DistanceStrengthPrint)
        self.IAFuncs_MatplotlibCheckBox = Qt.QCheckBox(self.layoutWidget1)
        self.IAFuncs_MatplotlibCheckBox.setObjectName(
            _fromUtf8("IAFuncs_MatplotlibCheckBox"))
        self.formLayout_4.setWidget(8, Qt.QFormLayout.FieldRole,
                                    self.IAFuncs_MatplotlibCheckBox)
        self.IAFuncs_Analysis_AXCorr = Qt.QPushButton(self.layoutWidget1)
        self.IAFuncs_Analysis_AXCorr.setObjectName(
            _fromUtf8("IAFuncs_Analysis_AXCorr"))
        self.formLayout_4.setWidget(0, Qt.QFormLayout.SpanningRole,
                                    self.IAFuncs_Analysis_AXCorr)
        self.widget2 = Qt.QWidget(self.IAFuncs_widget)
        self.widget2.setGeometry(Qt.QRect(26, 13, 134, 96))
        self.widget2.setObjectName(_fromUtf8("widget2"))
        self.verticalLayout_2 = Qt.QVBoxLayout(self.widget2)
        self.verticalLayout_2.setMargin(9)
        self.verticalLayout_2.setSpacing(6)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.label_14 = Qt.QLabel(self.widget2)
        self.label_14.setObjectName(_fromUtf8("label_14"))
        self.verticalLayout_2.addWidget(self.label_14)
        self.IAFuncs_AnalogRadioBtn = Qt.QRadioButton(self.widget2)
        self.IAFuncs_AnalogRadioBtn.setChecked(True)
        self.IAFuncs_AnalogRadioBtn.setObjectName(
            _fromUtf8("IAFuncs_AnalogRadioBtn"))
        self.verticalLayout_2.addWidget(self.IAFuncs_AnalogRadioBtn)
        self.IAFuncs_DigitalRadioBtn = Qt.QRadioButton(self.widget2)
        self.IAFuncs_DigitalRadioBtn.setObjectName(
            _fromUtf8("IAFuncs_DigitalRadioBtn"))
        self.verticalLayout_2.addWidget(self.IAFuncs_DigitalRadioBtn)
        self.IAFuncs_GetCSVFile = Qt.QPushButton(self.widget2)
        self.IAFuncs_GetCSVFile.setObjectName(_fromUtf8("IAFuncs_GetCSVFile"))
        self.verticalLayout_2.addWidget(self.IAFuncs_GetCSVFile)
        self.gridLayout_2.addWidget(self.IAFuncs_widget, 1, 0, 2, 1)
        self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 1)

        self.retranslateUi(Form)
        Qt.QMetaObject.connectSlotsByName(Form)
Exemple #9
0
    def __init__(self, mod):
        Qt.QWidget.__init__(self)
        self.mod = weakref.ref(mod)
        self.view = mod.view

        # ROI state variables
        self.lastPlotTime = None
        self.ROIs = []
        self.plotCurves = []

        # Set up UI
        self.roiLayout = Qt.QGridLayout()
        self.roiLayout.setSpacing(0)
        self.roiLayout.setContentsMargins(0,0,0,0)
        self.setLayout(self.roiLayout)

        # rect
        rectPath = Qt.QPainterPath()
        rectPath.addRect(0, 0, 1, 1)
        self.rectBtn = pg.PathButton(path=rectPath)

        # ellipse
        ellPath = Qt.QPainterPath()
        ellPath.addEllipse(0, 0, 1, 1)
        self.ellipseBtn = pg.PathButton(path=ellPath)

        # polygon
        polyPath = Qt.QPainterPath()
        polyPath.moveTo(0,0)
        polyPath.lineTo(2,3)
        polyPath.lineTo(3,1)
        polyPath.lineTo(5,0)
        polyPath.lineTo(2, -2)
        polyPath.lineTo(0,0)
        self.polygonBtn = pg.PathButton(path=polyPath)

        # ruler
        polyPath = Qt.QPainterPath()
        polyPath.moveTo(0, 0)
        polyPath.lineTo(3, -2)
        polyPath.moveTo(0, 0)
        polyPath.lineTo(3, 0)
        polyPath.moveTo(1, 0)
        polyPath.arcTo(-1, -1, 2, 2, 0, 33.69)
        for i in range(5):
            x = i * 3./4.
            y = x * -2./3.
            polyPath.moveTo(x, y)
            polyPath.lineTo(x-0.2, y-0.3)
        self.rulerBtn = pg.PathButton(path=polyPath)

        self.roiLayout.addWidget(self.rectBtn, 0, 0)
        self.roiLayout.addWidget(self.ellipseBtn, 0, 1)
        self.roiLayout.addWidget(self.polygonBtn, 1, 0)
        self.roiLayout.addWidget(self.rulerBtn, 1, 1)
        self.roiTimeSpin = pg.SpinBox(value=5.0, suffix='s', siPrefix=True, dec=True, step=0.5, bounds=(0,None))
        self.roiLayout.addWidget(self.roiTimeSpin, 2, 0, 1, 2)
        self.roiPlotCheck = Qt.QCheckBox('Plot')
        self.roiLayout.addWidget(self.roiPlotCheck, 3, 0, 1, 2)
        
        self.roiPlot = pg.PlotWidget()
        self.roiLayout.addWidget(self.roiPlot, 0, 2, self.roiLayout.rowCount(), 1)

        self.rectBtn.clicked.connect(lambda: self.addROI('rect'))
        self.ellipseBtn.clicked.connect(lambda: self.addROI('ellipse'))
        self.polygonBtn.clicked.connect(lambda: self.addROI('polygon'))
        self.rulerBtn.clicked.connect(lambda: self.addROI('ruler'))
Exemple #10
0
    def setCurrentFile(self, file):
        #print "=============== set current file ============"
        if file is self.current:
            return

        if file is None:
            self.clear()
            self.current = None
            return

        self.current = file
        self.clear()

        ## Decide on the list of fields to display
        info = file.info()
        infoKeys = list(info.keys())
        fields = self.manager.suggestedDirFields(file)

        ## Generate fields, populate if data exists
        #print "Add %d rows.." % len(fields)

        # each field has a number of options that can be set by providing
        # either a dict or a tuple (where the order of arguments determine their meaning).
        fieldTypeArgs = {
            'text': ['numLines', 'default'],
            'string': ['default'],
            'list': ['values', 'default'],
            'bool': ['default'],
        }

        for fieldName, fieldOpts in fields.items():
            if fieldName in infoKeys:
                infoKeys.remove(fieldName)

            # a single value is interpreted as the first element of a tuple
            if not isinstance(fieldOpts, (dict, tuple)):
                fieldOpts = (fieldOpts, )

            if isinstance(fieldOpts, tuple):
                fieldTyp = fieldOpts[0]
                # convert to dict based on order of args
                fieldOpts = {
                    fieldTypeArgs[fieldTyp][i - 1]: fieldOpts[i]
                    for i in range(1, len(fieldOpts))
                }
                fieldOpts['type'] = fieldTyp

            fieldTyp = fieldOpts['type']

            # now use args to create a widget for this field
            value = info.get(fieldName, fieldOpts.get('default', None))
            if fieldTyp == 'text':
                w = Qt.QTextEdit()
                w.setTabChangesFocus(True)
                if value is not None:
                    w.setText(value)
            elif fieldTyp == 'string':
                w = Qt.QLineEdit()
                if value is not None:
                    w.setText(value)
            elif fieldTyp == 'list':
                w = Qt.QComboBox()
                w.addItems([''] + fieldOpts['values'])
                w.setEditable(True)
                if value is not None:
                    w.lineEdit().setText(value)
            elif fieldTyp == 'bool':
                w = Qt.QCheckBox()
                if value is not None:
                    w.setChecked(value)
            else:
                raise Exception(
                    "Don't understand info type '%s' (parameter %s)" %
                    (fieldTyp, fieldName))
            self.addRow(fieldName, w)

        ## Add fields for any other keys that happen to be present
        #print "Add %d rows.." % len(infoKeys)
        for f in infoKeys:
            if isinstance(info[f], dict):
                w = DictView(info[f])
            else:
                s = str(info[f])
                if isinstance(f, six.string_types) and 'time' in f.lower(
                ) and info[f] > 1e9 and info[
                        f] < 2e9:  ## probably this is a timestamp
                    try:
                        t0 = file.parent().info()['__timestamp__']
                        dt = " [elapsed = %0.3f s]" % (info[f] - t0)
                    except:
                        dt = ""
                    s = time.strftime("%Y.%m.%d   %H:%M:%S",
                                      time.localtime(float(s))) + dt

                w = Qt.QLabel(s)
            if type(f) is tuple:
                f = '.'.join(f)
            f = str(f).replace('__', '')
            self.addRow(f, w)
Exemple #11
0
    def __init__(self, host):
        AnalysisModule.__init__(self, host)

        fcpath = os.path.join(os.path.abspath(os.path.split(__file__)[0]),
                              "flowcharts")
        confpath = os.path.join(os.path.abspath(os.path.split(__file__)[0]),
                                "configs")

        self.confWidget = Qt.QWidget()
        self.confLoader = ConfLoader(self, confpath)
        self.fileLoader = DataLoader(self, host.dataManager())
        self.addPlotBtn = Qt.QPushButton('Add Plot')
        self.processWidget = Qt.QWidget()
        self.processLayout = Qt.QHBoxLayout()
        self.processWidget.setLayout(self.processLayout)
        self.processBtn = Qt.QPushButton('Process')
        self.processCheck = Qt.QCheckBox('Auto')
        self.processLayout.addWidget(self.processBtn)
        self.processLayout.addWidget(self.processCheck)
        self.confLayout = Qt.QGridLayout()
        self.confWidget.setLayout(self.confLayout)
        self.confLayout.addWidget(self.confLoader, 0, 0)
        self.confLayout.addWidget(self.addPlotBtn, 1, 0)
        self.confLayout.addWidget(self.processWidget, 2, 0)

        self.plots = []

        self.params = None
        self.data = None

        self.flowchart = fc.Flowchart(filePath=fcpath)
        self.flowchart.addInput('Input')
        self.flowchart.addOutput('Output')
        #self.flowchart.sigChartLoaded.connect(self.connectPlots)

        # Setup basic GUI
        self._elements_ = OrderedDict([
            ('Configuration', {
                'type': 'ctrl',
                'object': self.confWidget,
                'size': (200, 200)
            }),
            ('File Loader', {
                'type': 'ctrl',
                'object': self.fileLoader,
                'size': (200, 300),
                'pos': ('bottom', 'Configuration')
            }),
            ('Flowchart', {
                'type': 'ctrl',
                'object': self.flowchart.widget(),
                'size': (300, 500),
                'pos': ('right', )
            }),
            ('Results', {
                'type': 'table',
                'size': (500, 200),
                'pos': 'bottom'
            }),
        ])
        self.initializeElements()

        self.addPlotBtn.clicked.connect(self.addPlotClicked)
        self.processBtn.clicked.connect(self.processClicked)
        self.flowchart.sigOutputChanged.connect(self.outputChanged)
        self.fileLoader.sigFileLoaded.connect(self.fileLoaded)
        self.fileLoader.sigSelectedFileChanged.connect(self.fileSelected)
Exemple #12
0
    #cw = Qt.QWidget()
    layout = pg.LayoutWidget()
    #layout = Qt.QGridLayout()
    #layout.setContentsMargins(0,0,0,0)
    #layout.setSpacing(0)
    #cw.setLayout(layout)
    win.setCentralWidget(layout)

    cellCombo = Qt.QComboBox()
    cellCombo.setSizeAdjustPolicy(cellCombo.AdjustToContents)
    layout.addWidget(cellCombo)

    reloadBtn = Qt.QPushButton('reload')
    layout.addWidget(reloadBtn)

    separateCheck = Qt.QCheckBox("color pre/post")
    layout.addWidget(separateCheck)

    colorCheck = Qt.QCheckBox("color y position")
    layout.addWidget(colorCheck)

    errLimitSpin = pg.SpinBox(value=0.7, step=0.1)
    layout.addWidget(errLimitSpin)

    lengthRatioLimitSpin = pg.SpinBox(value=1.5, step=0.1)
    layout.addWidget(lengthRatioLimitSpin)

    postRgnStartSpin = pg.SpinBox(value=0.500,
                                  step=0.01,
                                  siPrefix=True,
                                  suffix='s')
    def __init__(self, host):
        AnalysisModule.__init__(self, host)
        self.ChR2 = ChR2.ChR2()  # create instance of the analysis

        fcpath = os.path.join(os.path.abspath(os.path.split(__file__)[0]),
                              "flowcharts")
        confpath = os.path.join(os.path.abspath(os.path.split(__file__)[0]),
                                "configs")
        self.dbIdentity = "ChR2TraceAnalysis"  ## how we identify to the database; this determines which tables we own

        self._sizeHint = (1024, 800)  # try to establish size of window
        self.confWidget = Qt.QWidget()
        self.confLoader = ConfLoader(self, confpath)
        self.fileLoader = DataLoader(self, host.dataManager())
        self.addPlotBtn = Qt.QPushButton('Add Plot')
        self.processWidget = Qt.QWidget()
        self.processLayout = Qt.QGridLayout()
        self.processWidget.setLayout(self.processLayout)
        self.processProtocolBtn = Qt.QPushButton('Process Protocol')
        self.processSliceBtn = Qt.QPushButton('Process Slice')
        self.processCellBtn = Qt.QPushButton('Process Cell')
        self.processCheck = Qt.QCheckBox('Auto')
        self.processLayout.addWidget(self.processSliceBtn, 0, 0)
        self.processLayout.addWidget(self.processCellBtn, 1, 0)
        self.processLayout.addWidget(self.processProtocolBtn, 2, 0)
        self.processLayout.addWidget(self.processCheck, 3, 0)
        self.confWidget = Qt.QWidget()
        self.confLayout = Qt.QGridLayout()
        self.confWidget.setLayout(self.confLayout)
        self.confLayout.addWidget(self.confLoader, 0, 0)
        self.confLayout.addWidget(self.addPlotBtn, 1, 0)
        self.confLayout.addWidget(self.processWidget, 2, 0)

        self.plots = []

        self.params = None
        self.data = None

        ## setup map DB ctrl
        #self.dbCtrl = DBCtrl(self, self.dbIdentity)

        self.flowchart = fc.Flowchart(filePath=fcpath)
        self.flowchart.addInput('Input')
        self.flowchart.addOutput('Output')
        #self.flowchart.sigChartLoaded.connect(self.connectPlots)
        ## create event detector
        fcDir = os.path.join(os.path.abspath(os.path.split(__file__)[0]),
                             "detector_fc")
        # self.detector = EventDetector.EventDetector(host, flowchartDir=fcDir, dbIdentity=self.dbIdentity+'.events')

        self.flowchart.sigChartLoaded.connect(self.connectPlots)

        #elems = self.detector.listElements()
        #print elems

        # Setup basic GUI
        self._elements_ = OrderedDict([
            ('Configuration', {
                'type': 'ctrl',
                'object': self.confWidget,
                'size': (200, 200)
            }),
            ('File Loader', {
                'type': 'ctrl',
                'object': self.fileLoader,
                'size': (200, 300),
                'pos': ('above', 'Configuration')
            }),
            ('Flowchart', {
                'type': 'ctrl',
                'object': self.flowchart.widget(),
                'size': (400, 500),
                'pos': ('right', 'Configuration')
            }),
            ('Data Plot', {
                'type': 'plot',
                'pos': ('bottom', 'Flowchart'),
                'size': (400, 300)
            }),
            ('PSP Plot', {
                'type': 'plot',
                'pos': ('bottom', 'Data Plot'),
                'size': (400, 300)
            }),
            ('Scatter Plot1', {
                'type': 'plot',
                'pos': ('right', ),
                'size': (300, 300)
            }),
            ('Scatter Plot2', {
                'type': 'plot',
                'pos': ('bottom', 'Scatter Plot1'),
                'size': (300, 300)
            }),
            ('Scatter Plot3', {
                'type': 'plot',
                'pos': ('bottom', 'Scatter Plot2'),
                'size': (300, 300)
            }),
            ('Results', {
                'type': 'table',
                'size': (500, 200),
                'pos': 'bottom'
            }),
        ])
        self.initializeElements()

        self.addPlotBtn.clicked.connect(self.addPlotClicked)
        self.processSliceBtn.clicked.connect(self.processSliceClicked)
        self.processCellBtn.clicked.connect(self.processCellClicked)
        self.processProtocolBtn.clicked.connect(self.processProtocolClicked)
        self.flowchart.sigOutputChanged.connect(self.outputChanged)
        self.fileLoader.sigFileLoaded.connect(self.fileLoaded)
        self.fileLoader.sigSelectedFileChanged.connect(self.fileSelected)
Exemple #14
0
    def __init__(self, host):
        AnalysisModule.__init__(self, host)
        if self.dataModel is None:
            raise Exception(
                "Photostim analysis module requires a data model, but none is loaded yet."
            )
        self.dbIdentity = "Photostim"  ## how we identify to the database; this determines which tables we own
        self.selectedSpot = None

        ## setup analysis flowchart
        modPath = os.path.abspath(os.path.split(__file__)[0])
        flowchartDir = os.path.join(modPath, "analysis_fc")
        self.flowchart = Flowchart(filePath=flowchartDir)
        self.flowchart.addInput('events')
        self.flowchart.addInput('regions')
        self.flowchart.addInput('fileHandle')
        self.flowchart.addOutput('dataOut')
        self.analysisCtrl = self.flowchart.widget()

        ## color mapper
        self.mapper = ColorMapper.ColorMapper(
            filePath=os.path.join(modPath, "colormaps"))
        self.mapCtrl = Qt.QWidget()
        self.mapLayout = Qt.QVBoxLayout()
        self.mapCtrl.setLayout(self.mapLayout)
        self.mapLayout.splitter = Qt.QSplitter()
        self.mapLayout.splitter.setOrientation(Qt.Qt.Vertical)
        self.mapLayout.splitter.setContentsMargins(0, 0, 0, 0)
        self.mapLayout.addWidget(self.mapLayout.splitter)
        self.mapLayout.splitter.addWidget(self.analysisCtrl)
        #self.mapLayout.splitter.addWidget(Qt.QSplitter())
        self.mapLayout.splitter.addWidget(self.mapper)
        #self.mapLayout.splitter.addWidget(self.recolorBtn)

        self.recolorLayout = Qt.QHBoxLayout()
        self.recolorWidget = Qt.QWidget()
        self.mapLayout.splitter.addWidget(self.recolorWidget)
        self.recolorWidget.setLayout(self.recolorLayout)
        self.recolorBtn = Qt.QPushButton('Recolor')
        self.recolorLayout.addWidget(self.recolorBtn)
        self.recolorParallelCheck = Qt.QCheckBox('Parallel')
        self.recolorParallelCheck.setChecked(True)
        self.recolorLayout.addWidget(self.recolorParallelCheck)

        ## scatter plot
        self.scatterPlot = ScatterPlotter()
        self.scatterPlot.sigClicked.connect(self.scatterPlotClicked)

        ## setup map DB ctrl
        self.dbCtrl = DBCtrl(self, self.dbIdentity)

        ## storage for map data
        #self.scanItems = {}
        self.scans = []
        #self.seriesScans = {}
        self.maps = []

        ## create event detector
        fcDir = os.path.join(os.path.abspath(os.path.split(__file__)[0]),
                             "detector_fc")
        self.detector = EventDetector.EventDetector(
            host, flowchartDir=fcDir, dbIdentity=self.dbIdentity + '.events')

        ## override some of its elements
        self.detector.setElement('File Loader', self)
        self.detector.setElement('Database', self.dbCtrl)

        ## Create element list, importing some gui elements from event detector
        elems = self.detector.listElements()
        self._elements_ = OrderedDict([
            ('Database', {
                'type': 'ctrl',
                'object': self.dbCtrl,
                'size': (300, 600)
            }),
            ('Scatter Plot', {
                'type': 'ctrl',
                'object': self.scatterPlot,
                'pos': ('right', ),
                'size': (700, 400)
            }),
            ('Canvas', {
                'type': 'canvas',
                'pos': ('above', 'Scatter Plot'),
                'size': (700, 400),
                'allowTransforms': False,
                'hideCtrl': True,
                'args': {
                    'name': 'Photostim'
                }
            }),
            #('Maps', {'type': 'ctrl', 'pos': ('bottom', 'Database'), 'size': (200,200), 'object': self.mapDBCtrl}),
            ('Map Opts', {
                'type': 'ctrl',
                'object': self.mapCtrl,
                'pos': ('above', 'Database'),
                'size': (300, 600)
            }),
            ('Detection Opts',
             elems['Detection Opts'].setParams(pos=('above', 'Map Opts'),
                                               size=(300, 600))),
            ('File Loader', {
                'type': 'fileInput',
                'size': (300, 300),
                'pos': ('above', 'Detection Opts'),
                'host': self,
                'showFileTree': False
            }),
            ('Data Plot', elems['Data Plot'].setParams(pos=('bottom',
                                                            'Canvas'),
                                                       size=(700, 200))),
            ('Filter Plot', elems['Filter Plot'].setParams(pos=('bottom',
                                                                'Data Plot'),
                                                           size=(700, 200))),
            ('Event Table',
             elems['Output Table'].setParams(pos=('below', 'Filter Plot'),
                                             size=(700, 200))),
            ('Stats', {
                'type': 'dataTree',
                'size': (700, 200),
                'pos': ('below', 'Event Table')
            }),
        ])

        self.initializeElements()

        try:
            ## load default chart
            self.flowchart.loadFile(os.path.join(flowchartDir, 'default.fc'))
        except:
            debug.printExc('Error loading default flowchart:')

        self.detector.flowchart.sigOutputChanged.connect(
            self.detectorOutputChanged)
        self.flowchart.sigOutputChanged.connect(self.analyzerOutputChanged)
        self.detector.flowchart.sigStateChanged.connect(
            self.detectorStateChanged)
        self.flowchart.sigStateChanged.connect(self.analyzerStateChanged)
        self.recolorBtn.clicked.connect(self.recolor)