def populateConfIntervCoverageTable(self, tableData): confIntervMethodStr = str(self.ui.cboConfIntervMethods.currentText()) coverageStr = str(self.ui.cboCoverage.currentText()) + '%' self.ui.lblCoverageTableTitle.setText('Method = ' + confIntervMethodStr + '; Nominal coverage = ' + coverageStr) tableHeadings = [str(self.ui.cboProfileLevel.currentText())] tableHeadings += [ str(self.ui.cboSample1.currentText()), str(self.ui.cboSample2.currentText()) ] tableHeadings += ['Parent seq. 1', 'Parent seq. 2'] tableHeadings += ['Rel. freq. 1 (%)', 'Rel. freq. 2 (%)'] tableHeadings += ['Mean coverage', 'Std. dev. coverage'] tableHeadings += [ 'Mean coverage (features <= 5 seq.)', 'Std. dev. (features <= 5 seq.)' ] tableHeadings += [ 'Mean coverage (features > 5 seq.)', 'Std. dev. (features > 5 seq.)' ] self.coverageTable = GenericTable(tableData, tableHeadings, self) self.coverageTable.sort(0, QtCore.Qt.AscendingOrder ) # start with features in alphabetical order self.ui.tableConfInterCoverage.setModel(self.coverageTable) self.ui.tableConfInterCoverage.verticalHeader().setVisible(False) self.ui.tableConfInterCoverage.resizeColumnsToContents()
def populateSummaryTable(self): tableData = self.statsTest.results.tableData( self.ui.chkShowActiveFeatures.isChecked()) oneMinAlphaStr = str(self.statsTest.results.oneMinusAlpha() * 100) tableHeadings = list(self.profile.hierarchyHeadings) tableHeadings += [ str(self.ui.cboSample1.currentText()), str(self.ui.cboSample2.currentText()) ] tableHeadings += ['Parent seq. 1', 'Parent seq. 2'] tableHeadings += ['Rel. freq. 1 (%)', 'Rel. freq. 2 (%)'] tableHeadings += ['p-values', 'p-values (corrected)'] tableHeadings += ['Effect size'] tableHeadings += [oneMinAlphaStr + '% lower CI'] tableHeadings += [oneMinAlphaStr + '% upper CI'] tableHeadings += [ 'Power (alpha = ' + str(self.statsTest.results.alpha) + ')' ] tableHeadings += [ 'Equal sample size (alpha = ' + str(self.statsTest.results.alpha) + '; power = ' + str(self.statsTest.results.oneMinusBeta()) + ')' ] self.summaryTable = GenericTable(tableData, tableHeadings, self) self.summaryTable.sort(0, QtCore.Qt.AscendingOrder ) # start with features in alphabetical order self.ui.tableSummary.setModel(self.summaryTable) self.ui.tableSummary.verticalHeader().setVisible(False) self.ui.tableSummary.resizeColumnsToContents()
def populatePowerTestTable(self, tableData): testStr = str(self.ui.cboStatTests.currentText()) signLevel = float(self.ui.cboPowerSignLevel.currentText()) self.ui.lblPowerTestTitle.setText('Test = ' + testStr + '; Significance level = ' + str(signLevel)) tableHeadings = [str(self.ui.cboProfileLevel.currentText())] tableHeadings += [ str(self.ui.cboSample1.currentText()), str(self.ui.cboSample2.currentText()) ] tableHeadings += ['Parent seq. 1', 'Parent seq. 2'] tableHeadings += ['Rel. freq. 1 (%)', 'Rel. freq. 2 (%)'] tableHeadings += ['Mean power', 'Std. dev. power'] tableHeadings += [ 'Mean power (features <= 5 seq.)', 'Std. dev. (features <= 5 seq.)' ] tableHeadings += [ 'Mean power (features > 5 seq.)', 'Std. dev. (features > 5 seq.)' ] self.powerTable = GenericTable(tableData, tableHeadings, self) self.powerTable.sort(0, QtCore.Qt.AscendingOrder ) # start with features in alphabetical order self.ui.tablePower.setModel(self.powerTable) self.ui.tablePower.verticalHeader().setVisible(False) self.ui.tablePower.resizeColumnsToContents()
def __updateTable(self): if self.statsTest.results.profile != None: tableData, tableHeadings = self.statsTest.results.tableData( self.ui.chkShowActiveFeatures.isChecked()) self.table = GenericTable(tableData, tableHeadings, self) self.table.sort(0, QtCore.Qt.AscendingOrder ) # start with features in alphabetical order self.ui.tableStatisticalSummary.setModel(self.table) self.ui.tableStatisticalSummary.verticalHeader().setVisible(False) self.ui.tableStatisticalSummary.resizeColumnsToContents()
def __init__(self, preferences, parent=None): QtGui.QWidget.__init__(self, parent) self.preferences = preferences # initialize GUI self.ui = Ui_MainWindow() self.ui.setupUi(self) self.lastDirectory = '' # load plot plugins self.exploratoryPlots = PlotsManager(self.ui.cboExploratoryPlots, self.ui.plotExploratoryScrollArea, 'Profile scatter plot') self.exploratoryPlots.loadPlots(self.preferences, 'plugins/exploratoryPlots/') self.statPlots = PlotsManager(self.ui.cboStatPlots, self.ui.plotStatScrollArea, 'Extended error bar') self.statPlots.loadPlots(self.preferences, 'plugins/statPlots/') # load statistical technique plugins pluginManager = PluginManager(self.preferences) self.effectSizeDict = pluginManager.loadPlugins( 'plugins/effectSizeFilters/') pluginManager.populateComboBox(self.effectSizeDict, self.ui.cboEffectSizeMeasure1, 'Difference between proportions') pluginManager.populateComboBox(self.effectSizeDict, self.ui.cboEffectSizeMeasure2, 'Ratio of proportions') self.statTestDict = pluginManager.loadPlugins( 'plugins/statisticalTests/') pluginManager.populateComboBox(self.statTestDict, self.ui.cboStatTests, 'Fisher\'s exact test') self.multCompDict = pluginManager.loadPlugins( 'plugins/multipleComparisonCorrections/') pluginManager.populateComboBox(self.multCompDict, self.ui.cboMultCompMethod, 'No correction') self.confIntervMethodDict = pluginManager.loadPlugins( 'plugins/confidenceIntervalMethods/') pluginManager.populateComboBox(self.confIntervMethodDict, self.ui.cboConfIntervMethods, 'DP: Newcombe-Wilson') # initialize class variables self.profileTree = ProfileTree() self.profile = Profile() self.statsTest = StatsTests() self.plotWindows = [] # initialize tables self.summaryTable = GenericTable([], [], self) self.coverageTable = GenericTable([], [], self) self.powerTable = GenericTable([], [], self) # connect menu items signals to slots self.connect(self.ui.mnuFileOpenProfile, QtCore.SIGNAL('triggered()'), self.loadProfile) self.connect(self.ui.mnuFileCreateProfile, QtCore.SIGNAL('triggered()'), self.createProfile) self.connect(self.ui.mnuFileAppendCategoryCOG, QtCore.SIGNAL('triggered()'), self.appendCategoriesCOG) self.connect(self.ui.mnuFileSavePlot, QtCore.SIGNAL('triggered()'), self.saveImageDlg) self.connect(self.ui.mnuFileSaveTable, QtCore.SIGNAL('triggered()'), self.saveTableDlg) self.connect(self.ui.mnuFileExit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()')) self.connect(self.ui.mnuViewSendPlotToWindow, QtCore.SIGNAL('triggered()'), self.sendPlotToWindow) self.connect(self.ui.mnuSettingsPreferences, QtCore.SIGNAL('triggered()'), self.prefrencesDlg) self.connect(self.ui.mnuHelpAbout, QtCore.SIGNAL('triggered()'), self.openAboutDlg) # widget controls in sidebar self.connect(self.ui.btnProfileTab, QtCore.SIGNAL('clicked()'), self.profileTabClicked) self.connect(self.ui.btnProfileArrow, QtCore.SIGNAL('clicked()'), self.profileTabClicked) self.connect(self.ui.btnStatisticsTab, QtCore.SIGNAL('clicked()'), self.statPropTabClicked) self.connect(self.ui.btnStatisticsArrow, QtCore.SIGNAL('clicked()'), self.statPropTabClicked) self.connect(self.ui.btnFilteringTab, QtCore.SIGNAL('clicked()'), self.filteringTabClicked) self.connect(self.ui.btnFilteringArrow, QtCore.SIGNAL('clicked()'), self.filteringTabClicked) # connect profile widget signals to slots self.connect(self.ui.cboSample1, QtCore.SIGNAL('activated(QString)'), self.hierarchicalLevelsChanged) self.connect(self.ui.cboSample2, QtCore.SIGNAL('activated(QString)'), self.hierarchicalLevelsChanged) self.connect(self.ui.btnSample1Colour, QtCore.SIGNAL('clicked()'), self.sample1ColourDlg) self.connect(self.ui.btnSample2Colour, QtCore.SIGNAL('clicked()'), self.sample2ColourDlg) self.connect(self.ui.cboProfileLevel, QtCore.SIGNAL('activated(QString)'), self.profileLevelChanged) self.connect(self.ui.cboParentalLevel, QtCore.SIGNAL('activated(QString)'), self.parentLevelChanged) # connect statistical test widget signals to slots self.connect(self.ui.cboStatTests, QtCore.SIGNAL('activated(QString)'), self.statTestPropChanged) self.connect(self.ui.cboSignTestType, QtCore.SIGNAL('activated(QString)'), self.statTestPropChanged) self.connect(self.ui.cboConfIntervMethods, QtCore.SIGNAL('activated(QString)'), self.statTestPropChanged) self.connect(self.ui.cboNominalCoverage, QtCore.SIGNAL('activated(QString)'), self.statTestPropChanged) self.connect(self.ui.btnRunTest, QtCore.SIGNAL('clicked()'), self.runTest) self.connect(self.ui.cboMultCompMethod, QtCore.SIGNAL('activated(QString)'), self.multCompCorrectionChanged) self.connect(self.ui.btnMultCompCorrectionInfo, QtCore.SIGNAL('clicked()'), self.multCompCorrectionInfo) # connect filtering test widget signals to slots self.connect(self.ui.chkSelectFeatures, QtCore.SIGNAL('toggled(bool)'), self.selectFeaturesCheckbox) self.connect(self.ui.btnSelectFeatures, QtCore.SIGNAL('clicked()'), self.selectFeaturesDlg) self.connect(self.ui.chkEnableSignLevelFilter, QtCore.SIGNAL('toggled(bool)'), self.filteringPropChanged) self.connect(self.ui.spinSignLevelFilter, QtCore.SIGNAL('valueChanged(QString)'), self.filteringPropChanged) self.connect(self.ui.cboSeqFilter, QtCore.SIGNAL('activated(QString)'), self.seqFilterChanged) self.connect(self.ui.chkEnableSeqFilter, QtCore.SIGNAL('toggled(bool)'), self.filteringPropChanged) self.connect(self.ui.spinFilterSample1, QtCore.SIGNAL('valueChanged(QString)'), self.filteringPropChanged) self.connect(self.ui.spinFilterSample2, QtCore.SIGNAL('valueChanged(QString)'), self.filteringPropChanged) self.connect(self.ui.cboParentSeqFilter, QtCore.SIGNAL('activated(QString)'), self.parentSeqFilterChanged) self.connect(self.ui.chkEnableParentSeqFilter, QtCore.SIGNAL('toggled(bool)'), self.filteringPropChanged) self.connect(self.ui.spinParentFilterSample1, QtCore.SIGNAL('valueChanged(QString)'), self.filteringPropChanged) self.connect(self.ui.spinParentFilterSample2, QtCore.SIGNAL('valueChanged(QString)'), self.filteringPropChanged) self.connect(self.ui.radioOR, QtCore.SIGNAL('clicked()'), self.filteringPropChanged) self.connect(self.ui.radioAND, QtCore.SIGNAL('clicked()'), self.filteringPropChanged) self.connect(self.ui.cboEffectSizeMeasure1, QtCore.SIGNAL('activated(QString)'), self.changeEffectSizeMeasure) self.connect(self.ui.cboEffectSizeMeasure2, QtCore.SIGNAL('activated(QString)'), self.changeEffectSizeMeasure) self.connect(self.ui.spinMinEffectSize1, QtCore.SIGNAL('valueChanged(QString)'), self.filteringPropChanged) self.connect(self.ui.spinMinEffectSize2, QtCore.SIGNAL('valueChanged(QString)'), self.filteringPropChanged) self.connect(self.ui.chkEnableEffectSizeFilter1, QtCore.SIGNAL('toggled(bool)'), self.filteringPropChanged) self.connect(self.ui.chkEnableEffectSizeFilter2, QtCore.SIGNAL('toggled(bool)'), self.filteringPropChanged) self.connect(self.ui.btnApplyFilters, QtCore.SIGNAL('clicked()'), self.applyFilters) # connect exploratory plot page widget signals to slots self.connect(self.ui.cboExploratoryPlots, QtCore.SIGNAL('activated(QString)'), self.exploratoryPlotUpdate) self.connect(self.ui.btnExploratoryConfigurePlot, QtCore.SIGNAL('clicked()'), self.exploratoryPlotConfigure) # connect statistical plot page widget signals to slots self.connect(self.ui.cboStatPlots, QtCore.SIGNAL('activated(QString)'), self.statPlotUpdate) self.connect(self.ui.btnStatConfigurePlot, QtCore.SIGNAL('clicked()'), self.statPlotConfigure) self.connect(self.ui.cboHighlightHierarchyExploratory, QtCore.SIGNAL('activated(QString)'), self.highlightHierarchyExploratoryChanged) self.connect(self.ui.cboHighlightFeatureExploratory, QtCore.SIGNAL('activated(QString)'), self.highlightFeatureExploratoryChanged) self.connect(self.ui.cboHighlightHierarchyStats, QtCore.SIGNAL('activated(QString)'), self.highlightHierarchyStatsChanged) self.connect(self.ui.cboHighlightFeatureStats, QtCore.SIGNAL('activated(QString)'), self.highlightFeatureStatsChanged) # connect paired profile page widget signals to slots self.connect(self.ui.chkShowActiveFeatures, QtCore.SIGNAL('toggled(bool)'), self.populateSummaryTable) # connect CI coverage page widget signals to slots self.connect(self.ui.btnConfIntervCoverage, QtCore.SIGNAL('clicked()'), self.confIntervCoverage) # connect CI coverage page widget signals to slots self.connect(self.ui.btnPowerTest, QtCore.SIGNAL('clicked()'), self.powerTest) # initialize dynamic GUI elements self.seqFilterChanged() self.parentSeqFilterChanged() self.setSample1Colour(self.preferences['Sample 1 colour']) self.setSample2Colour(self.preferences['Sample 2 colour']) # show window maximized self.resize(1100, 700) self.showMaximized()