class InstrumentLoggingSelection(SelectionUi):
    def __init__(self,
                 config,
                 classdict,
                 instancename="ExternalParameterSelection.ParametersSequence",
                 plotNames=None,
                 parent=None,
                 instrumentLoggingHandler=None):
        super(InstrumentLoggingSelection,
              self).__init__(config, dict(), classdict, instancename, parent)
        self.instrumentLoggingHandler = instrumentLoggingHandler
        self.current = None

    def setupUi(self, MainWindow):
        super(InstrumentLoggingSelection, self).setupUi(MainWindow)
        self.loggingHandlerTreeWidget = ParameterTree(self.splitter)
        self.loggingHandlerTreeWidget.setObjectName("loggingHandlerTreeWidget")
        self.loggingHandlerTreeWidget.headerItem().setText(0, "1")
        self.loggingHandlerTreeWidget.header().setVisible(False)

    def onActiveInstrumentChanged(self, modelIndex, modelIndex2):
        self.current = self.parameters.at(modelIndex.row()).name
        super(InstrumentLoggingSelection,
              self).onActiveInstrumentChanged(modelIndex, modelIndex2)
        self.loggingHandlerTreeWidget.setParameters(
            self.instrumentLoggingHandler.parameter(self.current))

    def refreshParamTree(self):
        if self.current is not None:
            self.loggingHandlerTreeWidget.setParameters(
                self.instrumentLoggingHandler.parameter(self.current))
예제 #2
0
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(241, 367)
        Form.setWindowTitle(
            QtGui.QApplication.translate("Form", "Export", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.gridLayout = QtGui.QGridLayout(Form)
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.label = QtGui.QLabel(Form)
        self.label.setText(
            QtGui.QApplication.translate("Form", "Item to export:", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout.addWidget(self.label, 0, 0, 1, 3)
        self.itemTree = QtGui.QTreeWidget(Form)
        self.itemTree.setObjectName(_fromUtf8("itemTree"))
        self.itemTree.headerItem().setText(0, _fromUtf8("1"))
        self.itemTree.header().setVisible(False)
        self.gridLayout.addWidget(self.itemTree, 1, 0, 1, 3)
        self.label_2 = QtGui.QLabel(Form)
        self.label_2.setText(
            QtGui.QApplication.translate("Form", "Export format", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.gridLayout.addWidget(self.label_2, 2, 0, 1, 3)
        self.formatList = QtGui.QListWidget(Form)
        self.formatList.setObjectName(_fromUtf8("formatList"))
        self.gridLayout.addWidget(self.formatList, 3, 0, 1, 3)
        self.exportBtn = QtGui.QPushButton(Form)
        self.exportBtn.setText(
            QtGui.QApplication.translate("Form", "Export", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.exportBtn.setObjectName(_fromUtf8("exportBtn"))
        self.gridLayout.addWidget(self.exportBtn, 6, 1, 1, 1)
        self.closeBtn = QtGui.QPushButton(Form)
        self.closeBtn.setText(
            QtGui.QApplication.translate("Form", "Close", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.closeBtn.setObjectName(_fromUtf8("closeBtn"))
        self.gridLayout.addWidget(self.closeBtn, 6, 2, 1, 1)
        self.paramTree = ParameterTree(Form)
        self.paramTree.setObjectName(_fromUtf8("paramTree"))
        self.paramTree.headerItem().setText(0, _fromUtf8("1"))
        self.paramTree.header().setVisible(False)
        self.gridLayout.addWidget(self.paramTree, 5, 0, 1, 3)
        self.label_3 = QtGui.QLabel(Form)
        self.label_3.setText(
            QtGui.QApplication.translate("Form", "Export options", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout.addWidget(self.label_3, 4, 0, 1, 3)

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

    def retranslateUi(self, Form):
        pass
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(241, 367)
        self.gridLayout = QtGui.QGridLayout(Form)
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.label = QtGui.QLabel(Form)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout.addWidget(self.label, 0, 0, 1, 3)
        self.itemTree = QtGui.QTreeWidget(Form)
        self.itemTree.setObjectName(_fromUtf8("itemTree"))
        self.itemTree.headerItem().setText(0, _fromUtf8("1"))
        self.itemTree.header().setVisible(False)
        self.gridLayout.addWidget(self.itemTree, 1, 0, 1, 3)
        self.label_2 = QtGui.QLabel(Form)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.gridLayout.addWidget(self.label_2, 2, 0, 1, 3)
        self.formatList = QtGui.QListWidget(Form)
        self.formatList.setObjectName(_fromUtf8("formatList"))
        self.gridLayout.addWidget(self.formatList, 3, 0, 1, 3)
        self.exportBtn = QtGui.QPushButton(Form)
        self.exportBtn.setObjectName(_fromUtf8("exportBtn"))
        self.gridLayout.addWidget(self.exportBtn, 6, 1, 1, 1)
        self.closeBtn = QtGui.QPushButton(Form)
        self.closeBtn.setObjectName(_fromUtf8("closeBtn"))
        self.gridLayout.addWidget(self.closeBtn, 6, 2, 1, 1)
        self.paramTree = ParameterTree(Form)
        self.paramTree.setObjectName(_fromUtf8("paramTree"))
        self.paramTree.headerItem().setText(0, _fromUtf8("1"))
        self.paramTree.header().setVisible(False)
        self.gridLayout.addWidget(self.paramTree, 5, 0, 1, 3)
        self.label_3 = QtGui.QLabel(Form)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout.addWidget(self.label_3, 4, 0, 1, 3)
        self.copyBtn = QtGui.QPushButton(Form)
        self.copyBtn.setObjectName(_fromUtf8("copyBtn"))
        self.gridLayout.addWidget(self.copyBtn, 6, 0, 1, 1)

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

    def retranslateUi(self, Form):
        Form.setWindowTitle(QtGui.QApplication.translate("Form", "Export", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("Form", "Item to export:", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("Form", "Export format", None, QtGui.QApplication.UnicodeUTF8))
        self.exportBtn.setText(QtGui.QApplication.translate("Form", "Export", None, QtGui.QApplication.UnicodeUTF8))
        self.closeBtn.setText(QtGui.QApplication.translate("Form", "Close", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("Form", "Export options", None, QtGui.QApplication.UnicodeUTF8))
        self.copyBtn.setText(QtGui.QApplication.translate("Form", "Copy", None, QtGui.QApplication.UnicodeUTF8))
class InstrumentLoggingSelection( SelectionUi ):
    def __init__(self, config, classdict, instancename="ExternalParameterSelection.ParametersSequence", plotNames=None, parent=None, instrumentLoggingHandler=None ):
        super(InstrumentLoggingSelection, self).__init__(config, dict(), classdict, instancename, parent)
        self.instrumentLoggingHandler = instrumentLoggingHandler
        self.current = None
        
    def setupUi(self, MainWindow):
        super(InstrumentLoggingSelection, self).setupUi(MainWindow)
        self.loggingHandlerTreeWidget = ParameterTree(self.splitter)
        self.loggingHandlerTreeWidget.setObjectName("loggingHandlerTreeWidget")
        self.loggingHandlerTreeWidget.headerItem().setText(0, "1")
        self.loggingHandlerTreeWidget.header().setVisible(False)

    def onActiveInstrumentChanged(self, modelIndex, modelIndex2 ):
        self.current = self.parameters.at(modelIndex.row()).name
        super(InstrumentLoggingSelection, self).onActiveInstrumentChanged( modelIndex, modelIndex2 )          
        self.loggingHandlerTreeWidget.setParameters( self.instrumentLoggingHandler.parameter(self.current) )
        
    def refreshParamTree(self):
        if self.current is not None:
            self.loggingHandlerTreeWidget.setParameters( self.instrumentLoggingHandler.parameter(self.current) )
예제 #5
0
class NDFConverterWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        widget = QWidget(self)
        layout = QGridLayout(widget)
        self.setCentralWidget(widget)
        self.terminal = QTextBrowser(self)
        self._err_color = QtCore.Qt.red
        self.folder2convert = ''
        self.button3 = QPushButton('Convert Files!', self)
        self.button3.clicked.connect(self.runConvertFiles)

        self.animal_dict = [{
            'name': 'Animal 0',
            'type': 'str',
            'value': '[0]',
            'renamable': True,
            'removable': True
        }]
        self.params = [{
            'name':
            'Directories',
            'type':
            'group',
            'children': [{
                'name':
                'Select NDF directory',
                'type':
                'action',
                'children': [{
                    'name': 'NDF directory:',
                    'type': 'str',
                    'value': os.getcwd()
                }]
            }, {
                'name':
                'Select Destination directory',
                'type':
                'action',
                'children': [{
                    'name': 'Destination directory:',
                    'type': 'str',
                    'value': os.getcwd() + 'h5'
                }]
            }]
        }, {
            'name':
            'Date Range',
            'type':
            'group',
            'children': [
                {
                    'name': 'Start',
                    'type': 'str',
                    'value': '00/00/00 00:00:00'
                },
                {
                    'name': 'End',
                    'type': 'str',
                    'value': '00/00/00 00:00:00'
                },
            ]
        },
                       ScalableGroup(name='Animal id: [TID1,TID2,...]',
                                     children=self.animal_dict)]

        ## Create tree of Parameter objects
        self.p = Parameter.create(name='params',
                                  type='group',
                                  children=self.params)
        self.p.param('Directories',
                     'Select NDF directory').sigActivated.connect(
                         self.selectNDFFolder)
        self.p.param('Directories', 'Select NDF directory',
                     'NDF directory:').sigValueChanged.connect(
                         self.setNDFFolder)
        self.p.param('Directories',
                     'Select Destination directory').sigActivated.connect(
                         self.selectDestinationFolder)
        self.p.param('Directories', 'Select Destination directory',
                     'Destination directory:').sigValueChanged.connect(
                         self.setDestinationFolder)

        self.t = ParameterTree()
        self.t.setParameters(self.p, showTop=False)
        self.t.headerItem().setHidden(True)

        layout.addWidget(self.t)
        layout.setRowStretch(0, 10)
        layout.setRowMinimumHeight(0, 400)
        layout.setColumnMinimumWidth(0, 600)
        layout.addWidget(self.button3)
        layout.addWidget(self.terminal)
        layout.setRowMinimumHeight(2, 300)
        stdout = OutputWrapper(self, True)
        stdout.outputWritten.connect(self.handleOutput)
        stderr = OutputWrapper(self, False)
        stderr.outputWritten.connect(self.handleOutput)

        self.threadpool = QtCore.QThreadPool()

        self.dfrmt = '%Y-%m-%d %H:%M:%S'  # Format to use in date elements

    def handleOutput(self, text, stdout):
        color = self.terminal.textColor()
        self.terminal.setTextColor(color if stdout else self._err_color)
        self.terminal.moveCursor(QtGui.QTextCursor.End)
        self.terminal.insertPlainText(text)
        self.terminal.setTextColor(color)

    def selectNDFFolder(self):
        dialog = QFileDialog()
        dialog.setWindowTitle('Select NDF directory')
        dialog.setFileMode(QFileDialog.DirectoryOnly)
        dialog.setOption(QFileDialog.DontUseNativeDialog, True)
        dialog.setAcceptMode(QFileDialog.AcceptOpen)
        if dialog.exec():
            self.p.param('Directories', 'Select NDF directory',
                         'NDF directory:').setValue(dialog.selectedFiles()[0])
        else:
            sys.stderr.write('No folder selected\n')

    def setNDFFolder(self, folder2convertParam):
        self.folder2convert = folder2convertParam.value()
        print('Inspecting', self.folder2convert)
        ndf_files = glob.glob(self.folder2convert + os.path.sep + '*.ndf')
        ndf_files.sort()
        print('Converting folder:', self.folder2convert)
        print('There are', len(ndf_files), ' *.ndf files to convert...')
        if len(ndf_files) == 0:
            print('Folder does not have *.ndf files to convert!')
            return
        start_timestamp = int(os.path.split(ndf_files[0])[-1][1:-4])
        end_timestamp = int(os.path.split(ndf_files[-1])[-1][1:-4])
        self.p.param('Date Range', 'Start').setValue(
            datetime.fromtimestamp(start_timestamp).strftime(self.dfrmt))
        self.p.param('Date Range', 'End').setValue(
            datetime.fromtimestamp(end_timestamp).strftime(self.dfrmt))
        print('testing file', ndf_files[0])
        test_file = NdfFile(ndf_files[0])
        test_file.read_file_metadata()
        test_file.get_valid_tids_and_fs()
        print('Found TIDs', test_file.tid_set,
              ' valid in first file (there might be more in other files)')
        self.animal_dict.clear()
        for i, id in enumerate(test_file.tid_set):
            self.animal_dict.append({
                'name': 'Animal ' + str(i),
                'type': 'str',
                'value': '[' + str(id) + ']',
                'renamable': True,
                'removable': True
            })

        self.p.param('Animal id: [TID1,TID2,...]').clearChildren()
        self.p.param('Animal id: [TID1,TID2,...]').addChildren(
            self.animal_dict)

    def selectDestinationFolder(self):
        dialog = QFileDialog()
        dialog.setWindowTitle('Select Destination directory')
        dialog.setFileMode(QFileDialog.DirectoryOnly)
        dialog.setOption(QFileDialog.DontUseNativeDialog, True)
        dialog.setAcceptMode(QFileDialog.AcceptOpen)
        if dialog.exec():
            self.p.param('Directories', 'Select Destination directory',
                         'Destination directory:').setValue(
                             dialog.selectedFiles()[0])

    def setDestinationFolder(self, destinationFolderParam):
        self.destination_folder = destinationFolderParam.value()
        print('Saving files to folder:', self.destination_folder)

    def runConvertFiles(self):
        worker = Worker(self.convertFiles)
        print('Starting file conversion...')
        self.threadpool.start(worker)

    def convertFiles(self):
        dh = DataHandler()
        start_string = self.p.param('Date Range', 'Start').value()
        start_file_name = 'M' + str(
            int(datetime.strptime(start_string,
                                  self.dfrmt).timestamp())) + '.ndf'
        end_string = self.p.param('Date Range', 'End').value()
        end_file_name = 'M' + str(
            int(datetime.strptime(end_string,
                                  self.dfrmt).timestamp())) + '.ndf'
        self.files2convert = [
            os.path.join(self.folder2convert, f)
            for f in os.listdir(self.folder2convert)
            if (start_file_name <= f <= end_file_name)
        ]
        print(len(self.files2convert), 'files between:', start_file_name,
              'and', end_file_name)

        for a in self.p.param('Animal id: [TID1,TID2,...]').children():
            print('***\n Starting to convert', a.name(), a.value(), '\n***')
            tids = a.value()
            dh.convert_ndf_directory_to_h5(self.files2convert,
                                           tids=tids,
                                           save_dir=self.destination_folder)
        return (1, 1)  # wavelet worker expects to emit tuple when done...
예제 #6
0
class ProjecEditWindow(QMainWindow):
    def __init__(self,project = None):
        QMainWindow.__init__(self)
        widget = QWidget(self)
        layout = QGridLayout(widget)
        self.title ='Project Editor'
        self.project = project
        # if self.project is None:
        #     self.project = Project(main_model=MainModel())
        #     self.project.add_animal(Animal(id='0'))
        self.setCentralWidget(widget)
        self.terminal = QTextBrowser(self)
        self._err_color = QtCore.Qt.red
        self.folder2convert = ''
        self.button = QPushButton('Update Project Settings from Animal List', self)
        self.button.clicked.connect(self.update_project_settings)

        self.animal_dict = [Animal2Parameter(animal) for animal in self.project.animal_list]
        print(self.animal_dict)

        self.params = [
            {'name': 'Global Settings','type':'group','children':[
                {'name': 'Project Title', 'type': 'str', 'value': self.project.title},
                {'name': 'Project file','type':'action','children':[
                    {'name':'Project file:','type':'str','value': self.project.project_file}
                ]},
                {'name': 'Select EEG root directory','type':'action','children':[
                    {'name':'EEG root directory:','type':'str','value': self.project.eeg_root_folder}
                ]},
                {'name': 'Select Video root directory', 'type': 'action', 'children': [
                    {'name': 'Video root directory:', 'type': 'str', 'value': self.project.video_root_folder}
                ]},
                {'name': ' ', 'type': 'str','vlue':' '},
                {'name': 'Update project from root folders', 'type': 'action'},
                {'name': '  ', 'type': 'str','vlue':' '},
            ]},
            ScalableGroup(name='Animal list:', children=self.animal_dict)]

        ## Create tree of Parameter objects
        self.p = Parameter.create(name='params', type='group', children=self.params)
        self.p.param('Global Settings', 'Update project from root folders').sigActivated.connect(self.update_project_from_roots)
        self.p.param('Global Settings', 'Select EEG root directory','EEG root directory:').sigValueChanged.connect(
            self.setEEGFolder)
        self.p.param('Global Settings', 'Select EEG root directory').sigActivated.connect(
            self.selectEEGFolder)
        self.p.param('Global Settings', 'Select Video root directory','Video root directory:').sigValueChanged.connect(
            self.setVideoFolder)
        self.p.param('Global Settings', 'Select Video root directory').sigActivated.connect(
            self.selectVideoFolder)

        self.t = ParameterTree()
        self.t.setParameters(self.p, showTop=False)
        self.t.headerItem().setHidden(True)

        layout.addWidget(self.t)
        layout.setRowStretch(0,10)
        layout.setRowMinimumHeight(0,400)
        layout.setColumnMinimumWidth(0,600)
        layout.addWidget(self.button)
        layout.addWidget(self.terminal)
        layout.setRowMinimumHeight(2,300)
        stdout = OutputWrapper(self, True)
        stdout.outputWritten.connect(self.handleOutput)
        stderr = OutputWrapper(self, False)
        stderr.outputWritten.connect(self.handleOutput)

        self.threadpool = QtCore.QThreadPool()

        self.dfrmt = '%Y-%m-%d %H:%M:%S'  # Format to use in date elements

    def handleOutput(self, text, stdout):
        color = self.terminal.textColor()
        self.terminal.setTextColor(color if stdout else self._err_color)
        self.terminal.moveCursor(QtGui.QTextCursor.End)
        self.terminal.insertPlainText(text)
        self.terminal.setTextColor(color)

    def selectEEGFolder(self):
        dialog = QFileDialog()
        dialog.setWindowTitle('Select EEG directory')
        dialog.setFileMode(QFileDialog.DirectoryOnly)
        dialog.setOption(QFileDialog.DontUseNativeDialog, True)
        dialog.setAcceptMode(QFileDialog.AcceptOpen)
        if dialog.exec():
            self.p.param('Global Settings', 'Select EEG root directory','EEG root directory:').setValue(dialog.selectedFiles()[0])
        else:
            sys.stderr.write('No folder selected\n')

    def setEEGFolder(self, eeg_root_folder_param):
        pass  # Currently we are only accepting changes when clicking the Update button
        # self.project.eeg_root_folder = eeg_root_folder.value(0)

    def selectVideoFolder(self):
        dialog = QFileDialog()
        dialog.setWindowTitle('Select EEG directory')
        dialog.setFileMode(QFileDialog.DirectoryOnly)
        dialog.setOption(QFileDialog.DontUseNativeDialog, True)
        dialog.setAcceptMode(QFileDialog.AcceptOpen)
        if dialog.exec():
            self.p.param('Global Settings', 'Select Video root directory','Video root directory:').setValue(dialog.selectedFiles()[0])
        else:
            sys.stderr.write('No folder selected\n')

    def setVideoFolder(self, eeg_root_folder_param):
        pass  # Currently we are only accepting changes when clicking the Update button
        # self.project.eeg_root_folder = eeg_root_folder.value(0)

    def update_project_settings(self):
        animal_param_list = self.p.param('Animal list:').getValues()
        old_animal_list = [a.id for a in self.project.animal_list]
        deleted_animals = list(set(old_animal_list)-set(animal_param_list))

        for a in deleted_animals:
            print('Deleting animal with id',a)
            self.project.delete_animal(a)

        for p in animal_param_list:
            animal = self.project.get_animal(p)
            id = self.p.param('Animal list:',p,'new id').value()
            eeg_dir = self.p.param('Animal list:',p,'EEG directory').value()
            video_dir = self.p.param('Animal list:',p,'Video directory').value()
            self.p.param('Animal list:',p).setName(id)
            if animal is None:
                print('Adding new animal with id', id)
                self.project.add_animal(Animal(id=id,eeg_folder=eeg_dir,video_folder=video_dir))
            else:
                print('Updating animal with id', id)
                animal.update_eeg_folder(eeg_dir)
                animal.update_video_folder(video_dir)





    def update_project_from_roots(self):
        self.project.eeg_root_folder = self.p.param('Global Settings', 'Select EEG root directory','EEG root directory:').value()
        self.project.video_root_folder = self.p.param('Global Settings', 'Select Video root directory','Video root directory:').value()
        print('Updating project from root directories...')
        print('processing', self.project.eeg_root_folder)
        self.project.update_project_from_root_directories()

        # update animal list in GUI
        self.animal_dict = [Animal2Parameter(animal) for animal in self.project.animal_list]
        self.p.param('Animal list:').clearChildren()
        self.p.param('Animal list:').addChildren(self.animal_dict)

        pass
예제 #7
0
class Ui_BenderWindow(object):
    def setupUi(self, BenderWindow):
        BenderWindow.setObjectName(_fromUtf8("BenderWindow"))
        BenderWindow.resize(1028, 694)
        self.centralwidget = QtGui.QWidget(BenderWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.fileNameLabel = QtGui.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.fileNameLabel.setFont(font)
        self.fileNameLabel.setObjectName(_fromUtf8("fileNameLabel"))
        self.horizontalLayout.addWidget(self.fileNameLabel)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.goButton = QtGui.QPushButton(self.centralwidget)
        self.goButton.setObjectName(_fromUtf8("goButton"))
        self.horizontalLayout.addWidget(self.goButton)
        self.verticalLayout_2.addLayout(self.horizontalLayout)
        self.verticalSplitter = QtGui.QSplitter(self.centralwidget)
        self.verticalSplitter.setOrientation(QtCore.Qt.Horizontal)
        self.verticalSplitter.setObjectName(_fromUtf8("verticalSplitter"))
        self.verticalLayoutWidget = QtGui.QWidget(self.verticalSplitter)
        self.verticalLayoutWidget.setObjectName(_fromUtf8("verticalLayoutWidget"))
        self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.gridLayout = QtGui.QGridLayout()
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.label = QtGui.QLabel(self.verticalLayoutWidget)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout.addWidget(self.label, 0, 0, 1, 2)
        self.label_2 = QtGui.QLabel(self.verticalLayoutWidget)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.gridLayout.addWidget(self.label_2, 4, 0, 1, 2)
        self.label_3 = QtGui.QLabel(self.verticalLayoutWidget)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout.addWidget(self.label_3, 6, 0, 1, 1)
        self.nextFileNumberBox = QtGui.QSpinBox(self.verticalLayoutWidget)
        self.nextFileNumberBox.setMinimum(1)
        self.nextFileNumberBox.setMaximum(10000)
        self.nextFileNumberBox.setProperty("value", 1)
        self.nextFileNumberBox.setObjectName(_fromUtf8("nextFileNumberBox"))
        self.gridLayout.addWidget(self.nextFileNumberBox, 6, 1, 1, 1)
        self.fileNamePatternEdit = QtGui.QLineEdit(self.verticalLayoutWidget)
        self.fileNamePatternEdit.setObjectName(_fromUtf8("fileNamePatternEdit"))
        self.gridLayout.addWidget(self.fileNamePatternEdit, 5, 1, 1, 4)
        self.browseOutputPathButton = QtGui.QPushButton(self.verticalLayoutWidget)
        self.browseOutputPathButton.setObjectName(_fromUtf8("browseOutputPathButton"))
        self.gridLayout.addWidget(self.browseOutputPathButton, 1, 4, 1, 1)
        self.outputPathEdit = QtGui.QLineEdit(self.verticalLayoutWidget)
        self.outputPathEdit.setObjectName(_fromUtf8("outputPathEdit"))
        self.gridLayout.addWidget(self.outputPathEdit, 1, 1, 1, 3)
        self.restartNumberingButton = QtGui.QPushButton(self.verticalLayoutWidget)
        self.restartNumberingButton.setObjectName(_fromUtf8("restartNumberingButton"))
        self.gridLayout.addWidget(self.restartNumberingButton, 6, 2, 1, 1)
        self.nextFileNameLabel = QtGui.QLabel(self.verticalLayoutWidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.nextFileNameLabel.sizePolicy().hasHeightForWidth())
        self.nextFileNameLabel.setSizePolicy(sizePolicy)
        self.nextFileNameLabel.setObjectName(_fromUtf8("nextFileNameLabel"))
        self.gridLayout.addWidget(self.nextFileNameLabel, 6, 3, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        self.parameterTreeWidget = ParameterTree(self.verticalLayoutWidget)
        self.parameterTreeWidget.setObjectName(_fromUtf8("parameterTreeWidget"))
        self.parameterTreeWidget.headerItem().setText(0, _fromUtf8("1"))
        self.verticalLayout.addWidget(self.parameterTreeWidget)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem1)
        self.loadParametersButton = QtGui.QPushButton(self.verticalLayoutWidget)
        self.loadParametersButton.setObjectName(_fromUtf8("loadParametersButton"))
        self.horizontalLayout_2.addWidget(self.loadParametersButton)
        self.saveParametersButton = QtGui.QPushButton(self.verticalLayoutWidget)
        self.saveParametersButton.setObjectName(_fromUtf8("saveParametersButton"))
        self.horizontalLayout_2.addWidget(self.saveParametersButton)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.plotSplitter = QtGui.QSplitter(self.verticalSplitter)
        self.plotSplitter.setOrientation(QtCore.Qt.Vertical)
        self.plotSplitter.setObjectName(_fromUtf8("plotSplitter"))
        self.plot1Widget = PlotWidget(self.plotSplitter)
        self.plot1Widget.setObjectName(_fromUtf8("plot1Widget"))
        self.verticalLayoutWidget_2 = QtGui.QWidget(self.plotSplitter)
        self.verticalLayoutWidget_2.setObjectName(_fromUtf8("verticalLayoutWidget_2"))
        self.verticalLayout_3 = QtGui.QVBoxLayout(self.verticalLayoutWidget_2)
        self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
        self.horizontalLayout_3 = QtGui.QHBoxLayout()
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.plotYBox = QtGui.QComboBox(self.verticalLayoutWidget_2)
        self.plotYBox.setObjectName(_fromUtf8("plotYBox"))
        self.horizontalLayout_3.addWidget(self.plotYBox)
        self.label_4 = QtGui.QLabel(self.verticalLayoutWidget_2)
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.horizontalLayout_3.addWidget(self.label_4)
        self.plotXBox = QtGui.QComboBox(self.verticalLayoutWidget_2)
        self.plotXBox.setObjectName(_fromUtf8("plotXBox"))
        self.horizontalLayout_3.addWidget(self.plotXBox)
        spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.label_5 = QtGui.QLabel(self.verticalLayoutWidget_2)
        self.label_5.setObjectName(_fromUtf8("label_5"))
        self.horizontalLayout_3.addWidget(self.label_5)
        self.colorByBox = QtGui.QComboBox(self.verticalLayoutWidget_2)
        self.colorByBox.setObjectName(_fromUtf8("colorByBox"))
        self.colorByBox.addItem(_fromUtf8(""))
        self.colorByBox.addItem(_fromUtf8(""))
        self.colorByBox.addItem(_fromUtf8(""))
        self.horizontalLayout_3.addWidget(self.colorByBox)
        self.verticalLayout_3.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_4 = QtGui.QHBoxLayout()
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.overlayCheck = QtGui.QCheckBox(self.verticalLayoutWidget_2)
        self.overlayCheck.setObjectName(_fromUtf8("overlayCheck"))
        self.horizontalLayout_4.addWidget(self.overlayCheck)
        self.plotYOverlayBox = QtGui.QComboBox(self.verticalLayoutWidget_2)
        self.plotYOverlayBox.setObjectName(_fromUtf8("plotYOverlayBox"))
        self.horizontalLayout_4.addWidget(self.plotYOverlayBox)
        self.label_6 = QtGui.QLabel(self.verticalLayoutWidget_2)
        self.label_6.setObjectName(_fromUtf8("label_6"))
        self.horizontalLayout_4.addWidget(self.label_6)
        self.overlayFromBox = QtGui.QComboBox(self.verticalLayoutWidget_2)
        self.overlayFromBox.setObjectName(_fromUtf8("overlayFromBox"))
        self.overlayFromBox.addItem(_fromUtf8(""))
        self.overlayFromBox.addItem(_fromUtf8(""))
        self.horizontalLayout_4.addWidget(self.overlayFromBox)
        spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_4.addItem(spacerItem3)
        self.label_7 = QtGui.QLabel(self.verticalLayoutWidget_2)
        self.label_7.setObjectName(_fromUtf8("label_7"))
        self.horizontalLayout_4.addWidget(self.label_7)
        self.overlayColorBox = QtGui.QComboBox(self.verticalLayoutWidget_2)
        self.overlayColorBox.setObjectName(_fromUtf8("overlayColorBox"))
        self.overlayColorBox.addItem(_fromUtf8(""))
        self.overlayColorBox.addItem(_fromUtf8(""))
        self.overlayColorBox.addItem(_fromUtf8(""))
        self.overlayColorBox.addItem(_fromUtf8(""))
        self.overlayColorBox.addItem(_fromUtf8(""))
        self.overlayColorBox.addItem(_fromUtf8(""))
        self.horizontalLayout_4.addWidget(self.overlayColorBox)
        self.verticalLayout_3.addLayout(self.horizontalLayout_4)
        self.horizontalLayout_5 = QtGui.QHBoxLayout()
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.filterCheck = QtGui.QCheckBox(self.verticalLayoutWidget_2)
        self.filterCheck.setChecked(True)
        self.filterCheck.setObjectName(_fromUtf8("filterCheck"))
        self.horizontalLayout_5.addWidget(self.filterCheck)
        self.label_8 = QtGui.QLabel(self.verticalLayoutWidget_2)
        self.label_8.setObjectName(_fromUtf8("label_8"))
        self.horizontalLayout_5.addWidget(self.label_8)
        self.filterCutoffBox = QtGui.QDoubleSpinBox(self.verticalLayoutWidget_2)
        self.filterCutoffBox.setDecimals(0)
        self.filterCutoffBox.setMaximum(500.0)
        self.filterCutoffBox.setSingleStep(10.0)
        self.filterCutoffBox.setProperty("value", 20.0)
        self.filterCutoffBox.setObjectName(_fromUtf8("filterCutoffBox"))
        self.horizontalLayout_5.addWidget(self.filterCutoffBox)
        spacerItem4 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_5.addItem(spacerItem4)
        self.verticalLayout_3.addLayout(self.horizontalLayout_5)
        self.plot2Widget = PlotWidget(self.verticalLayoutWidget_2)
        self.plot2Widget.setObjectName(_fromUtf8("plot2Widget"))
        self.verticalLayout_3.addWidget(self.plot2Widget)
        self.verticalLayout_2.addWidget(self.verticalSplitter)
        self.verticalLayout_2.setStretch(1, 100)
        BenderWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtGui.QStatusBar(BenderWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        BenderWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, BenderWindow):
        BenderWindow.setWindowTitle(_translate("BenderWindow", "Bender", None))
        self.fileNameLabel.setText(_translate("BenderWindow", "TextLabel", None))
        self.goButton.setText(_translate("BenderWindow", "Go", None))
        self.label.setText(_translate("BenderWindow", "Output path:", None))
        self.label_2.setText(_translate("BenderWindow", "File name pattern:", None))
        self.label_3.setText(_translate("BenderWindow", "Next trial:", None))
        self.fileNamePatternEdit.setToolTip(_translate("BenderWindow", "Codes:\n"
"{f}=Frequency\n"
"{a}=Amplitude", None))
        self.browseOutputPathButton.setText(_translate("BenderWindow", "Browse...", None))
        self.restartNumberingButton.setText(_translate("BenderWindow", "Restart", None))
        self.nextFileNameLabel.setText(_translate("BenderWindow", "Next file", None))
        self.loadParametersButton.setText(_translate("BenderWindow", "Load...", None))
        self.saveParametersButton.setText(_translate("BenderWindow", "Save...", None))
        self.label_4.setText(_translate("BenderWindow", "vs.", None))
        self.label_5.setText(_translate("BenderWindow", "Color by", None))
        self.colorByBox.setItemText(0, _translate("BenderWindow", "None", None))
        self.colorByBox.setItemText(1, _translate("BenderWindow", "Active/passive", None))
        self.colorByBox.setItemText(2, _translate("BenderWindow", "Cycle number", None))
        self.overlayCheck.setText(_translate("BenderWindow", "Overlay", None))
        self.label_6.setText(_translate("BenderWindow", "from", None))
        self.overlayFromBox.setItemText(0, _translate("BenderWindow", "Current file", None))
        self.overlayFromBox.setItemText(1, _translate("BenderWindow", "Other file...", None))
        self.label_7.setText(_translate("BenderWindow", "Color", None))
        self.overlayColorBox.setItemText(0, _translate("BenderWindow", "Red", None))
        self.overlayColorBox.setItemText(1, _translate("BenderWindow", "Blue", None))
        self.overlayColorBox.setItemText(2, _translate("BenderWindow", "Green", None))
        self.overlayColorBox.setItemText(3, _translate("BenderWindow", "Black", None))
        self.overlayColorBox.setItemText(4, _translate("BenderWindow", "Dark red", None))
        self.overlayColorBox.setItemText(5, _translate("BenderWindow", "Dark blue", None))
        self.filterCheck.setText(_translate("BenderWindow", "Filter", None))
        self.label_8.setText(_translate("BenderWindow", "Cutoff", None))
        self.filterCutoffBox.setSuffix(_translate("BenderWindow", "Hz", None))