Exemplo n.º 1
0
def readAproj():
    global model, aprojFileName, aprojSaveDir
    model = AnimatLabModel.AnimatLabModel(folders.animatlab_rootFolder)
    aprojFileName = os.path.split(model.aprojFile)[-1]
    aprojSaveDir = folders.animatlab_rootFolder + "AprojFiles/"
    if not os.path.exists(aprojSaveDir):
        os.makedirs(aprojSaveDir)
        copyFileDir(animatsimdir, aprojSaveDir, copy_dir=0)
    print "... FINISHED"
Exemplo n.º 2
0
    except:
        if verbose > 2:
            print traceback.format_exc()


## This allows the program to utilize multiprocessing functionality for higher efficiency
if __name__ == '__main__':

    ## This is example code that you can use as the basis for running your own script.

    ## ===== ===== ===== ===== ===== ===== ===== ===== ===== =====
    ## EXAMPLE FOR USING AnimatLabModel CLASS
    ## ===== ===== ===== ===== ===== ===== ===== ===== ===== =====

    # This command creates an AnimatLabModel object that will allow you to access the model elements
    model = AnimatLabModel.AnimatLabModel(
        "F:/__DISSERTATION/SimulationFiles/_MASTER/FinalDissertationModel/")

    ## You can see other available methods by typing: model. + <tab>
    # See where the .asim XML file is saved -- this is the file that is loaded to generate the AnimatLab model object
    #model.asimFile

    # To find an element by its name:
    #PhasicDepMN = model.getElementByName("Phasic Dep MN")

    # To find elements by type:
    # Options are: Neurons, Adapters, ExternalStimuli
    #Neurons = model.getElementByType("Neurons")

    # To find elements by ID:
    #TonicLevMN = model.getElementByID("reallycomplicatedidhere")
Exemplo n.º 3
0

# ============================================================================
#                               MAIN PROGRAM
# ============================================================================
if __name__ == '__main__':
    """
    """
    sims = AnimatLabSimRunner.AnimatLabSimulationRunner(
        "Test Sims",
        rootFolder=folders.animatlab_rootFolder,
        commonFiles=folders.animatlab_commonFiles_dir,
        sourceFiles=folders.python27_source_dir,
        simFiles=folders.animatlab_simFiles_dir,
        resultFiles=folders.animatlab_result_dir)
    model = AnimatLabModel.AnimatLabModel(folders.animatlab_commonFiles_dir)
    projMan = ProjectManager.ProjectManager('Test Project')
    aprojFileName = os.path.split(model.aprojFile)[-1]
    optSet = OptimizeSimSettings(folders=folders,
                                 model=model,
                                 projMan=projMan,
                                 sims=sims)
    print
    listparNameOpt = optSet.paramLoebName
    setPlaybackControlMode(model, mode=0)
    # Looks for a parameter file in the chosen directory
    fileName = 'paramOpt.pkl'
    if loadParams(folders.animatlab_result_dir + fileName, optSet):
        listparNameOpt = optSet.paramLoebName
        listparValOpt = optSet.paramLoebValue
        listparTypeOpt = optSet.paramLoebType
    def browse_folder(self):
        global folders, sims, model, projman, optSet
        # self.listWidget.clear()     # If there are any elements in the list
        mydir = "//Mac/Home/Documents/Labo/Scripts/AnimatLabV2/Human/test/"
        dirname = QtGui.QFileDialog.getExistingDirectory(
            self, "Pick a folder", mydir)
        # execute getExistingDirectory dialog and set the directory variable
        #  to be equal to the user selected directory

        if dirname:  # if user didn't pick a directory don't continue
            print "You chose %s" % dirname
            subdir = os.path.split(dirname)[-1]
            print subdir
            folders = FolderOrg(subdir=subdir)
            folders.affectDirectories()
            saveAnimatLabDir(dirname)

            # ################################################################
            #                  Creation of sims & initialisation             #
            # ################################################################
            # Initializes the AnimatLabSimRunner
            sims = AnimatLabSimRunner.AnimatLabSimulationRunner(
                "Test Sims",
                rootFolder=folders.animatlab_rootFolder,
                commonFiles=folders.animatlab_commonFiles_dir,
                sourceFiles=folders.python27_source_dir,
                simFiles=folders.animatlab_simFiles_dir,
                resultFiles=folders.animatlab_result_dir)
            model = AnimatLabModel.AnimatLabModel(
                folders.animatlab_commonFiles_dir)
            projMan = ProjectManager.ProjectManager('Test Project')
            optSet = OptimizeSimSettings(folders=folders,
                                         model=model,
                                         projMan=projMan,
                                         sims=sims)

            # ################################################################
            #                      Default parameters                        #
            # ################################################################
            # Parameters for optimization
            listparNameOpt = [
                'mvtcolumn', 'startMvt1', 'endMvt1', 'endPos1', 'angle1',
                'startMvt2', 'endMvt2', 'endPos2', 'angle2', 'startEQM',
                'endEQM', 'allstim', 'disabledStimNbs', 'dontChangeStimNbs',
                'seriesStimParam', 'allsyn', 'disabledSynNbs',
                'dontChangeSynNbs', 'disabledSynFRNbs', 'dontChangeSynFRNbs',
                'seriesSynParam', 'seriesSynFRParam', 'nbepoch',
                'nbstimtrials', 'nbsyntrials', 'nbsteps', 'deltaStimCoeff',
                'maxDeltaStim', 'multSynCoeff', 'maxMultSyn',
                'coactivityFactor', 'activThr', 'limQuality', 'maxStim',
                'maxSynAmp', 'maxG', 'maxWeight', 'defaultval', 'cmaes_sigma',
                'fourchetteStim', 'fourchetteSyn'
            ]
            listparValOpt = [
                6, 0, 0.3, 5, 0, 5, 5.8, 10, 60, 3, 10, 1, [], [],
                ['CurrentOn', 'StartTime', 'EndTime'], 1, [], [], [], [],
                ['G'], ['Weight'], 2, 1, 1, 4, 1.5, 50, 1.5, 50, 1000, -0.06,
                0.0001, 2e-08, 50, 10, 5e-07, 100000.0, 0.0035, 5, 5
            ]
            listparTypeOpt = [
                int, float, float, float, float, float, float, float, float,
                float, float, int, list, list, list, int, list, list, list,
                list, list, list, int, int, int, int, float, float, float,
                float, float, float, float, float, float, float, float, float,
                float, float, float
            ]
            listparCoulOpt = [
                'magenta', 'lightyellow', 'lightyellow', 'lightyellow',
                'lightyellow', 'lightyellow', 'lightyellow', 'lightyellow',
                'lightyellow', 'lightyellow', 'lightyellow', 'lightblue',
                'lightblue', 'lightblue', 'lightblue', 'lightgreen',
                'lightgreen', 'lightgreen', 'lightgreen', 'lightgreen',
                'lightgreen', 'lightgreen', 'pink', 'pink', 'pink', 'pink',
                'pink', 'pink', 'pink', 'pink', 'pink', 'pink', 'pink',
                'MistyRose', 'MistyRose', 'MistyRose', 'MistyRose',
                'lightPink', 'lightgray', 'lightgray', 'lightgray'
            ]

            # Parameters for Marquez procedure
            listparNameMarquez = [
                'startTest', 'startTwitch', 'endTwitch', 'endTest',
                'twitStMusclesStNbs', 'sensoryNeuronNbs', 'motorNeuronNbs',
                'sensoryNeuronFRNbs', 'motorNeuronFRNbs', 'sensColChartNbs',
                'mnColChartNbs', 'nbruns', 'timeMes', 'delay', 'eta'
            ]
            listparValMarquez = [
                0., 5., 5.1, 8., [0, 1], [], [], [], [], [], [], 3, 0.08, 0.02,
                1000
            ]
            listparTypeMarquez = [
                float, float, float, float, list, list, list, list, list, list,
                list, int, float, float, float
            ]
            listparCoulMarquez = [
                'orange', 'orange', 'orange', 'orange', 'orange', 'orange',
                'orange', 'orange', 'orange', 'orange', 'orange', 'orange',
                'orange', 'orange', 'orange'
            ]

            # ###############################################################
            #       Looks for a parameter file in the chosen directory      #
            # ###############################################################
            fileName = 'paramOpt.pkl'
            if self.loadParams(folders.animatlab_result_dir + fileName, optSet,
                               listparNameOpt):
                listparNameOpt = optSet.paramLoebName
                listparValOpt = optSet.paramLoebValue
                listparTypeOpt = optSet.paramLoebType
                listparCoulOpt = optSet.paramLoebCoul
                optSet.actualizeparamLoeb()
                listparNameMarquez = optSet.paramMarquezName
                listparValMarquez = optSet.paramMarquezValue
                listparTypeMarquez = optSet.paramMarquezType
                listparCoulMarquez = optSet.paramMarquezCoul
                optSet.actualizeparamMarquez()
            else:
                optSet.paramLoebName = listparNameOpt
                optSet.paramLoebValue = listparValOpt
                optSet.paramLoebType = listparTypeOpt
                optSet.paramLoebCoul = listparCoulOpt
                optSet.actualizeparamLoeb()
                optSet.paramMarquezName = listparNameMarquez
                optSet.paramMarquezValue = listparValMarquez
                optSet.paramMarquezType = listparTypeMarquez
                optSet.paramMarquezCoul = listparCoulMarquez
                optSet.actualizeparamMarquez()
            # If no parameter file found, then uses the default parameters
            self.exConn = []
            for i in range(optSet.nbConnexions):
                if optSet.tab_connexions[i][6] == "Disabled" or \
                   optSet.tab_connexions[i][7] == "Disabled":
                    self.exConn.append(i)
                    # print optSet.tab_connexions[i][6]
                    # print optSet.tab_connexions[i][7]
            for i in self.exConn:
                if i not in optSet.paramOpt['disabledSynNbs']:
                    optSet.paramOpt['disabledSynNbs'].append(i)
            # optSet.paramOpt['disabledSynNbs'] += self.exConn
            optSet.paramOpt['disabledSynNbs'] = \
                list(set(optSet.paramOpt['disabledSynNbs']))
            optSet.disabledSynNames = []
            for i in optSet.disabledSynNbs:
                optSet.disabledSynNames.append(optSet.connexName[i])

            self.exConnFR = []
            for i in range(optSet.nbSynapsesFR):
                if optSet.tab_connexionsFR[i][3] == "Disabled" or \
                   optSet.tab_connexionsFR[i][4] == "Disabled":
                    self.exConnFR.append(i)
            for i in self.exConnFR:
                if i not in optSet.paramOpt['disabledSynFRNbs']:
                    optSet.paramOpt['disabledSynFRNbs'].append(i)
            # optSet.paramOpt['disabledSynFRNbs'] += self.exConnFR
            optSet.paramOpt['disabledSynFRNbs'] = \
                list(set(optSet.paramOpt['disabledSynFRNbs']))
            optSet.disabledSynFRNames = []
            for i in optSet.disabledSynFRNbs:
                optSet.disabledSynFRNames.append(optSet.connexFRName[i])

            self.exStim = []
            for i in range(optSet.nbStims):
                name = optSet.model.getElementByID(optSet.tab_stims[i][6]).\
                    find('Name').text
                # print name
                if name == "Disabled":
                    self.exStim.append(i)
            for i in self.exStim:
                if i not in optSet.paramOpt['disabledStimNbs']:
                    optSet.paramOpt['disabledStimNbs'].append(i)
            # optSet.paramOpt['disabledStimNbs'] += self.exStim
            optSet.paramOpt['disabledStimNbs'] = \
                list(set(optSet.paramOpt['disabledStimNbs']))
            optSet.disabledStimNames = []
            for i in optSet.disabledStimNbs:
                optSet.disabledStimNames.append(optSet.stimName[i])

            for i in range(len(self.exStim)):
                self.exStimName.append(optSet.stimName[self.exStim[i]])
            for i in range(len(self.exConn)):
                self.exConnName.append(optSet.connexName[self.exConn[i]])
            for i in range(len(self.exConnFR)):
                self.exConnFRName.append(optSet.connexFRName[self.exConnFR[i]])

        # ################################################################
        #                   Select list of External Stimuli              #
        # ################################################################
        self.tableWidget.setRowCount(len(optSet.stimName))
        self.tableWidget.setColumnCount(2)
        self.tableWidget.verticalHeader().hide()
        self.tableWidget.horizontalHeader().hide()
        for i in range(len(optSet.stimName)):
            itm1 = QtGui.QTableWidgetItem("{0} {1}".format(
                i, optSet.stimName[i]))
            itm1.setFlags(itm1.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramOpt['dontChangeStimNbs']):
                itm1.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('red'))
            else:
                itm1.setCheckState(QtCore.Qt.Unchecked)

            itm2 = QtGui.QTableWidgetItem("")
            itm2.setFlags(itm2.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramOpt['disabledStimNbs']):
                itm2.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('blue'))
            else:
                itm2.setCheckState(QtCore.Qt.Unchecked)
            self.tableWidget.setItem(i, 0, itm1)
            self.tableWidget.setItem(i, 1, itm2)
            self.tableWidget.item(i, 0).\
                setBackground(QtGui.QColor(optSet.paramLoebCoul[11]))
        self.tableWidget.resizeColumnsToContents()
        self.tableWidget.cellClicked.connect(self.stim_cell_was_clicked)
        # ################################################################
        #                Select list of Connexions                       #
        # ################################################################
        self.tableWidget_2.setRowCount(len(optSet.connexName))
        self.tableWidget_2.setColumnCount(2)
        self.tableWidget_2.verticalHeader().hide()
        self.tableWidget_2.horizontalHeader().hide()
        for i in range(len(optSet.connexName)):
            itm1 = QtGui.\
                QTableWidgetItem("{0} {1}".
                                 format(i, optSet.connexName[i]))
            itm1.setFlags(itm1.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramOpt['dontChangeSynNbs']):
                itm1.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('red'))
            else:
                itm1.setCheckState(QtCore.Qt.Unchecked)
            itm2 = QtGui.QTableWidgetItem("")
            itm2.setFlags(itm2.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramOpt['disabledSynNbs']):
                itm2.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('blue'))
            else:
                itm2.setCheckState(QtCore.Qt.Unchecked)
            self.tableWidget_2.setItem(i, 0, itm1)
            self.tableWidget_2.setItem(i, 1, itm2)
            self.tableWidget_2.item(i, 0).\
                setBackground(QtGui.QColor(optSet.paramLoebCoul[15]))
        self.tableWidget_2.resizeColumnsToContents()
        self.tableWidget_2.cellClicked.connect(self.connex_cell_was_clicked)

        # self.tableWidget_2.setColumnWidth(0, 80)
        # self.tableWidget_2.horizontalHeader().setDefaultSectionSize(140)
        # self.tableWidget_2.verticalHeader().setStretchLastSection(True)
        # ################################################################
        #                Select list of ConnexionsFR                      #
        # ################################################################
        self.tableWidget_3.setRowCount(len(optSet.connexFRName))
        self.tableWidget_3.setColumnCount(2)
        self.tableWidget_3.verticalHeader().hide()
        self.tableWidget_3.horizontalHeader().hide()
        for i in range(len(optSet.connexFRName)):
            itm1 = QtGui.QTableWidgetItem("{0} {1}".format(
                i, optSet.connexFRName[i]))
            itm1.setFlags(itm1.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramOpt['dontChangeSynFRNbs']):
                itm1.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('red'))
            else:
                itm1.setCheckState(QtCore.Qt.Unchecked)
            itm2 = QtGui.QTableWidgetItem("")
            itm2.setFlags(itm2.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramOpt['disabledSynFRNbs']):
                itm2.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('blue'))
            else:
                itm2.setCheckState(QtCore.Qt.Unchecked)
            self.tableWidget_3.setItem(i, 0, itm1)
            self.tableWidget_3.setItem(i, 1, itm2)
            self.tableWidget_3.item(i, 0).\
                setBackground(QtGui.QColor(optSet.paramLoebCoul[15]))
        self.tableWidget_3.resizeColumnsToContents()
        self.tableWidget_3.cellClicked.connect(self.connexFR_cell_was_clicked)

        # self.tableWidget_3.setColumnWidth(0, 80)
        # self.tableWidget_3.horizontalHeader().setDefaultSectionSize(140)
        # self.tableWidget_3.horizontalHeader().setStretchLastSection(True)
        # ################################################################
        #                    Select list of Neurons                      #
        # ################################################################
        self.tableWidget_4.setRowCount(len(optSet.neuronNames))
        self.tableWidget_4.setColumnCount(2)
        self.tableWidget_4.verticalHeader().hide()
        self.tableWidget_4.horizontalHeader().hide()
        for i in range(len(optSet.neuronNames)):
            itm1 = QtGui.QTableWidgetItem("{0} {1}".format(
                i, optSet.neuronNames[i]))
            itm1.setFlags(itm1.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramMarquez['sensoryNeuronNbs']):
                itm1.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('red'))
            else:
                itm1.setCheckState(QtCore.Qt.Unchecked)
            itm2 = QtGui.QTableWidgetItem("")
            itm2.setFlags(itm2.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramMarquez['motorNeuronNbs']):
                itm2.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('blue'))
            else:
                itm2.setCheckState(QtCore.Qt.Unchecked)
            self.tableWidget_4.setItem(i, 0, itm1)
            self.tableWidget_4.setItem(i, 1, itm2)
            self.tableWidget_4.item(i, 0).\
                setBackground(QtGui.QColor('gold'))
        self.tableWidget_4.resizeColumnsToContents()
        self.tableWidget_4.cellClicked.connect(self.neuron_cell_was_clicked)
        # ################################################################
        #                  Select list of NeuronsFR                      #
        # ################################################################
        self.tableWidget_5.setRowCount(len(optSet.neuronFRNames))
        self.tableWidget_5.setColumnCount(2)
        self.tableWidget_5.verticalHeader().hide()
        self.tableWidget_5.horizontalHeader().hide()
        for i in range(len(optSet.neuronFRNames)):
            itm1 = QtGui.QTableWidgetItem("{0} {1}".format(
                i, optSet.neuronFRNames[i]))
            itm1.setFlags(itm1.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramMarquez['sensoryNeuronFRNbs']):
                itm1.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('red'))
            else:
                itm1.setCheckState(QtCore.Qt.Unchecked)
            itm2 = QtGui.QTableWidgetItem("")
            itm2.setFlags(itm2.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramMarquez['motorNeuronFRNbs']):
                itm2.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('blue'))
            else:
                itm2.setCheckState(QtCore.Qt.Unchecked)
            self.tableWidget_5.setItem(i, 0, itm1)
            self.tableWidget_5.setItem(i, 1, itm2)
            self.tableWidget_5.item(i, 0).\
                setBackground(QtGui.QColor('gold'))
        self.tableWidget_5.resizeColumnsToContents()
        self.tableWidget_5.cellClicked.connect(self.neuronFR_cell_was_clicked)
        # ################################################################
        #                  Select list of Chart Names                    #
        # ################################################################
        self.tableWidget_6.setRowCount(len(optSet.chartColNames))
        self.tableWidget_6.setColumnCount(3)
        self.tableWidget_6.verticalHeader().hide()
        self.tableWidget_6.horizontalHeader().hide()
        for i in range(len(optSet.chartColNames)):
            itm1 = QtGui.QTableWidgetItem("{0} {1}".format(
                i, optSet.chartColNames[i]))
            itm1.setFlags(itm1.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramMarquez['sensColChartNbs']):
                itm1.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('red'))
            else:
                itm1.setCheckState(QtCore.Qt.Unchecked)

            itm2 = QtGui.QTableWidgetItem("")
            itm2.setFlags(itm2.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i in (optSet.paramMarquez['mnColChartNbs']):
                itm2.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('blue'))
            else:
                itm2.setCheckState(QtCore.Qt.Unchecked)

            itm3 = QtGui.QTableWidgetItem("")
            itm3.setFlags(itm3.flags() | QtCore.Qt.ItemIsUserCheckable)
            if i == optSet.paramOpt['mvtcolumn']:
                itm3.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('magenta'))
            else:
                itm3.setCheckState(QtCore.Qt.Unchecked)
            self.tableWidget_6.setItem(i, 0, itm1)
            self.tableWidget_6.setItem(i, 1, itm2)
            self.tableWidget_6.setItem(i, 2, itm3)
            self.tableWidget_6.item(i, 0).\
                setBackground(QtGui.QColor('LavenderBlush'))
        self.tableWidget_6.resizeColumnsToContents()
        self.tableWidget_6.cellClicked.connect(self.chart_cell_was_clicked)
        # ################################################################
        #              Parameters for Loeb Optimization                  #
        # ################################################################
        self.tableWidget_7.setRowCount(len(optSet.paramLoebName))
        self.tableWidget_7.setColumnCount(2)
        self.tableWidget_7.verticalHeader().hide()
        self.tableWidget_7.horizontalHeader().hide()
        for i in range(len(optSet.paramLoebName)):
            item1 = QtGui.QTableWidgetItem("{0} {1}".format(
                i, optSet.paramLoebName[i]))
            item1.setTextAlignment(QtCore.Qt.AlignRight)
            item2 = QtGui.QTableWidgetItem("{0}".format(
                optSet.paramLoebValue[i]))
            item2.setSizeHint(QSize(500, 0))
            self.tableWidget_7.setItem(i, 0, item1)
            self.tableWidget_7.setItem(i, 1, item2)
            self.tableWidget_7.item(i, 0).\
                setBackground(QtGui.QColor(optSet.paramLoebCoul[i]))
        self.tableWidget_7.resizeColumnsToContents()
        # ################################################################
        #              Parameters for Marquez Optimization               #
        # ################################################################
        self.tableWidget_8.setRowCount(len(optSet.paramMarquezName))
        self.tableWidget_8.setColumnCount(2)
        self.tableWidget_8.verticalHeader().hide()
        self.tableWidget_8.horizontalHeader().hide()
        for i in range(len(optSet.paramMarquezName)):
            item1 = QtGui.QTableWidgetItem("{0} {1}".format(
                i, optSet.paramMarquezName[i]))
            item2 = QtGui.QTableWidgetItem("{0}".format(
                optSet.paramMarquezValue[i]))
            item2.setSizeHint(QSize(500, 0))
            self.tableWidget_8.setItem(i, 0, item1)
            self.tableWidget_8.setItem(i, 1, item2)
            self.tableWidget_8.item(i, 0).\
                setBackground(QtGui.QColor(optSet.paramMarquezCoul[i]))
        self.tableWidget_8.resizeColumnsToContents()

        # ################################################################
        #                  Select External Stimuli parameters            #
        # ################################################################
        self.tableWidget_9.setRowCount(len(optSet.stimParam))
        self.tableWidget_9.setColumnCount(1)
        self.tableWidget_9.verticalHeader().hide()
        self.tableWidget_9.horizontalHeader().hide()
        for i in range(len(optSet.stimParam)):
            itm1 = QtGui.QTableWidgetItem(str(optSet.stimParam[i]))
            itm1.setFlags(itm1.flags() | QtCore.Qt.ItemIsUserCheckable)
            if optSet.stimParam[i] in (optSet.paramOpt['seriesStimParam']):
                itm1.setCheckState(QtCore.Qt.Checked)
                itm1.setForeground(QtGui.QColor('red'))
            else:
                itm1.setCheckState(QtCore.Qt.Unchecked)
            self.tableWidget_9.setItem(i, 0, itm1)
            self.tableWidget_9.item(i, 0).\
                setBackground(QtGui.QColor('lightCyan'))
        self.tableWidget_9.resizeColumnsToContents()
        self.tableWidget_9.cellClicked.connect(self.stimPar_cell_was_clicked)