def __init__(self,parent=None, signalManager = None): OWWidget.__init__(self, parent, signalManager, "&Display Motifs", 0) # set default settings self.colorBy = None self.pvalThresholdIndex = None self.pvalThreshold = None #load settings self.loadSettings() # GUI self.graph = OWGraph(self.mainArea) self.graph.setYRlabels(None) self.graph.enableGridXB(0) self.graph.enableGridYL(1) self.graph.setAxisMaxMinor(QwtPlot.xBottom, 10) self.graph.setAxisMaxMajor(QwtPlot.xBottom, 10) self.graph.setAxisAutoScale(QwtPlot.xBottom) self.graph.setAxisScale(QwtPlot.xBottom, -1020, 0, 0) self.mainArea.layout().addWidget(self.graph) # inputs # data and graph temp variables self.inputs = [("Examples", ExampleTable, self.cdata, Default), ("Genes", list, self.newGeneList, Default), ("Motifs", list, self.newMotifList, Default)] self.data = None self.motifLines = [] self.visibleValues = [] self.valueToCurve = {} self.allGenes = [] ## genes displayed always in same order self.geneList = [] ## selected genes self.motifList = [] ## selected motifs self.valuesPresentInData = [] self.clusterPostProbThreshold = 0 # GUI self.selValues = OWGUI.widgetBox(self.controlArea, "Values") self.selcolorBy = OWGUI.widgetBox(self.controlArea, "Color By") self.colorByCombo = OWGUI.comboBox(self.selcolorBy, self, "colorBy", items=[], callback=self.colorByChanged) self.pvalThresholdCombo = OWGUI.comboBox(self.selValues, self, "pvalThresholdIndex", items=[], callback=self.pvalThresholdChanged) self.valuesQLB = QListWidget(self.selValues) self.valuesQLB.setSelectionMode(QListWidget.MultiSelection) self.connect(self.valuesQLB, SIGNAL("itemSelectionChanged()"), self.valuesSelectionChange) self.selValues.layout().addWidget(self.valuesQLB) self.unselectAllQLB = OWGUI.button(self.selValues, self, "Unselect all", callback = self.unselAll)
def __init__(self, parent=None, signalManager = None): OWWidget.__init__(self, parent, signalManager, 'Process Chip Data') self.callbackDeposit = [] self.inputs = [("Structured Data", DataFiles, self.chipdata)] self.outputs = [("Structured Data", DataFiles)] self.chipdata = None; self.datasets = None self.std = [("No preprocessing", None), ("Array-based standardization", chipstat.standardize_arrays), ("Gene-based standardization", chipstat.standardize_genes), ("First array-, then gene-based standardization", lambda e,r: chipstat.standardize_genes(chipstat.standardize_arrays(e,r),r)), ("First gene-, then array-based standardization", lambda e,r: chipstat.standardize_arrays(chipstat.standardize_genes(e,r),r))] # Settings self.data = None self.preStdMethod = 0; self.preStdRob = 1 self.postStdMethod = 0; self.postStdRob = 1 self.mergeType = 0 self.commitOnChange = 0 self.loadSettings() # GUI # info box = QVGroupBox("Info", self.controlArea) self.infoa = QLabel('No data on input.', box) self.infob = QLabel('', box) # preprocessing OWGUI.separator(self.controlArea) box = QVGroupBox("Preprocessing", self.controlArea) labels = [x[0] for x in self.std] OWGUI.comboBox(box, self, 'preStdMethod', label=None, labelWidth=None, orientation='vertical', items=labels, callback=self.selectionChange) self.preRobBtn = OWGUI.checkBox(box, self, "preStdRob", "Robust standardization", callback=self.selectionChange) # merge OWGUI.separator(self.controlArea) self.mergeTypes = [(0, "No merging"), ('mean', 'Mean'), ('median', 'Median'), ('min', 'Minimum expression'), ('max', 'Maximum expression')] labels = [x[1] for x in self.mergeTypes] OWGUI.radioButtonsInBox(self.controlArea, self, 'mergeType', labels, box='Merge Replicas', tooltips=None, callback=self.selectionChange) # postprocessing OWGUI.separator(self.controlArea) self.boxPostproc = QVGroupBox("Postprocessing", self.controlArea) labels = [x[0] for x in self.std] OWGUI.comboBox(self.boxPostproc, self, 'postStdMethod', label=None, labelWidth=None, orientation='vertical', items=labels, callback=self.selectionChange) self.postRobBtn = OWGUI.checkBox(self.boxPostproc, self, "postStdRob", "Robust standardization", callback=self.selectionChange) # output OWGUI.separator(self.controlArea) box = QVGroupBox("Output", self.controlArea) OWGUI.checkBox(box, self, 'commitOnChange', 'Commit data on selection change') self.commitBtn = OWGUI.button(box, self, "Commit", callback=self.selectionChange, disabled=1) self.setBtnsState() self.resize(100,100)
def __init__(self, parent=None, signalManager = None, name='Approximate Profiles'): self.callbackDeposit = [] # deposit for OWGUI callback functions OWWidget.__init__(self, parent, signalManager, name) self._data = None # exampleTable self._dataN = None # 2d numeric array self._chipdata = None # [(dirname0, [et0, et1, ...]), ...] self._chipdataN = None # 3d numeric array self.kernel = 0 self.kernels = ["Orthogonal polynomials", "Trigonometric functions"] self.kernelSize = None self.kernelSizes = [ ["Const"] + map(lambda x: "degree <= %i"%x, range(1,99)), ["Const", "cos x", "sin x"] + reduce(lambda x,y: x+[y[0],y[1]], map(lambda i: ("cos %ix"%i, "sin %ix"%i), range(2,99)), []) ] self.useSignificance = 0 self.alpha = 3 self.alphas = [0.0001, 0.001, 0.01, 0.05, 0.1, 0.2, 0.5] self.commitOnChange = 1 # Settings self.loadSettings() # GUI: info, comboKernelSize, cbUseSignificance, vboxSignificance, commitBtn # info box = QVGroupBox("Info", self.controlArea) self.infoa = QLabel("No examples on input", box) OWGUI.separator(box,250) self.infob = QLabel("No structured data on input", box) OWGUI.separator(self.controlArea) # kernel selection box = QVGroupBox("Kernel functions", self.controlArea) OWGUI.comboBox(box, self, "kernel", items=self.kernels, callback=self.kernelChange) OWGUI.separator(self.controlArea) # kernel settings box = QVGroupBox("Kernel settings", self.controlArea) self.comboKernelSize = OWGUI.comboBox(box, self, "kernelSize", callback=self.kernelSizeChange, label="Number of kernel functions", labelWidth=135, orientation="horizontal", valueType=int) self.comboKernelSize.setDisabled(1) self.cbUseSignificance = OWGUI.checkBox(box, self, "useSignificance", "Significance of coefficients (F-statistics)", callback=self.useSignificanceChange, tooltip="Use kernels with coefficients significantly different from 0.") self.vboxSignificance = QVBox(box) OWGUI.comboBox(self.vboxSignificance, self, "alpha", items = self.alphas, callback=self.alphaChange, label="p <", labelWidth=20, orientation="horizontal") OWGUI.separator(self.controlArea) # output box = QVGroupBox("Output", self.controlArea) OWGUI.checkBox(box, self, 'commitOnChange', 'Commit data on selection change') self.commitBtn = OWGUI.button(box, self, "Commit", callback=self.senddata, disabled=1) self.inputs = [("Examples", ExampleTable, self.data), ("Structured Data", DataFiles, self.chipdata)] self.outputs = [("Approximated Examples", ExampleTable, Default), ("Approximation Coefficients", ExampleTable), ("Approximated Structured Data", DataFiles, Default), ("Structured Approximation Coefficients", DataFiles)] self.resize(200,100)
def __init__(self, parent=None, signalManager=None): OWWidget.__init__(self, parent, signalManager, 'Data Distance') self.inputs = [("Structured Data", DataFiles, self.chipdata)] self.outputs = [("Distance Matrix", orange.SymMatrix)] self.Metrics = 0 self.loadSettings() self.data = [] ## self.metrics = [("Euclidean", orange.ExamplesDistanceConstructor_Euclidean), ## ("Manhattan", orange.ExamplesDistanceConstructor_Manhattan), ## ("Hamming", orange.ExamplesDistanceConstructor_Hamming)] self.metrics = [("Manhattan", distManhattan), ("Euclidean", distEuclidean), ("1 - (Pearson correlation coefficient)", distPearson), ("1 - (Spearman rank correlation coefficient)", distSpearman)] # GUI self.mainArea.setFixedWidth(0) # Info box box = QVGroupBox("Info", self.controlArea) self.infoa = QLabel('No data on input.', box) self.infob = QLabel('', box) OWGUI.separator(self.controlArea) # Distance metrics selection items = [x[0] for x in self.metrics] OWGUI.comboBox( self.controlArea, self, "Metrics", box="Distance Metrics", items=items, tooltip="Metrics to measure distance between data sets.", callback=self.onMetricsChange) self.resize(384, 138)
def __init__(self, parent=None, signalManager = None): # self.callbackDeposit = [] # deposit for OWGUI callback functions OWWidget.__init__(self, parent, signalManager, 'Expression Profiles', 1) #set default settings self.ShowAverageProfile = 1 self.ShowSingleProfiles = 0 self.PointWidth = 2 self.CurveWidth = 1 self.AverageCurveWidth = 4 self.BoxPlotWidth = 2 self.SelectedClasses = [] self.Classes = [] self.autoSendSelected = 0 self.selectionChangedFlag = False self.CutLow = 0; self.CutHigh = 0; self.CutEnabled = 0 self.profileLabel = None #load settings self.loadSettings() # GUI self.graph = profilesGraph(self, self.mainArea, "") self.mainArea.layout().addWidget(self.graph) self.graph.hide() self.connect(self.graphButton, SIGNAL("clicked()"), self.graph.saveToFile) # GUI definition self.tabs = OWGUI.tabWidget(self.space) # GRAPH TAB GraphTab = OWGUI.createTabPage(self.tabs, "Graph") ## display options self.infoLabel = OWGUI.widgetLabel(OWGUI.widgetBox(GraphTab, "Info"), "No data on input.") displayOptBox = OWGUI.widgetBox(GraphTab, "Display") #QVButtonGroup("Display", GraphTab) displayOptButtons = ['Majority Class', 'Majority Class Probability', 'Target Class Probability', 'Number of Instances'] OWGUI.checkBox(displayOptBox, self, 'ShowSingleProfiles', 'Expression Profiles', tooltip='', callback=self.updateShowSingleProfiles) OWGUI.checkBox(displayOptBox, self, 'ShowAverageProfile', 'Box Plot', tooltip='', callback=self.updateShowAverageProfile) ## class selection (classQLB) self.classQVGB = OWGUI.widgetBox(GraphTab, "Classes") #QVGroupBox(GraphTab) ## self.classQVGB.setTitle("Classes") self.classQLB = OWGUI.listBox(self.classQVGB, self, "SelectedClasses", "Classes", selectionMode=QListWidget.MultiSelection, callback=self.classSelectionChange) #QListBox(self.classQVGB) ## self.classQLB.setSelectionMode(QListBox.Multi) self.unselectAllClassedQLB = OWGUI.button(self.classQVGB, self, "Unselect all", callback=self.SUAclassQLB) #QPushButton("(Un)Select All", self.classQVGB) ## self.connect(self.unselectAllClassedQLB, SIGNAL("clicked()"), self.SUAclassQLB) ## self.connect(self.classQLB, SIGNAL("selectionChanged()"), self.classSelectionChange) ## show single/average profile ## self.showAverageQLB = QPushButton("Box Plot", self.classQVGB) ## self.showAverageQLB.setToggleButton(1) ## self.showAverageQLB.setOn(self.ShowAverageProfile) ## self.showSingleQLB = QPushButton("Single Profiles", self.classQVGB) ## self.showSingleQLB.setToggleButton(1) ## self.showSingleQLB.setOn(self.ShowSingleProfiles) ## self.connect(self.showAverageQLB, SIGNAL("toggled(bool)"), self.updateShowAverageProfile) ## self.connect(self.showSingleQLB, SIGNAL("toggled(bool)"), self.updateShowSingleProfiles) ## self.tabs.insertTab(GraphTab, "Graph") # SETTINGS TAB SettingsTab = OWGUI.createTabPage(self.tabs, "Settings") #QVGroupBox(self) self.profileLabelComboBox = OWGUI.comboBox(SettingsTab, self, 'profileLabel', 'Profile Labels', sendSelectedValue=True, valueType=str) OWGUI.hSlider(SettingsTab, self, 'PointWidth', box='Point Width', minValue=0, maxValue=9, step=1, callback=self.updatePointWidth, ticks=1) OWGUI.hSlider(SettingsTab, self, 'CurveWidth', box='Profile Width', minValue=1, maxValue=9, step=1, callback=self.updateCurveWidth, ticks=1) OWGUI.hSlider(SettingsTab, self, 'AverageCurveWidth', box='Average Profile Width', minValue=1, maxValue=9, step=1, callback=self.updateAverageCurveWidth, ticks=1) OWGUI.hSlider(SettingsTab, self, 'BoxPlotWidth', box='Box Plot Width', minValue=0, maxValue=9, step=1, callback=self.updateBoxPlotWidth, ticks=1) OWGUI.checkBox(SettingsTab, self, 'graph.renderAntialiased', "Render antialiased", callback=self.graph.setCurveRenderHints) ## graph y scale box = OWGUI.widgetBox(SettingsTab, "Threshold/ Values") #QVButtonGroup("Threshol/ Values", SettingsTab) OWGUI.checkBox(box, self, 'CutEnabled', "Enabled", callback=self.setCutEnabled) self.sliderCutLow = OWGUI.qwtHSlider(box, self, 'CutLow', label='Low:', labelWidth=33, minValue=-20, maxValue=0, step=0.1, precision=1, ticks=0, maxWidth=80, callback=self.updateYaxis) self.sliderCutHigh = OWGUI.qwtHSlider(box, self, 'CutHigh', label='High:', labelWidth=33, minValue=0, maxValue=20, step=0.1, precision=1, ticks=0, maxWidth=80, callback=self.updateYaxis) if not self.CutEnabled: self.sliderCutLow.box.setDisabled(1) self.sliderCutHigh.box.setDisabled(1) ## self.tabs.insertTab(SettingsTab, "Settings") self.toolbarSelection = ZoomSelectToolbar(self, self.controlArea, self.graph, self.autoSendSelected, buttons=(ZoomSelectToolbar.IconZoom, ZoomSelectToolbar.IconPan, ZoomSelectToolbar.IconSelect, ZoomSelectToolbar.IconSpace, ZoomSelectToolbar.IconRemoveLast, ZoomSelectToolbar.IconRemoveAll, ZoomSelectToolbar.IconSendSelection)) cb = OWGUI.checkBox(self.controlArea, self, "autoSendSelected", "Auto send on selection change") OWGUI.setStopper(self, self.toolbarSelection.buttonSendSelections, cb, "selectionChangedFlag", self.commit) # inputs # data and graph temp variables self.inputs = [("Examples", ExampleTable, self.data, Default + Multiple)] self.outputs = [("Examples", ExampleTable, Default)] # temp variables self.MAdata = [] self.classColor = None self.classBrighterColor = None self.numberOfClasses = 0 self.classValues = [] self.ctrlPressed = False self.attrIcons = self.createAttributeIconDict() self.graph.canvas().setMouseTracking(1) # self.zoomStack = [] ## self.connect(self.graph, ## SIGNAL('plotMousePressed(const QMouseEvent&)'), ## self.onMousePressed) ## self.connect(self.graph, ## SIGNAL('plotMouseReleased(const QMouseEvent&)'), ## self.onMouseReleased) self.resize(800,600)
def __init__(self, parent=None, signalManager=None, name="Gene selection"): OWWidget.__init__(self, parent, signalManager, name, wantGraph=True, showSaveGraph=True) self.inputs = [("Examples", ExampleTable, self.set_data)] self.outputs = [("Example table with selected genes", ExampleTable), ("Example table with remaining genes", ExampleTable), ("Selected genes", ExampleTable)] self.method_index = 0 self.genes_in_columns = False self.compute_null = False self.permutations_count = 10 self.auto_commit = False self.selectNBest = 20 self.selectPValue = 0.01 self.data_changed_flag = False self.add_scores_to_output = True self.thresholds = { "fold change": (0.5, 2.), "log2 fold change": (-1, 1), "t-test": (-2, 2), "t-test p-value": (0.01, 0.01), } self.oneTailTestHi = oneTailTestHi = lambda array, low, hi: array >= hi self.oneTailTestLow = oneTailTestLow = lambda array, low, hi: array <= low self.twoTailTest = twoTailTest = lambda array, low, hi: (array >= hi) | (array <= low) self.middleTest = middleTest = lambda array, low, hi: (array <= hi) | (array >= low) self.histType = {oneTailTestHi:"hiTail", oneTailTestLow:"lowTail", twoTailTest:"twoTail", middleTest:"middle"} # [(name, func, tail test, two sample test), ...] self.score_methods = [("fold change", ExpressionSignificance_FoldChange, twoTailTest, True), ("log2 fold change", ExpressionSignificance_Log2FoldChange, twoTailTest, True), ("t-test", ExpressionSignificance_TTest_T, twoTailTest, True), ("t-test p-value", ExpressionSignificance_TTest_PValue, oneTailTestLow, True), ("anova", ExpressionSignificance_ANOVA_F, oneTailTestHi, False), ("anova p-value", ExpressionSignificance_ANOVA_PValue, oneTailTestLow, False), ("signal to noise ratio", ExpressionSignificance_SignalToNoise, twoTailTest, True), ("info gain", ExpressionSignificance_Info, oneTailTestHi, True), ("chi-square", ExpressionSignificance_ChiSquare, oneTailTestHi, True), ("mann-whitney", ExpressionSignigicance_MannWhitneyu_U, oneTailTestLow, True)] boxHistogram = OWGUI.widgetBox(self.mainArea) self.histogram = ScoreHist(self, boxHistogram) boxHistogram.layout().addWidget(self.histogram) self.histogram.show() box = OWGUI.widgetBox(self.controlArea, "Info") self.dataInfoLabel = OWGUI.widgetLabel(box, "\n\n") self.dataInfoLabel.setWordWrap(True) self.selectedInfoLabel = OWGUI.widgetLabel(box, "") box1 = OWGUI.widgetBox(self.controlArea, "Scoring Method") self.testRadioBox = OWGUI.comboBox(box1, self, "method_index", items=[sm[0] for sm in self.score_methods], callback=[self.on_scoring_method_changed, self.update_scores]) box = OWGUI.widgetBox(self.controlArea, "Target Labels") self.label_selection_widget = LabelSelectionWidget(self) self.label_selection_widget.setMaximumHeight(150) box.layout().addWidget(self.label_selection_widget) self.connect(self.label_selection_widget, SIGNAL("selection_changed()"), self.on_target_changed) self.connect(self.label_selection_widget, SIGNAL("label_activated(int)"), self.on_label_activated) self.genes_in_columns_check = OWGUI.checkBox(box, self, "genes_in_columns", "Genes in columns", callback=self.on_genes_in_columns_change) box = OWGUI.widgetBox(self.controlArea, "Selection") box.layout().setSpacing(0) self.upperBoundarySpin = OWGUI.doubleSpin(box, self, "histogram.upperBoundary", min=-1e6, max=1e6, step= 1e-6, label="Upper threshold:", callback=self.update_boundary, callbackOnReturn=True) self.lowerBoundarySpin = OWGUI.doubleSpin(box, self, "histogram.lowerBoundary", min=-1e6, max=1e6, step= 1e-6, label="Lower threshold:", callback=self.update_boundary, callbackOnReturn=True) check = OWGUI.checkBox(box, self, "compute_null", "Compute null distribution", callback=self.update_scores) check.disables.append(OWGUI.spin(box, self, "permutations_count", min=1, max=10, label="Permutations:", callback=self.update_scores, callbackOnReturn=True)) box1 = OWGUI.widgetBox(box, orientation='horizontal') check.disables.append(OWGUI.doubleSpin(box1, self, "selectPValue", min=2e-7, max=1.0, step=1e-7, label="P-value:")) check.disables.append(OWGUI.button(box1, self, "Select", callback=self.select_p_best)) check.makeConsistent() box1 = OWGUI.widgetBox(box, orientation='horizontal') OWGUI.spin(box1, self, "selectNBest", 0, 10000, step=1, label="Best Ranked:") OWGUI.button(box1, self, "Select", callback=self.select_n_best) box = OWGUI.widgetBox(self.controlArea, "Output") b = OWGUI.button(box, self, "&Commit", callback=self.commit) cb = OWGUI.checkBox(box, self, "auto_commit", "Commit on change") OWGUI.setStopper(self, b, cb, "data_changed_flag", self.commit) OWGUI.checkBox(box, self, "add_scores_to_output", "Add gene scores to output", callback=self.commit_if) OWGUI.rubber(self.controlArea) self.connect(self.graphButton, SIGNAL("clicked()"), self.histogram.saveToFile) self.loadSettings() self.data = None self.discData = None self.scoreCache = {} self.nullDistCache = {} self.cuts = {} self.null_dist = [] self.targets = [] self.scores = {} self.genes_in_columns = True self.target_selections = None self.on_scoring_method_changed() self.resize(800, 600)
def __init__(self, parent=None, signalManager=None): OWWidget.__init__(self, parent, signalManager, "Parallel Coordinates", True) #add a graph widget self.graph = OWParallelGraph(self, self.mainArea) self.mainArea.layout().addWidget(self.graph) self.showAllAttributes = 0 self.inputs = [("Data", ExampleTable, self.setData, Default), ("Data Subset", ExampleTable, self.setSubsetData), ("Features", AttributeList, self.setShownAttributes)] self.outputs = [("Selected Data", ExampleTable), ("Other Data", ExampleTable), ("Features", AttributeList)] #set default settings self.data = None self.subsetData = None self.autoSendSelection = 1 self.attrDiscOrder = "Unordered" self.attrContOrder = "Unordered" self.projections = None self.correlationDict = {} self.middleLabels = "Correlations" self.attributeSelectionList = None self.toolbarSelection = 0 self.colorSettings = None self.selectedSchemaIndex = 0 self.graph.jitterSize = 10 self.graph.showDistributions = 1 self.graph.showStatistics = 0 self.graph.showAttrValues = 1 self.graph.useSplines = 0 self.graph.enabledLegend = 1 #load settings self.loadSettings() #GUI self.tabs = OWGUI.tabWidget(self.controlArea) self.GeneralTab = OWGUI.createTabPage(self.tabs, "Main") self.SettingsTab = OWGUI.createTabPage(self.tabs, "Settings") self.createShowHiddenLists(self.GeneralTab, callback=self.updateGraph) self.connect(self.shownAttribsLB, SIGNAL('itemDoubleClicked(QListWidgetItem*)'), self.flipAttribute) self.optimizationDlg = ParallelOptimization(self, signalManager=self.signalManager) self.optimizationDlgButton = OWGUI.button(self.GeneralTab, self, "Optimization Dialog", callback=self.optimizationDlg.reshow, debuggingEnabled=0) self.zoomSelectToolbar = OWToolbars.ZoomSelectToolbar(self, self.GeneralTab, self.graph, self.autoSendSelection, buttons=(1, 2, 0, 7, 8)) self.connect(self.zoomSelectToolbar.buttonSendSelections, SIGNAL("clicked()"), self.sendSelections) #connect controls to appropriate functions self.connect(self.graphButton, SIGNAL("clicked()"), self.graph.saveToFile) # #################################### # SETTINGS functionality box = OWGUI.widgetBox(self.SettingsTab, "Transparency") OWGUI.hSlider(box, self, 'graph.alphaValue', label="Examples: ", minValue=0, maxValue=255, step=10, callback=self.updateGraph, tooltip="Alpha value used for drawing example lines") OWGUI.hSlider(box, self, 'graph.alphaValue2', label="Rest: ", minValue=0, maxValue=255, step=10, callback=self.updateGraph, tooltip="Alpha value used to draw statistics, example subsets, ...") box = OWGUI.widgetBox(self.SettingsTab, "Jittering Options") OWGUI.comboBox(box, self, "graph.jitterSize", label='Jittering size (% of size): ', orientation='horizontal', callback=self.setJitteringSize, items=self.jitterSizeNums, sendSelectedValue=1, valueType=float) # visual settings box = OWGUI.widgetBox(self.SettingsTab, "Visual Settings") OWGUI.checkBox(box, self, 'graph.showAttrValues', 'Show attribute values', callback=self.updateGraph) OWGUI.checkBox(box, self, 'graph.useAntialiasing', 'Use antialiasing', callback=self.updateGraph) OWGUI.checkBox(box, self, 'graph.useSplines', 'Show splines', callback=self.updateGraph, tooltip="Show lines using splines") OWGUI.checkBox(box, self, 'graph.enabledLegend', 'Show legend', callback=self.updateGraph) box = OWGUI.widgetBox(self.SettingsTab, "Axis Distance") resizeColsBox = OWGUI.widgetBox(box, 0, "horizontal", 0) OWGUI.label(resizeColsBox, self, "Increase/decrease distance: ") OWGUI.toolButton(resizeColsBox, self, "+", callback=self.increaseAxesDistance, tooltip="Increase the distance between the axes", width=30, height=20) OWGUI.toolButton(resizeColsBox, self, "-", callback=self.decreaseAxesDistance, tooltip="Decrease the distance between the axes", width=30, height=20) OWGUI.rubber(resizeColsBox) OWGUI.checkBox(box, self, "graph.autoUpdateAxes", "Auto scale X axis", tooltip="Auto scale X axis to show all visualized attributes", callback=self.updateGraph) box = OWGUI.widgetBox(self.SettingsTab, "Statistical Information") OWGUI.comboBox(box, self, "graph.showStatistics", label="Statistics: ", orientation="horizontal", labelWidth=90, items=["No statistics", "Means, deviations", "Median, quartiles"], callback=self.updateGraph, sendSelectedValue=0, valueType=int) OWGUI.comboBox(box, self, "middleLabels", label="Middle labels: ", orientation="horizontal", labelWidth=90, items=["No labels", "Correlations", "VizRank"], callback=self.updateGraph, tooltip="The information do you wish to view on top in the middle of coordinate axes", sendSelectedValue=1, valueType=str) OWGUI.checkBox(box, self, 'graph.showDistributions', 'Show distributions', callback=self.updateGraph, tooltip="Show bars with distribution of class values (only for discrete attributes)") box = OWGUI.widgetBox(self.SettingsTab, "Colors", orientation="horizontal") OWGUI.button(box, self, "Set colors", self.setColors, tooltip="Set the canvas background color and color palette for coloring continuous variables", debuggingEnabled=0) box = OWGUI.widgetBox(self.SettingsTab, "Auto Send Selected Data When...") OWGUI.checkBox(box, self, 'autoSendSelection', 'Adding/Removing selection areas', callback=self.selectionChanged, tooltip="Send selected data whenever a selection area is added or removed") OWGUI.checkBox(box, self, 'graph.sendSelectionOnUpdate', 'Moving/Resizing selection areas', tooltip="Send selected data when a user moves or resizes an existing selection area") self.graph.autoSendSelectionCallback = self.selectionChanged self.SettingsTab.layout().addStretch(100) self.icons = self.createAttributeIconDict() dlg = self.createColorDialog() self.graph.contPalette = dlg.getContinuousPalette("contPalette") self.graph.discPalette = dlg.getDiscretePalette("discPalette") self.graph.setCanvasBackground(dlg.getColor("Canvas")) apply([self.zoomSelectToolbar.actionZooming, self.zoomSelectToolbar.actionRectangleSelection, self.zoomSelectToolbar.actionPolygonSelection][self.toolbarSelection], []) self.cbShowAllAttributes() self.resize(900, 700)
def __init__(self, parent=None, signalManager = None, name='GSEA'): OWWidget.__init__(self, parent, signalManager, name) self.inputs = [("Examples", ExampleTable, self.setData)] self.outputs = [("Examples with selected genes only", ExampleTable), ("Results", ExampleTable), ("Distance Matrix", orange.SymMatrix) ] self.res = None self.dm = None self.name = 'GSEA' self.minSubsetSize = 3 self.minSubsetSizeC = True self.maxSubsetSize = 1000 self.maxSubsetSizeC = True self.minSubsetPart = 10 self.minSubsetPartC = True self.perms = 100 self.csgm = False self.gsgo = False self.gskegg = False self.buildDistances = False self.selectedPhenVar = 0 self.organismIndex = 0 self.atLeast = 3 self.permutationTypes = [("Phenotype", "p"),("Gene", "g") ] self.ptype = 0 self.correlationTypes = [ ("Signal2Noise", "s2n") ] self.ctype = 0 self.data = None self.geneSets = {} self.tabs = OWGUI.tabWidget(self.controlArea) ca = OWGUI.createTabPage(self.tabs, "Basic") box = OWGUI.widgetBox(ca, 'Organism') #FROM KEGG WIDGET - organism selection self.organismTaxids = [] self.organismComboBox = cb = OWGUI.comboBox(box, self, "organismIndex", items=[], debuggingEnabled=0) #changed cb.setMaximumWidth(200) #OWGUI.checkBox(box, self, "csgm", "Case sensitive gene matching") box2 = OWGUI.widgetBox(ca, "Descriptors") self.phenCombo = OWGUI.comboBox(box2, self, "selectedPhenVar", items=[], callback=self.phenComboChange, label="Phenotype:") self.geneCombo = OWGUI.comboBox(box2, self, "selectedGeneVar", items=[], label = "Gene:") self.allowComboChangeCallback = False ma = self.mainArea self.listView = QTreeWidget(ma) ma.layout().addWidget(self.listView) self.listView.setAllColumnsShowFocus(1) self.listView.setColumnCount(9) self.listView.setHeaderLabels(["Collection", "Geneset", "NES", "ES", "P-value", "FDR", "Size", "Matched Size", "Genes"]) self.listView.header().setStretchLastSection(True) self.listView.header().setClickable(True) self.listView.header().setSortIndicatorShown(True) self.listView.setSortingEnabled(True) #self.listView.header().setResizeMode(0, QHeaderView.Stretch) self.listView.setSelectionMode(QAbstractItemView.NoSelection) self.connect(self.listView, SIGNAL("itemSelectionChanged()"), self.newPathwaySelected) OWGUI.separator(ca) OWGUI.widgetLabel(ca, "Phenotype selection:") self.psel = PhenotypesSelection(ca) self.resize(600,50) OWGUI.separator(ca) OWGUI.checkBox(ca, self, "buildDistances", "Compute geneset distances") self.btnApply = OWGUI.button(ca, self, "&Compute", callback = self.compute, disabled=0) fileBox = OWGUI.widgetBox(ca, orientation='horizontal') OWGUI.button(fileBox, self, "Load", callback = self.loadData, disabled=0, debuggingEnabled=0) OWGUI.button(fileBox, self, "Save", callback = self.saveData, disabled=0, debuggingEnabled=0) #ca.layout().addStretch(1) ca = OWGUI.createTabPage(self.tabs, "Gene sets") box = OWGUI.widgetBox(ca) self.gridSel = [] self.geneSel = [] #FIXME temporary disabled - use the same as in new "David" widget self.lbgs = OWGUI.listBox(box, self, "gridSel", "geneSel", selectionMode = QListWidget.MultiSelection) OWGUI.button(box, self, "From &File", callback = self.addCollection, disabled=0, debuggingEnabled=0) box = OWGUI.widgetBox(box, "Additional sources:") OWGUI.checkBox(box, self, "gskegg", "KEGG pathways") OWGUI.checkBox(box, self, "gsgo", "GO terms") #ca.layout().addStretch(1) ca = OWGUI.createTabPage(self.tabs, "Settings") box = OWGUI.widgetBox(ca, 'Properties') self.permTypeF = OWGUI.comboBoxWithCaption(box, self, "ptype", items=nth(self.permutationTypes, 0), \ tooltip="Permutation type.", label="Permute") _ = OWGUI.spin(box, self, "perms", 50, 1000, orientation="horizontal", label="Times") self.corTypeF = OWGUI.comboBoxWithCaption(box, self, "ctype", items=nth(self.correlationTypes, 0), \ tooltip="Correlation type.", label="Correlation") box = OWGUI.widgetBox(ca, 'Subset Filtering') _,_ = OWGUI.checkWithSpin(box, self, "Min. Subset Size", 1, 10000, "minSubsetSizeC", "minSubsetSize", "") #TODO check sizes _,_ = OWGUI.checkWithSpin(box, self, "Max. Subset Size", 1, 10000, "maxSubsetSizeC", "maxSubsetSize", "") _,_ = OWGUI.checkWithSpin(box, self, "Min. Subset Part (%)", 1, 100, "minSubsetPartC", "minSubsetPart", "") box = OWGUI.widgetBox(ca, 'Gene Filtering') _ = OWGUI.spin(box, self, "atLeast", 2, 10, label="Min. Values in Group") ca.layout().addStretch(1) self.addComment("Computation was not started.") if sys.platform == "darwin": self.loadFileName = os.path.expanduser("~/") else: self.loadFileName = "." self.gridSels = [] self.loadSettings() self.setBlocking(True) QTimer.singleShot(0, self.UpdateOrganismComboBox) def cleanInvalid(maxn): """ Removes invalid gene set selection """ notAllOk = True while notAllOk: self.gridSels = getattr(self, "gridSels") notAllOk = False for i,a in enumerate(self.gridSels): if a >= maxn: self.gridSels.pop(i) notAllOk = True break cleanInvalid(len(self.geneSel)) self.gridSel = self.gridSels self.gridSels = self.gridSel
def __init__(self, parent=None, signalManager=None, title="Gene Network"): super(OWGeneNetwork, self).__init__(parent, signalManager, title, wantMainArea=False, resizingEnabled=False) self.taxid = "9606" self.gene_var_index = -1 self.use_attr_names = False self.network_source = 1 self.include_neighborhood = True self.autocommit = False self.min_score = 0.9 self.loadSettings() self.taxids = taxonomy.common_taxids() self.current_taxid_index = self.taxids.index(self.taxid) self.data = None self.geneinfo = None self.nettask = None self._invalidated = False box = OWGUI.widgetBox(self.controlArea, "Info") self.info = OWGUI.widgetLabel(box, "No data on input\n") box = OWGUI.widgetBox(self.controlArea, "Organism") self.organism_cb = OWGUI.comboBox(box, self, "current_taxid_index", items=map(taxonomy.name, self.taxids), callback=self._update_organism) box = OWGUI.widgetBox(self.controlArea, "Genes") self.genes_cb = OWGUI.comboBox(box, self, "gene_var_index", callback=self._update_query_genes) self.varmodel = OWItemModels.VariableListModel() self.genes_cb.setModel(self.varmodel) OWGUI.checkBox(box, self, "use_attr_names", "Use attribute names", callback=self._update_query_genes) box = OWGUI.widgetBox(self.controlArea, "Network") OWGUI.comboBox(box, self, "network_source", items=[s.name for s in SOURCES], callback=self._on_source_db_changed) OWGUI.checkBox(box, self, "include_neighborhood", "Include immediate gene neighbors", callback=self.invalidate) self.score_spin = OWGUI.doubleSpin(box, self, "min_score", 0.0, 1.0, step=0.001, label="Minimal edge score", callback=self.invalidate) self.score_spin.setEnabled(SOURCES[self.network_source].score_filter) box = OWGUI.widgetBox(self.controlArea, "Commit") OWGUI.button(box, self, "Commit", callback=self.commit, default=True) self.executor = ThreadExecutor()
def __init__(self, parent=None, signalManager=None, title="Expression Profile Distances"): OWWidget.__init__(self, parent, signalManager, title) self.inputs = [("Example Table", ExampleTable, self.set_data)] self.outputs = [("Distances", Orange.core.SymMatrix), ("Sorted Example Table", ExampleTable)] self.distance_measure = 0 self.auto_commit = False self.changed_flag = False self.loadSettings() ######## # GUI ######## self.info_box = OWGUI.widgetLabel( OWGUI.widgetBox(self.controlArea, "Input", addSpace=True), "No data on input\n" ) box = OWGUI.widgetBox(self.controlArea, "Separate By", addSpace=True) self.separate_view = QListView() self.separate_view.setSelectionMode(QListView.MultiSelection) box.layout().addWidget(self.separate_view) box = OWGUI.widgetBox(self.controlArea, "Sort By", addSpace=True) self.relevant_view = QListView() self.relevant_view.setSelectionMode(QListView.MultiSelection) box.layout().addWidget(self.relevant_view) self.distance_view = OWGUI.comboBox( self.controlArea, self, "distance_measure", box="Distance Measure", items=[d[0] for d in self.DISTANCE_FUNCTIONS], ) OWGUI.rubber(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Commit") cb = OWGUI.checkBox( box, self, "auto_commit", "Commit on any change", tooltip="Compute and send the distances on any change.", callback=self.commit_if, ) b = OWGUI.button( box, self, "Commit", tooltip="Compute the distances and send the output signals.", callback=self.commit, default=True, ) OWGUI.setStopper(self, b, cb, "changed_flag", callback=self.commit) self.groups_box = OWGUI.widgetBox(self.mainArea, "Groups") self.groups_scroll_area = QScrollArea() self.groups_box.layout().addWidget(self.groups_scroll_area) self.data = None self.partitions = [] self.matrix = None self.split_groups = [] self._disable_updates = False self.resize(800, 600)
def __init__(self, parent=None, signalManager=None): OWWidget.__init__(self, parent, signalManager, "Parallel Coordinates", True) #add a graph widget self.graph = OWParallelGraph(self, self.mainArea) self.mainArea.layout().addWidget(self.graph) self.showAllAttributes = 0 self.inputs = [("Data", ExampleTable, self.setData, Default), ("Data Subset", ExampleTable, self.setSubsetData), ("Features", AttributeList, self.setShownAttributes)] self.outputs = [("Selected Data", ExampleTable), ("Other Data", ExampleTable), ("Features", AttributeList)] #set default settings self.data = None self.subsetData = None self.autoSendSelection = 1 self.attrDiscOrder = "Unordered" self.attrContOrder = "Unordered" self.projections = None self.correlationDict = {} self.middleLabels = "Correlations" self.attributeSelectionList = None self.toolbarSelection = 0 self.colorSettings = None self.selectedSchemaIndex = 0 self.graph.jitterSize = 10 self.graph.showDistributions = 1 self.graph.showStatistics = 0 self.graph.showAttrValues = 1 self.graph.useSplines = 0 self.graph.enabledLegend = 1 #load settings self.loadSettings() #GUI self.tabs = OWGUI.tabWidget(self.controlArea) self.GeneralTab = OWGUI.createTabPage(self.tabs, "Main") self.SettingsTab = OWGUI.createTabPage(self.tabs, "Settings") self.createShowHiddenLists(self.GeneralTab, callback=self.updateGraph) self.connect(self.shownAttribsLB, SIGNAL('itemDoubleClicked(QListWidgetItem*)'), self.flipAttribute) self.optimizationDlg = ParallelOptimization( self, signalManager=self.signalManager) self.optimizationDlgButton = OWGUI.button( self.GeneralTab, self, "Optimization Dialog", callback=self.optimizationDlg.reshow, debuggingEnabled=0) self.zoomSelectToolbar = OWToolbars.ZoomSelectToolbar( self, self.GeneralTab, self.graph, self.autoSendSelection, buttons=(1, 2, 0, 7, 8)) self.connect(self.zoomSelectToolbar.buttonSendSelections, SIGNAL("clicked()"), self.sendSelections) #connect controls to appropriate functions self.connect(self.graphButton, SIGNAL("clicked()"), self.graph.saveToFile) # #################################### # SETTINGS functionality box = OWGUI.widgetBox(self.SettingsTab, "Transparency") OWGUI.hSlider(box, self, 'graph.alphaValue', label="Examples: ", minValue=0, maxValue=255, step=10, callback=self.updateGraph, tooltip="Alpha value used for drawing example lines") OWGUI.hSlider( box, self, 'graph.alphaValue2', label="Rest: ", minValue=0, maxValue=255, step=10, callback=self.updateGraph, tooltip="Alpha value used to draw statistics, example subsets, ..." ) box = OWGUI.widgetBox(self.SettingsTab, "Jittering Options") OWGUI.comboBox(box, self, "graph.jitterSize", label='Jittering size (% of size): ', orientation='horizontal', callback=self.setJitteringSize, items=self.jitterSizeNums, sendSelectedValue=1, valueType=float) # visual settings box = OWGUI.widgetBox(self.SettingsTab, "Visual Settings") OWGUI.checkBox(box, self, 'graph.showAttrValues', 'Show attribute values', callback=self.updateGraph) OWGUI.checkBox(box, self, 'graph.useAntialiasing', 'Use antialiasing', callback=self.updateGraph) OWGUI.checkBox(box, self, 'graph.useSplines', 'Show splines', callback=self.updateGraph, tooltip="Show lines using splines") OWGUI.checkBox(box, self, 'graph.enabledLegend', 'Show legend', callback=self.updateGraph) box = OWGUI.widgetBox(self.SettingsTab, "Axis Distance") resizeColsBox = OWGUI.widgetBox(box, 0, "horizontal", 0) OWGUI.label(resizeColsBox, self, "Increase/decrease distance: ") OWGUI.toolButton(resizeColsBox, self, "+", callback=self.increaseAxesDistance, tooltip="Increase the distance between the axes", width=30, height=20) OWGUI.toolButton(resizeColsBox, self, "-", callback=self.decreaseAxesDistance, tooltip="Decrease the distance between the axes", width=30, height=20) OWGUI.rubber(resizeColsBox) OWGUI.checkBox( box, self, "graph.autoUpdateAxes", "Auto scale X axis", tooltip="Auto scale X axis to show all visualized attributes", callback=self.updateGraph) box = OWGUI.widgetBox(self.SettingsTab, "Statistical Information") OWGUI.comboBox( box, self, "graph.showStatistics", label="Statistics: ", orientation="horizontal", labelWidth=90, items=["No statistics", "Means, deviations", "Median, quartiles"], callback=self.updateGraph, sendSelectedValue=0, valueType=int) OWGUI.comboBox( box, self, "middleLabels", label="Middle labels: ", orientation="horizontal", labelWidth=90, items=["No labels", "Correlations", "VizRank"], callback=self.updateGraph, tooltip= "The information do you wish to view on top in the middle of coordinate axes", sendSelectedValue=1, valueType=str) OWGUI.checkBox( box, self, 'graph.showDistributions', 'Show distributions', callback=self.updateGraph, tooltip= "Show bars with distribution of class values (only for discrete attributes)" ) box = OWGUI.widgetBox(self.SettingsTab, "Colors", orientation="horizontal") OWGUI.button( box, self, "Set colors", self.setColors, tooltip= "Set the canvas background color and color palette for coloring continuous variables", debuggingEnabled=0) box = OWGUI.widgetBox(self.SettingsTab, "Auto Send Selected Data When...") OWGUI.checkBox( box, self, 'autoSendSelection', 'Adding/Removing selection areas', callback=self.selectionChanged, tooltip= "Send selected data whenever a selection area is added or removed") OWGUI.checkBox( box, self, 'graph.sendSelectionOnUpdate', 'Moving/Resizing selection areas', tooltip= "Send selected data when a user moves or resizes an existing selection area" ) self.graph.autoSendSelectionCallback = self.selectionChanged self.SettingsTab.layout().addStretch(100) self.icons = self.createAttributeIconDict() dlg = self.createColorDialog() self.graph.contPalette = dlg.getContinuousPalette("contPalette") self.graph.discPalette = dlg.getDiscretePalette("discPalette") self.graph.setCanvasBackground(dlg.getColor("Canvas")) apply([ self.zoomSelectToolbar.actionZooming, self.zoomSelectToolbar.actionRectangleSelection, self.zoomSelectToolbar.actionPolygonSelection ][self.toolbarSelection], []) self.cbShowAllAttributes() self.resize(900, 700)
def __init__(self, parent=None, signalManager=None, title="Gene Atlas Tissue Expression"): OWWidget.__init__(self, parent, signalManager, title) self.inputs = [("Example Table", Orange.data.Table, self.set_data)] self.outputs = [("Selected Genes", Orange.data.Table)] self.selected_organism = "H**o sapiens" self.selected_gene_attr = 0 self.genes_in_columns = False self.selected_ef = 0 self.selected_ef_value = 0 self.loadSettings() ##### # GUI ##### box = OWGUI.widgetBox(self.controlArea, "Info", addSpace=True) self.info_label = OWGUI.widgetLabel(box, "No data on input.\n") box = OWGUI.widgetBox(self.controlArea, "Organism", addSpace=True) cb = OWGUI.comboBox(box, self, "selected_organism", items=self.ORGANISMS, tooltip="Organism name", callback=self.on_organism_change, sendSelectedValue=True, valueType=str ) cb.setMaximumWidth(250) box = OWGUI.widgetBox(self.controlArea, "Gene Attribute", addSpace=True) self.gene_attr_cb = OWGUI.comboBox(box, self, "selected_gene_attr", tooltip="Attribute (column) containing the gene names.", callback=self.on_gene_attr_change, ) self.gene_attr_cb.setMaximumWidth(250) cb = OWGUI.checkBox(box, self, "genes_in_columns", "Use attribute names", tooltip="Gene names in columns.", callback=self.on_genes_change,) cb.disables.append((-1, self.gene_attr_cb)) cb.makeConsistent() box = OWGUI.widgetBox(self.controlArea, "Tissues", addSpace=True) self.categories_cb = OWGUI.comboBox(box, self, "selected_ef", box="Categories", items=self.FACTORS, tooltip="Experimental factor.", callback=self.on_ef_change, ) self.categories_cb.box.setFlat(True) self.values_cb = OWGUI.comboBox(box, self, "selected_ef_value", box="Values", tooltip="Experimental factor value.", callback=self.on_ef_value_change ) self.values_cb.setMaximumWidth(250) self.values_cb.box.setFlat(True) box = OWGUI.widgetBox(self.controlArea, "Cache", addSpace=True) OWGUI.button(box, self, "Clear cache", callback=self.on_cache_clear, tooltip="Clear Gene Atlas cache.") OWGUI.rubber(self.controlArea) OWGUI.button(self.controlArea, self, label="Commit", callback=self.commit, tooltip="Send selected genes") self.report_view = QTreeView(self.mainArea) self.report_view.setSelectionMode(QTreeView.ExtendedSelection) self.report_view.setSortingEnabled(True) self.report_view.setRootIsDecorated(False) self.report_view.setAlternatingRowColors(True) self.report_view.setEditTriggers(QTreeView.NoEditTriggers) self.mainArea.layout().addWidget(self.report_view) self.report_header = ["Gene symbol", "Up", "Down"] model = QStandardItemModel() model.setHorizontalHeaderLabels(self.report_header) self.report_view.setModel(model) self.data = None self.candidate_vars = [] self.candidate_var_names = [] self.results = {}, {}, {} self.ensembl_info = None self.gene_matcher = obiGene.GMDirect() self.loaded_matcher_taxid = None self.unknown_genes = [] self.query_genes = [] # self.set_organism(self.selected_organism, update_results=False) self.get_atlas_summary = obiGeneAtlas.get_atlas_summary #Cached construct_matcher @lru_cache(maxsize=3) def my_cached_matcher(org): return obiGeneAtlas.default_gene_matcher(org) self.construct_matcher = my_cached_matcher
def __init__(self, parallelWidget, parent=None, signalManager=None): OWWidget.__init__(self, parent, signalManager, "Parallel Optimization Dialog", False) self.setCaption("Parallel Optimization Dialog") self.parallelWidget = parallelWidget self.optimizationMeasure = 0 self.attributeCount = 5 self.numberOfAttributes = 6 self.fileName = "" self.lastSaveDirName = os.getcwd() + "/" self.fileBuffer = [] self.projections = [] self.allResults = [] self.canOptimize = 0 self.orderAllAttributes = 1 # do we wish to order all attributes or find just an interesting subset self.worstVal = -1 # used in heuristics to stop the search in uninteresting parts of the graph self.loadSettings() self.measureBox = OWGUI.radioButtonsInBox( self.controlArea, self, "optimizationMeasure", ["Correlation", "VizRank"], box="Select optimization measure", callback=self.updateGUI) self.vizrankSettingsBox = OWGUI.widgetBox(self.controlArea, "VizRank settings") self.optimizeBox = OWGUI.widgetBox(self.controlArea, "Optimize") self.manageBox = OWGUI.widgetBox(self.controlArea, "Manage results") self.resultsBox = OWGUI.widgetBox(self.mainArea, "Results") self.resultList = OWGUI.listBox(self.resultsBox, self) self.resultList.setMinimumSize(200, 200) self.connect(self.resultList, SIGNAL("itemSelectionChanged()"), self.showSelectedAttributes) # remove non-existing files names = [] for i in range(len(self.fileBuffer) - 1, -1, -1): (short, longName) = self.fileBuffer[i] if not os.path.exists(longName): self.fileBuffer.remove((short, longName)) else: names.append(short) names.append("(None)") self.fileName = "(None)" self.hbox1 = OWGUI.widgetBox(self.vizrankSettingsBox, "VizRank projections file", orientation="horizontal") self.vizrankFileCombo = OWGUI.comboBox( self.hbox1, self, "fileName", items=names, tooltip= "File that contains information about interestingness of scatterplots\n" "generated by VizRank method in scatterplot widget", callback=self.changeProjectionFile, sendSelectedValue=1, valueType=str) self.browseButton = OWGUI.button(self.hbox1, self, "...", callback=self.loadProjections) self.browseButton.setMaximumWidth(20) self.resultsInfoBox = OWGUI.widgetBox(self.vizrankSettingsBox, "VizRank parameters") self.kNeighborsLabel = OWGUI.widgetLabel(self.resultsInfoBox, "Number of neighbors (k):") self.percentDataUsedLabel = OWGUI.widgetLabel(self.resultsInfoBox, "Percent of data used:") self.testingMethodLabel = OWGUI.widgetLabel(self.resultsInfoBox, "Testing method used:") self.qualityMeasureLabel = OWGUI.widgetLabel(self.resultsInfoBox, "Quality measure used:") self.allAttributesRadio = QRadioButton("Order all attributes", self.optimizeBox) self.optimizeBox.layout().addWidget(self.allAttributesRadio) self.connect(self.allAttributesRadio, SIGNAL("clicked()"), self.setAllAttributeRadio) box = OWGUI.widgetBox(self.optimizeBox, orientation="horizontal") self.subsetAttributeRadio = QRadioButton("Find subsets of", box) box.layout().addWidget(self.subsetAttributeRadio) self.connect(self.subsetAttributeRadio, SIGNAL("clicked()"), self.setSubsetAttributeRadio) self.subsetAttributeEdit = OWGUI.lineEdit(box, self, "numberOfAttributes", valueType=int) self.subsetAttributeEdit.setMaximumWidth(30) OWGUI.widgetLabel(box, "attributes") self.startOptimizationButton = OWGUI.button( self.optimizeBox, self, "Start Optimization", callback=self.startOptimization) f = self.startOptimizationButton.font() f.setBold(1) self.startOptimizationButton.setFont(f) self.stopOptimizationButton = OWGUI.button( self.optimizeBox, self, "Stop Evaluation", callback=self.stopOptimizationClick) self.stopOptimizationButton.setFont(f) self.stopOptimizationButton.hide() self.connect(self.stopOptimizationButton, SIGNAL("clicked()"), self.stopOptimizationClick) self.clearButton = OWGUI.button(self.manageBox, self, "Clear Results", self.clearResults) self.loadButton = OWGUI.button(self.manageBox, self, "Load", self.loadResults) self.saveButton = OWGUI.button(self.manageBox, self, "Save", self.saveResults) self.closeButton = OWGUI.button(self.manageBox, self, "Close Dialog", self.hide) self.changeProjectionFile() self.updateGUI() if self.orderAllAttributes: self.setAllAttributeRadio() else: self.setSubsetAttributeRadio()
def __init__(self, parent=None, signalManager=None, name="Normalize Expression Array"): OWWidget.__init__(self, parent, signalManager, name, wantGraph=True) self.inputs = [("Expression array", ExampleTable, self.setData)] self.outputs = [("Normalized expression array", ExampleTable, Default), ("Filtered expression array", ExampleTable)] self.selectedGroup = 0 self.selectedCenterMethod = 0 self.selectedMergeMethod = 0 self.zCutoff = 1.96 self.appendZScore = False self.appendRIValues = False self.autoCommit = False self.loadSettings() ## GUI self.infoBox = OWGUI.widgetLabel(OWGUI.widgetBox(self.controlArea, "Info", addSpace=True), "No data on input.") box = OWGUI.widgetBox(self.controlArea, "Split by", addSpace=True) self.groupCombo = OWGUI.comboBox(box, self, "selectedGroup", callback=self.onGroupSelection ) self.centerCombo = OWGUI.comboBox(self.controlArea, self, "selectedCenterMethod", box="Center Fold-change Using", items=[name for name, _ in self.CENTER_METHODS], callback=self.onCenterMethodChange, addSpace=True ) self.mergeCombo = OWGUI.comboBox(self.controlArea, self, "selectedMergeMethod", box="Merge Replicates", items=[name for name, _ in self.MERGE_METHODS], tooltip="Select the method for replicate merging", callback=self.onMergeMethodChange, addSpace=True ) box = OWGUI.doubleSpin(self.controlArea, self, "zCutoff", 0.0, 3.0, 0.01, box="Z-Score Cutoff", callback=[self.replotMA, self.commitIf]) OWGUI.separator(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Ouput") OWGUI.checkBox(box, self, "appendZScore", "Append Z-Scores", tooltip="Append calculated Z-Scores to output", callback=self.commitIf ) OWGUI.checkBox(box, self, "appendRIValues", "Append Log Ratio and Intensity values", tooltip="Append calculated Log Ratio and Intensity values to output data", callback=self.commitIf ) cb = OWGUI.checkBox(box, self, "autoCommit", "Commit on change", tooltip="Commit data on any change", callback=self.commitIf ) b = OWGUI.button(box, self, "Commit", callback=self.commit) OWGUI.setStopper(self, b, cb, "changedFlag", callback=self.commit) self.connect(self.graphButton, SIGNAL("clicked()"), self.saveGraph) OWGUI.rubber(self.controlArea) self.graph = OWGraph(self.mainArea) self.graph.setAxisTitle(QwtPlot.xBottom, "Intensity: log<sub>10</sub>(R*G)") self.graph.setAxisTitle(QwtPlot.yLeft, "Log ratio: log<sub>2</sub>(R/G)") self.graph.showFilledSymbols = True self.mainArea.layout().addWidget(self.graph) self.groups = [] self.split_data = None, None self.merged_splits = None, None self.centered = None, None self.changedFlag = False self.data = None self.resize(800, 600)
def __init__(self, parent=None, signalManager=None, title="Molecule visualizer"): super(OWMoleculeVisualizer, self).__init__(parent, signalManager, title) self.colorFragments = 1 self.showFragments = 0 self.selectedFragment = "" self.moleculeSmiles = [] self.fragmentSmiles = [] self.defFragmentSmiles = [] self.smiles_var = 0 self.moleculeTitleAttr = 0 self.moleculeTitleAttributeList = [] self.selectedMoleculeTitleAttrs = [] self.fragmentSmilesAttr = 0 self.imageSize = 200 self.numColumns = 4 self.commitOnChange = 0 ## GUI box = OWGUI.widgetBox(self.controlArea, "Info", addSpace=True) self.infoLabel = OWGUI.label(box, self, "Chemicals:") box = OWGUI.radioButtonsInBox( self.controlArea, self, "showFragments", ["Show molecules", "Show fragments"], "Show", callback=self.updateitems ) self.showFragmentsRadioButton = box.buttons[-1] self.markFragmentsCheckBox = OWGUI.checkBox( box, self, "colorFragments", "Mark fragments", callback=self._update ) box.setSizePolicy( QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum)) OWGUI.separator(self.controlArea) self.moleculeSmilesCombo = OWGUI.comboBox( self.controlArea, self, "smiles_var", "Molecule SMILES Attribute", callback=self.updateitems ) self.moleculeSmilesCombo.box.setSizePolicy( QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum) ) self.smiles_var_model = VariableListModel(parent=self) self.moleculeSmilesCombo.setModel(self.smiles_var_model) OWGUI.separator(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Molecule Title Attributes", addSpace=True) self.title_var_view = QListView( selectionMode=QListView.ExtendedSelection ) self.title_var_model = VariableListModel(parent=self) self.title_var_view.setModel(self.title_var_model) self.title_var_view.selectionModel().selectionChanged.connect( self._title_selection_changed ) box.layout().addWidget(self.title_var_view) OWGUI.separator(self.controlArea) self.fragmentSmilesCombo = OWGUI.comboBox( self.controlArea, self, "fragmentSmilesAttr", "Fragment SMILES Attribute", callback=self.updateFragmentsListBox ) self.fragmentSmilesCombo.setModel(VariableListModel(parent=self)) self.fragmentSmilesCombo.box.setSizePolicy( QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum) ) OWGUI.separator(self.controlArea) box = OWGUI.spin(self.controlArea, self, "imageSize", 50, 500, 10, box="Image Size", callback=self._image_size_changed) box.setSizePolicy( QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum)) OWGUI.separator(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Selection", addSpace=True) OWGUI.checkBox(box, self, "commitOnChange", "Commit on change") self.selectMarkedMoleculesButton = OWGUI.button( box, self, "Select &matched molecules", self.select_marked ) OWGUI.button(box, self, "&Commit", callback=self.commit, default=True) OWGUI.separator(self.controlArea) OWGUI.rubber(self.controlArea) spliter = QSplitter(Qt.Vertical) self.scrollArea = ScrollArea(spliter) self.grid = GridWidget() self.grid.selectionChanged.connect(self._on_selection_changed) self.scrollArea.setWidget(self.grid) self.scrollArea.setWidgetResizable(True) self.mainArea.layout().addWidget(spliter) if pybel: self.listBox = QListWidget(spliter) else: self.listBox = QListWidget(None) self.listBox.setHidden(True) self.listBox.itemClicked.connect(self.fragmentSelection) self.fragmentSmilesCombo.box.setDisabled(not pybel) self.data = None self.data_subset = [] self.fragment_data = None self.resize(800, 600) self.listBox.setMaximumHeight(150) self.fragmentSmilesCombo.setDisabled(True) self.selectMarkedMoleculesButton.setDisabled(True) self.markFragmentsCheckBox.setDisabled(True) self.showFragmentsRadioButton.setDisabled(True) self.loadSettings() if not pybel: self.showFragments = 0 self.warning(10, "Pybel module not installed. To view molecule fragments\n" "please install openbabel python extension.") self.__loop = None
def __init__(self, parent=None, signalManager=None, title="Quality Control"): OWWidget.__init__(self, parent, signalManager, title, wantGraph=True) self.inputs = [("Experiment Data", Orange.data.Table, self.set_data)] ## Settings self.selected_distance_index = 0 ## Attributes self.data = None self.distances = None self.groups = None self.unique_pos = None self.base_group_index = 0 ## GUI box = OWGUI.widgetBox(self.controlArea, "Info") self.info_box = OWGUI.widgetLabel(box, "\n") ## Separate By box box = OWGUI.widgetBox(self.controlArea, "Separate By") self.split_by_model = PyListModel() self.split_by_view = QListView() self.split_by_view.setSelectionMode(QListView.ExtendedSelection) self.split_by_view.setModel(self.split_by_model) box.layout().addWidget(self.split_by_view) self.connect( self.split_by_view.selectionModel(), SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self.on_split_key_changed) ## Sort By box box = OWGUI.widgetBox(self.controlArea, "Sort By") self.sort_by_model = PyListModel() self.sort_by_view = QListView() self.sort_by_view.setSelectionMode(QListView.ExtendedSelection) self.sort_by_view.setModel(self.sort_by_model) box.layout().addWidget(self.sort_by_view) self.connect( self.sort_by_view.selectionModel(), SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self.on_sort_key_changed) ## Distance box box = OWGUI.widgetBox(self.controlArea, "Distance Measure") OWGUI.comboBox(box, self, "selected_distance_index", items=[t[0] for t in self.DISTANCE_FUNCTIONS], callback=self.on_distance_measure_changed) self.connect(self.graphButton, SIGNAL("clicked()"), self.save_graph) self.scene = QGraphicsScene() self.scene_view = QualityGraphicsView(self.scene) self.scene_view.setRenderHints(QPainter.Antialiasing) self.scene_view.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) self.mainArea.layout().addWidget(self.scene_view) self.connect(self.scene_view, SIGNAL("view_size_changed(QSize)"), self.on_view_resize) self._disable_updates = False self._cached_distances = {} self._base_index_hints = {} self.main_widget = None self.resize(800, 600)
def __init__(self, parent=None, signalManager=None, title="Expression Profile Distances"): OWWidget.__init__(self, parent, signalManager, title) self.inputs = [("Example Table", ExampleTable, self.set_data)] self.outputs = [("Distances", Orange.core.SymMatrix), ("Sorted Example Table", ExampleTable)] self.distance_measure = 0 self.auto_commit = False self.changed_flag = False self.loadSettings() ######## # GUI ######## self.info_box = OWGUI.widgetLabel( OWGUI.widgetBox(self.controlArea, "Input", addSpace=True), "No data on input\n") box = OWGUI.widgetBox(self.controlArea, "Separate By", addSpace=True) self.separate_view = QListView() self.separate_view.setSelectionMode(QListView.MultiSelection) box.layout().addWidget(self.separate_view) box = OWGUI.widgetBox(self.controlArea, "Sort By", addSpace=True) self.relevant_view = QListView() self.relevant_view.setSelectionMode(QListView.MultiSelection) box.layout().addWidget(self.relevant_view) self.distance_view = OWGUI.comboBox( self.controlArea, self, "distance_measure", box="Distance Measure", items=[d[0] for d in self.DISTANCE_FUNCTIONS]) OWGUI.rubber(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Commit") cb = OWGUI.checkBox( box, self, "auto_commit", "Commit on any change", tooltip="Compute and send the distances on any change.", callback=self.commit_if) b = OWGUI.button( box, self, "Commit", tooltip="Compute the distances and send the output signals.", callback=self.commit, default=True) OWGUI.setStopper(self, b, cb, "changed_flag", callback=self.commit) self.groups_box = OWGUI.widgetBox(self.mainArea, "Groups") self.groups_scroll_area = QScrollArea() self.groups_box.layout().addWidget(self.groups_scroll_area) self.data = None self.partitions = [] self.matrix = None self.split_groups = [] self._disable_updates = False self.resize(800, 600)
def __init__(self, parent=None, signalManager=None, title="Gene Network"): super(OWGeneNetwork, self).__init__( parent, signalManager, title, wantMainArea=False, resizingEnabled=False ) self.taxid = "9606" self.gene_var_index = -1 self.use_attr_names = False self.network_source = 1 self.include_neighborhood = True self.autocommit = False self.min_score = 0.9 self.loadSettings() self.taxids = taxonomy.common_taxids() self.current_taxid_index = self.taxids.index(self.taxid) self.data = None self.geneinfo = None self.nettask = None self._invalidated = False box = OWGUI.widgetBox(self.controlArea, "Info") self.info = OWGUI.widgetLabel(box, "No data on input\n") box = OWGUI.widgetBox(self.controlArea, "Organism") self.organism_cb = OWGUI.comboBox( box, self, "current_taxid_index", items=map(taxonomy.name, self.taxids), callback=self._update_organism ) box = OWGUI.widgetBox(self.controlArea, "Genes") self.genes_cb = OWGUI.comboBox( box, self, "gene_var_index", callback=self._update_query_genes ) self.varmodel = OWItemModels.VariableListModel() self.genes_cb.setModel(self.varmodel) OWGUI.checkBox( box, self, "use_attr_names", "Use attribute names", callback=self._update_query_genes ) box = OWGUI.widgetBox(self.controlArea, "Network") OWGUI.comboBox( box, self, "network_source", items=[s.name for s in SOURCES], callback=self._on_source_db_changed ) OWGUI.checkBox( box, self, "include_neighborhood", "Include immediate gene neighbors", callback=self.invalidate ) self.score_spin = OWGUI.doubleSpin( box, self, "min_score", 0.0, 1.0, step=0.001, label="Minimal edge score", callback=self.invalidate ) self.score_spin.setEnabled(SOURCES[self.network_source].score_filter) box = OWGUI.widgetBox(self.controlArea, "Commit") OWGUI.button(box, self, "Commit", callback=self.commit, default=True) self.executor = ThreadExecutor()
def __init__(self, parent=None, signalManager=None): # self.callbackDeposit = [] # deposit for OWGUI callback functions OWWidget.__init__(self, parent, signalManager, 'Expression Profiles', 1) #set default settings self.ShowAverageProfile = 1 self.ShowSingleProfiles = 0 self.PointWidth = 2 self.CurveWidth = 1 self.AverageCurveWidth = 4 self.BoxPlotWidth = 2 self.SelectedClasses = [] self.Classes = [] self.autoSendSelected = 0 self.selectionChangedFlag = False self.CutLow = 0 self.CutHigh = 0 self.CutEnabled = 0 self.profileLabel = None #load settings self.loadSettings() # GUI self.graph = profilesGraph(self, self.mainArea, "") self.mainArea.layout().addWidget(self.graph) self.graph.hide() self.connect(self.graphButton, SIGNAL("clicked()"), self.graph.saveToFile) # GUI definition self.tabs = OWGUI.tabWidget(self.space) # GRAPH TAB GraphTab = OWGUI.createTabPage(self.tabs, "Graph") ## display options self.infoLabel = OWGUI.widgetLabel(OWGUI.widgetBox(GraphTab, "Info"), "No data on input.") displayOptBox = OWGUI.widgetBox( GraphTab, "Display") #QVButtonGroup("Display", GraphTab) displayOptButtons = [ 'Majority Class', 'Majority Class Probability', 'Target Class Probability', 'Number of Instances' ] OWGUI.checkBox(displayOptBox, self, 'ShowSingleProfiles', 'Expression Profiles', tooltip='', callback=self.updateShowSingleProfiles) OWGUI.checkBox(displayOptBox, self, 'ShowAverageProfile', 'Box Plot', tooltip='', callback=self.updateShowAverageProfile) ## class selection (classQLB) self.classQVGB = OWGUI.widgetBox(GraphTab, "Classes") #QVGroupBox(GraphTab) ## self.classQVGB.setTitle("Classes") self.classQLB = OWGUI.listBox( self.classQVGB, self, "SelectedClasses", "Classes", selectionMode=QListWidget.MultiSelection, callback=self.classSelectionChange) #QListBox(self.classQVGB) ## self.classQLB.setSelectionMode(QListBox.Multi) self.unselectAllClassedQLB = OWGUI.button( self.classQVGB, self, "Unselect all", callback=self.SUAclassQLB ) #QPushButton("(Un)Select All", self.classQVGB) ## self.connect(self.unselectAllClassedQLB, SIGNAL("clicked()"), self.SUAclassQLB) ## self.connect(self.classQLB, SIGNAL("selectionChanged()"), self.classSelectionChange) ## show single/average profile ## self.showAverageQLB = QPushButton("Box Plot", self.classQVGB) ## self.showAverageQLB.setToggleButton(1) ## self.showAverageQLB.setOn(self.ShowAverageProfile) ## self.showSingleQLB = QPushButton("Single Profiles", self.classQVGB) ## self.showSingleQLB.setToggleButton(1) ## self.showSingleQLB.setOn(self.ShowSingleProfiles) ## self.connect(self.showAverageQLB, SIGNAL("toggled(bool)"), self.updateShowAverageProfile) ## self.connect(self.showSingleQLB, SIGNAL("toggled(bool)"), self.updateShowSingleProfiles) ## self.tabs.insertTab(GraphTab, "Graph") # SETTINGS TAB SettingsTab = OWGUI.createTabPage(self.tabs, "Settings") #QVGroupBox(self) self.profileLabelComboBox = OWGUI.comboBox(SettingsTab, self, 'profileLabel', 'Profile Labels', sendSelectedValue=True, valueType=str) OWGUI.hSlider(SettingsTab, self, 'PointWidth', box='Point Width', minValue=0, maxValue=9, step=1, callback=self.updatePointWidth, ticks=1) OWGUI.hSlider(SettingsTab, self, 'CurveWidth', box='Profile Width', minValue=1, maxValue=9, step=1, callback=self.updateCurveWidth, ticks=1) OWGUI.hSlider(SettingsTab, self, 'AverageCurveWidth', box='Average Profile Width', minValue=1, maxValue=9, step=1, callback=self.updateAverageCurveWidth, ticks=1) OWGUI.hSlider(SettingsTab, self, 'BoxPlotWidth', box='Box Plot Width', minValue=0, maxValue=9, step=1, callback=self.updateBoxPlotWidth, ticks=1) OWGUI.checkBox(SettingsTab, self, 'graph.renderAntialiased', "Render antialiased", callback=self.graph.setCurveRenderHints) ## graph y scale box = OWGUI.widgetBox( SettingsTab, "Threshold/ Values" ) #QVButtonGroup("Threshol/ Values", SettingsTab) OWGUI.checkBox(box, self, 'CutEnabled', "Enabled", callback=self.setCutEnabled) self.sliderCutLow = OWGUI.qwtHSlider(box, self, 'CutLow', label='Low:', labelWidth=33, minValue=-20, maxValue=0, step=0.1, precision=1, ticks=0, maxWidth=80, callback=self.updateYaxis) self.sliderCutHigh = OWGUI.qwtHSlider(box, self, 'CutHigh', label='High:', labelWidth=33, minValue=0, maxValue=20, step=0.1, precision=1, ticks=0, maxWidth=80, callback=self.updateYaxis) if not self.CutEnabled: self.sliderCutLow.box.setDisabled(1) self.sliderCutHigh.box.setDisabled(1) ## self.tabs.insertTab(SettingsTab, "Settings") self.toolbarSelection = ZoomSelectToolbar( self, self.controlArea, self.graph, self.autoSendSelected, buttons=(ZoomSelectToolbar.IconZoom, ZoomSelectToolbar.IconPan, ZoomSelectToolbar.IconSelect, ZoomSelectToolbar.IconSpace, ZoomSelectToolbar.IconRemoveLast, ZoomSelectToolbar.IconRemoveAll, ZoomSelectToolbar.IconSendSelection)) cb = OWGUI.checkBox(self.controlArea, self, "autoSendSelected", "Auto send on selection change") OWGUI.setStopper(self, self.toolbarSelection.buttonSendSelections, cb, "selectionChangedFlag", self.commit) # inputs # data and graph temp variables self.inputs = [("Examples", ExampleTable, self.data, Default + Multiple)] self.outputs = [("Examples", ExampleTable, Default)] # temp variables self.MAdata = [] self.classColor = None self.classBrighterColor = None self.numberOfClasses = 0 self.classValues = [] self.ctrlPressed = False self.attrIcons = self.createAttributeIconDict() self.graph.canvas().setMouseTracking(1) # self.zoomStack = [] ## self.connect(self.graph, ## SIGNAL('plotMousePressed(const QMouseEvent&)'), ## self.onMousePressed) ## self.connect(self.graph, ## SIGNAL('plotMouseReleased(const QMouseEvent&)'), ## self.onMouseReleased) self.resize(800, 600)
def __init__(self, parent=None, signalManager=None, name="KEGG Pathways"): OWWidget.__init__(self, parent, signalManager, name, wantGraph=True) self.inputs = [("Examples", Orange.data.Table, self.SetData), ("Reference", Orange.data.Table, self.SetRefData)] self.outputs = [("Selected Examples", Orange.data.Table), ("Unselected Examples", Orange.data.Table)] self.organismIndex = 0 self.geneAttrIndex = 0 self.autoCommit = False self.autoResize = True self.useReference = False self.useAttrNames = 0 self.showOrthology = True self.loadSettings() self.organismCodes = [] self._changedFlag = False self.controlArea.setMaximumWidth(250) box = OWGUI.widgetBox(self.controlArea, "Info") self.infoLabel = OWGUI.widgetLabel(box, "No data on input\n") # Organism selection. box = OWGUI.widgetBox(self.controlArea, "Organism") self.organismComboBox = OWGUI.comboBox( box, self, "organismIndex", items=[], callback=self.Update, addSpace=True, debuggingEnabled=0, tooltip="Select the organism of the input genes") # Selection of genes attribute box = OWGUI.widgetBox(self.controlArea, "Gene attribute") self.geneAttrCandidates = VariableListModel(parent=self) self.geneAttrCombo = OWGUI.comboBox( box, self, "geneAttrIndex", callback=self.Update) self.geneAttrCombo.setModel(self.geneAttrCandidates) OWGUI.checkBox(box, self, "useAttrNames", "Use variable names", disables=[(-1, self.geneAttrCombo)], callback=self.Update) self.geneAttrCombo.setDisabled(bool(self.useAttrNames)) OWGUI.separator(self.controlArea) OWGUI.checkBox(self.controlArea, self, "useReference", "From signal", box="Reference", callback=self.Update) OWGUI.separator(self.controlArea) OWGUI.checkBox(self.controlArea, self, "showOrthology", "Show pathways in full orthology", box="Orthology", callback=self.UpdateListView) OWGUI.checkBox(self.controlArea, self, "autoResize", "Resize to fit", box="Image", callback=self.UpdatePathwayViewTransform) box = OWGUI.widgetBox(self.controlArea, "Cache Control") OWGUI.button(box, self, "Clear cache", callback=self.ClearCache, tooltip="Clear all locally cached KEGG data.") OWGUI.separator(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Selection") cb = OWGUI.checkBox(box, self, "autoCommit", "Commit on update") button = OWGUI.button(box, self, "Commit", callback=self.Commit, default=True) OWGUI.setStopper(self, button, cb, "_changedFlag", self.Commit) OWGUI.rubber(self.controlArea) spliter = QSplitter(Qt.Vertical, self.mainArea) self.pathwayView = PathwayView(self, spliter) self.pathwayView.scene().selectionChanged.connect( self._onSelectionChanged ) self.mainArea.layout().addWidget(spliter) self.listView = QTreeWidget(spliter) spliter.addWidget(self.listView) self.listView.setAllColumnsShowFocus(1) self.listView.setColumnCount(4) self.listView.setHeaderLabels(["Pathway", "P value", "Genes", "Reference"]) self.listView.setSelectionMode(QTreeWidget.SingleSelection) self.listView.setSortingEnabled(True) self.listView.setMaximumHeight(200) self.connect(self.listView, SIGNAL("itemSelectionChanged()"), self.UpdatePathwayView) self.connect(self.graphButton, SIGNAL("clicked()"), self.saveGraph) select = QAction( "Select All", self, shortcut=QKeySequence.SelectAll ) select.triggered.connect(self.selectAll) self.addAction(select) self.data = None self.refData = None self.resize(800, 600) self.connect(self, SIGNAL("widgetStateChanged(QString, int, QString)"), self.onStateChange) self.has_new_data = False self.has_new_reference_set = False self._executor = ThreadExecutor() self.setEnabled(False) self.setBlocking(True) QTimer.singleShot(0, self._initialize) self.infoLabel.setText("Fetching organism definitions\n")
def __init__(self, parent=None, signalManager=None, name="Normalize Expression Array"): OWWidget.__init__(self, parent, signalManager, name, wantGraph=True) self.inputs = [("Expression array", ExampleTable, self.setData)] self.outputs = [("Normalized expression array", ExampleTable, Default), ("Filtered expression array", ExampleTable)] self.selectedGroup = 0 self.selectedCenterMethod = 0 self.selectedMergeMethod = 0 self.zCutoff = 1.96 self.appendZScore = False self.appendRIValues = False self.autoCommit = False self.loadSettings() ## GUI self.infoBox = OWGUI.widgetLabel( OWGUI.widgetBox(self.controlArea, "Info", addSpace=True), "No data on input.") box = OWGUI.widgetBox(self.controlArea, "Split by", addSpace=True) self.groupCombo = OWGUI.comboBox(box, self, "selectedGroup", callback=self.onGroupSelection) self.centerCombo = OWGUI.comboBox( self.controlArea, self, "selectedCenterMethod", box="Center Fold-change Using", items=[name for name, _ in self.CENTER_METHODS], callback=self.onCenterMethodChange, addSpace=True) self.mergeCombo = OWGUI.comboBox( self.controlArea, self, "selectedMergeMethod", box="Merge Replicates", items=[name for name, _ in self.MERGE_METHODS], tooltip="Select the method for replicate merging", callback=self.onMergeMethodChange, addSpace=True) box = OWGUI.doubleSpin(self.controlArea, self, "zCutoff", 0.0, 3.0, 0.01, box="Z-Score Cutoff", callback=[self.replotMA, self.commitIf]) OWGUI.separator(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Ouput") OWGUI.checkBox(box, self, "appendZScore", "Append Z-Scores", tooltip="Append calculated Z-Scores to output", callback=self.commitIf) OWGUI.checkBox( box, self, "appendRIValues", "Append Log Ratio and Intensity values", tooltip= "Append calculated Log Ratio and Intensity values to output data", callback=self.commitIf) cb = OWGUI.checkBox(box, self, "autoCommit", "Commit on change", tooltip="Commit data on any change", callback=self.commitIf) b = OWGUI.button(box, self, "Commit", callback=self.commit) OWGUI.setStopper(self, b, cb, "changedFlag", callback=self.commit) self.connect(self.graphButton, SIGNAL("clicked()"), self.saveGraph) OWGUI.rubber(self.controlArea) self.graph = OWGraph(self.mainArea) self.graph.setAxisTitle(QwtPlot.xBottom, "Intensity: log<sub>10</sub>(R*G)") self.graph.setAxisTitle(QwtPlot.yLeft, "Log ratio: log<sub>2</sub>(R/G)") self.graph.showFilledSymbols = True self.mainArea.layout().addWidget(self.graph) self.groups = [] self.split_data = None, None self.merged_splits = None, None self.centered = None, None self.changedFlag = False self.data = None self.resize(800, 600)
def __init__(self, parent=None, signalManager=None): OWWidget.__init__(self, parent, signalManager, "&Display Motifs", 0) # set default settings self.colorBy = None self.pvalThresholdIndex = None self.pvalThreshold = None #load settings self.loadSettings() # GUI self.graph = OWGraph(self.mainArea) self.graph.setYRlabels(None) self.graph.enableGridXB(0) self.graph.enableGridYL(1) self.graph.setAxisMaxMinor(QwtPlot.xBottom, 10) self.graph.setAxisMaxMajor(QwtPlot.xBottom, 10) self.graph.setAxisAutoScale(QwtPlot.xBottom) self.graph.setAxisScale(QwtPlot.xBottom, -1020, 0, 0) self.mainArea.layout().addWidget(self.graph) # inputs # data and graph temp variables self.inputs = [("Examples", ExampleTable, self.cdata, Default), ("Genes", list, self.newGeneList, Default), ("Motifs", list, self.newMotifList, Default)] self.data = None self.motifLines = [] self.visibleValues = [] self.valueToCurve = {} self.allGenes = [] ## genes displayed always in same order self.geneList = [] ## selected genes self.motifList = [] ## selected motifs self.valuesPresentInData = [] self.clusterPostProbThreshold = 0 # GUI self.selValues = OWGUI.widgetBox(self.controlArea, "Values") self.selcolorBy = OWGUI.widgetBox(self.controlArea, "Color By") self.colorByCombo = OWGUI.comboBox(self.selcolorBy, self, "colorBy", items=[], callback=self.colorByChanged) self.pvalThresholdCombo = OWGUI.comboBox( self.selValues, self, "pvalThresholdIndex", items=[], callback=self.pvalThresholdChanged) self.valuesQLB = QListWidget(self.selValues) self.valuesQLB.setSelectionMode(QListWidget.MultiSelection) self.connect(self.valuesQLB, SIGNAL("itemSelectionChanged()"), self.valuesSelectionChange) self.selValues.layout().addWidget(self.valuesQLB) self.unselectAllQLB = OWGUI.button(self.selValues, self, "Unselect all", callback=self.unselAll)
def __init__(self,parent=None, signalManager = None): OWWidget.__init__(self, parent, signalManager, "Nomogram", 1) #self.setWFlags(Qt.WResizeNoErase | Qt.WRepaintNoErase) #this works like magic.. no flicker during repaint! self.parent = parent # self.setWFlags(self.getWFlags()+Qt.WStyle_Maximize) self.callbackDeposit = [] # deposit for OWGUI callback functions self.alignType = 0 self.contType = 0 self.yAxis = 0 self.probability = 0 self.verticalSpacing = 60 self.verticalSpacingContinuous = 100 self.diff_between_ordinal = 30 self.fontSize = 9 self.lineWidth = 1 self.histogram = 0 self.histogram_size = 10 self.data = None self.cl = None self.confidence_check = 0 self.confidence_percent = 95 self.sort_type = 0 self.loadSettings() self.pointsName = ["Total", "Total"] self.totalPointsName = ["Probability", "Probability"] self.bnomogram = None self.inputs=[("Classifier", orange.Classifier, self.classifier), ("Data", Orange.data.Table, self.data)] self.TargetClassIndex = 0 self.targetCombo = OWGUI.comboBox(self.controlArea, self, "TargetClassIndex", " Target Class ", addSpace=True, tooltip='Select target (prediction) class in the model.', callback = self.setTarget) self.alignRadio = OWGUI.radioButtonsInBox(self.controlArea, self, 'alignType', ['Align left', 'Align by zero influence'], box='Attribute placement', tooltips=['Attributes in nomogram are left aligned', 'Attributes are not aligned, top scale represents true (normalized) regression coefficient value'], addSpace=True, callback=self.showNomogram) self.verticalSpacingLabel = OWGUI.spin(self.alignRadio, self, 'verticalSpacing', 15, 200, label = 'Vertical spacing:', orientation = 0, tooltip='Define space (pixels) between adjacent attributes.', callback = self.showNomogram) self.ContRadio = OWGUI.radioButtonsInBox(self.controlArea, self, 'contType', ['1D projection', '2D curve'], 'Continuous attributes', tooltips=['Continuous attribute are presented on a single scale', 'Two dimensional space is used to present continuous attributes in nomogram.'], addSpace=True, callback=[lambda:self.verticalSpacingContLabel.setDisabled(not self.contType), self.showNomogram]) self.verticalSpacingContLabel = OWGUI.spin(OWGUI.indentedBox(self.ContRadio, sep=OWGUI.checkButtonOffsetHint(self.ContRadio.buttons[-1])), self, 'verticalSpacingContinuous', 15, 200, label = "Height", orientation=0, tooltip='Define space (pixels) between adjacent 2d presentation of attributes.', callback = self.showNomogram) self.verticalSpacingContLabel.setDisabled(not self.contType) self.yAxisRadio = OWGUI.radioButtonsInBox(self.controlArea, self, 'yAxis', ['Point scale', 'Log odds ratios'], 'Scale', tooltips=['values are normalized on a 0-100 point scale','values on top axis show log-linear contribution of attribute to full model'], addSpace=True, callback=self.showNomogram) layoutBox = OWGUI.widgetBox(self.controlArea, "Display", orientation=1, addSpace=True) self.probabilityCheck = OWGUI.checkBox(layoutBox, self, 'probability', 'Show prediction', tooltip='', callback = self.setProbability) self.CICheck, self.CILabel = OWGUI.checkWithSpin(layoutBox, self, 'Confidence intervals (%):', min=1, max=99, step = 1, checked='confidence_check', value='confidence_percent', checkCallback=self.showNomogram, spinCallback = self.showNomogram) self.histogramCheck, self.histogramLabel = OWGUI.checkWithSpin(layoutBox, self, 'Show histogram, size', min=1, max=30, checked='histogram', value='histogram_size', step = 1, tooltip='-(TODO)-', checkCallback=self.showNomogram, spinCallback = self.showNomogram) OWGUI.separator(layoutBox) self.sortOptions = ["No sorting", "Absolute importance", "Positive influence", "Negative influence"] self.sortBox = OWGUI.comboBox(layoutBox, self, "sort_type", label="Sort by ", items=self.sortOptions, callback = self.sortNomogram, orientation="horizontal") OWGUI.rubber(self.controlArea) self.connect(self.graphButton, SIGNAL("clicked()"), self.menuItemPrinter) #add a graph widget self.header = OWNomogramHeader(None, self.mainArea) self.header.setFixedHeight(60) self.header.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.header.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.graph = OWNomogramGraph(self.bnomogram, self.mainArea) self.graph.setMinimumWidth(200) self.graph.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.footer = OWNomogramHeader(None, self.mainArea) self.footer.setFixedHeight(60*2+10) self.footer.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.footer.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.mainArea.layout().addWidget(self.header) self.mainArea.layout().addWidget(self.graph) self.mainArea.layout().addWidget(self.footer) self.resize(700,500) #self.repaint() #self.update() # mouse pressed flag self.mousepr = False
def __init__(self, parent=None, signalManager=None, title="Gene Atlas Tissue Expression"): OWWidget.__init__(self, parent, signalManager, title) self.inputs = [("Example Table", Orange.data.Table, self.set_data)] self.outputs = [("Selected Genes", Orange.data.Table)] self.selected_organism = "H**o sapiens" self.selected_gene_attr = 0 self.genes_in_columns = False self.selected_ef = 0 self.selected_ef_value = 0 self.loadSettings() ##### # GUI ##### box = OWGUI.widgetBox(self.controlArea, "Info", addSpace=True) self.info_label = OWGUI.widgetLabel(box, "No data on input.\n") box = OWGUI.widgetBox(self.controlArea, "Organism", addSpace=True) cb = OWGUI.comboBox(box, self, "selected_organism", items=self.ORGANISMS, tooltip="Organism name", callback=self.on_organism_change, sendSelectedValue=True, valueType=str) cb.setMaximumWidth(250) box = OWGUI.widgetBox(self.controlArea, "Gene Attribute", addSpace=True) self.gene_attr_cb = OWGUI.comboBox( box, self, "selected_gene_attr", tooltip="Attribute (column) containing the gene names.", callback=self.on_gene_attr_change, ) self.gene_attr_cb.setMaximumWidth(250) cb = OWGUI.checkBox( box, self, "genes_in_columns", "Use attribute names", tooltip="Gene names in columns.", callback=self.on_genes_change, ) cb.disables.append((-1, self.gene_attr_cb)) cb.makeConsistent() box = OWGUI.widgetBox(self.controlArea, "Tissues", addSpace=True) self.categories_cb = OWGUI.comboBox( box, self, "selected_ef", box="Categories", items=self.FACTORS, tooltip="Experimental factor.", callback=self.on_ef_change, ) self.categories_cb.box.setFlat(True) self.values_cb = OWGUI.comboBox(box, self, "selected_ef_value", box="Values", tooltip="Experimental factor value.", callback=self.on_ef_value_change) self.values_cb.setMaximumWidth(250) self.values_cb.box.setFlat(True) box = OWGUI.widgetBox(self.controlArea, "Cache", addSpace=True) OWGUI.button(box, self, "Clear cache", callback=self.on_cache_clear, tooltip="Clear Gene Atlas cache.") OWGUI.rubber(self.controlArea) OWGUI.button(self.controlArea, self, label="Commit", callback=self.commit, tooltip="Send selected genes") self.report_view = QTreeView(self.mainArea) self.report_view.setSelectionMode(QTreeView.ExtendedSelection) self.report_view.setSortingEnabled(True) self.report_view.setRootIsDecorated(False) self.report_view.setAlternatingRowColors(True) self.report_view.setEditTriggers(QTreeView.NoEditTriggers) self.mainArea.layout().addWidget(self.report_view) self.report_header = ["Gene symbol", "Up", "Down"] model = QStandardItemModel() model.setHorizontalHeaderLabels(self.report_header) self.report_view.setModel(model) self.data = None self.candidate_vars = [] self.candidate_var_names = [] self.results = {}, {}, {} self.ensembl_info = None self.gene_matcher = obiGene.GMDirect() self.loaded_matcher_taxid = None self.unknown_genes = [] self.query_genes = [] # self.set_organism(self.selected_organism, update_results=False) self.get_atlas_summary = obiGeneAtlas.get_atlas_summary #Cached construct_matcher @lru_cache(maxsize=3) def my_cached_matcher(org): return obiGeneAtlas.default_gene_matcher(org) self.construct_matcher = my_cached_matcher
def __init__(self, parent=None, signalManager=None, name="Gene Info"): OWWidget.__init__(self, parent, signalManager, name) self.inputs = [("Examples", Orange.data.Table, self.setData)] self.outputs = [("Selected Examples", Orange.data.Table)] self.organismIndex = 0 self.taxid = None self.geneAttr = 0 self.useAttr = False self.autoCommit = False self.searchString = "" self.selectionChangedFlag = False self.useAltSource = 0 self.loadSettings() self.__initialized = False self.initfuture = None self.itemsfuture = None self.infoLabel = OWGUI.widgetLabel( OWGUI.widgetBox(self.controlArea, "Info", addSpace=True), "Initializing\n" ) self.organisms = None self.organismBox = OWGUI.widgetBox( self.controlArea, "Organism", addSpace=True) self.organismComboBox = OWGUI.comboBox( self.organismBox, self, "organismIndex", callback=self._onSelectedOrganismChanged, debuggingEnabled=0) # For now only support one alt source, with a checkbox # In the future this can be extended to multiple selections self.altSourceCheck = OWGUI.checkBox(self.organismBox, self, "useAltSource", "Show information from dictyBase", callback=self.onAltSourceChange, # debuggingEnabled=0, ) self.altSourceCheck.hide() box = OWGUI.widgetBox(self.controlArea, "Gene names", addSpace=True) self.geneAttrComboBox = OWGUI.comboBox( box, self, "geneAttr", "Gene atttibute", callback=self.updateInfoItems ) OWGUI.checkBox(box, self, "useAttr", "Use attribute names", callback=self.updateInfoItems, disables=[(-1, self.geneAttrComboBox)]) self.geneAttrComboBox.setDisabled(bool(self.useAttr)) box = OWGUI.widgetBox(self.controlArea, "Commit", addSpace=True) b = OWGUI.button(box, self, "Commit", callback=self.commit) c = OWGUI.checkBox(box, self, "autoCommit", "Commit on change") OWGUI.setStopper(self, b, c, "selectionChangedFlag", callback=self.commit) # A label for dictyExpress link self.dictyExpressBox = OWGUI.widgetBox( self.controlArea, "Dicty Express") self.linkLabel = OWGUI.widgetLabel(self.dictyExpressBox, "") self.linkLabel.setOpenExternalLinks(False) self.connect(self.linkLabel, SIGNAL("linkActivated(QString)"), self.onDictyExpressLink) self.dictyExpressBox.hide() OWGUI.rubber(self.controlArea) OWGUI.lineEdit(self.mainArea, self, "searchString", "Filter", callbackOnType=True, callback=self.searchUpdate) self.treeWidget = QTreeView(self.mainArea) self.treeWidget.setRootIsDecorated(False) self.treeWidget.setSelectionMode( QAbstractItemView.ExtendedSelection) self.treeWidget.setItemDelegate( LinkStyledItemDelegate(self.treeWidget)) self.treeWidget.setUniformRowHeights(True) self.treeWidget.viewport().setMouseTracking(True) self.treeWidget.setSortingEnabled(True) self.mainArea.layout().addWidget(self.treeWidget) box = OWGUI.widgetBox(self.mainArea, "", orientation="horizontal") OWGUI.button(box, self, "Select Filtered", callback=self.selectFiltered) OWGUI.button(box, self, "Clear Selection", callback=self.treeWidget.clearSelection) self.resize(1000, 700) self.geneinfo = [] self.cells = [] self.row2geneinfo = {} self.data = None # : (# input genes, # matches genes) self.matchedInfo = 0, 0 self.selectionUpdateInProgress = False self.setBlocking(True) self.executor = ThreadExecutor(self) self.progressBarInit() task = Task( function=partial( taxonomy.ensure_downloaded, callback=methodinvoke(self, "advance", ()) ) ) task.resultReady.connect(self.initialize) task.exceptionReady.connect(self._onInitializeError) self.initfuture = self.executor.submit(task)
def __init__(self, parent=None, signalManager=None, title="Quality Control"): OWWidget.__init__(self, parent, signalManager, title, wantGraph=True) self.inputs = [("Experiment Data", Orange.data.Table, self.set_data)] ## Settings self.selected_distance_index = 0 ## Attributes self.data = None self.distances = None self.groups = None self.unique_pos = None self.base_group_index = 0 ## GUI box = OWGUI.widgetBox(self.controlArea, "Info") self.info_box = OWGUI.widgetLabel(box, "\n") ## Separate By box box = OWGUI.widgetBox(self.controlArea, "Separate By") self.split_by_model = PyListModel() self.split_by_view = QListView() self.split_by_view.setSelectionMode(QListView.ExtendedSelection) self.split_by_view.setModel(self.split_by_model) box.layout().addWidget(self.split_by_view) self.connect(self.split_by_view.selectionModel(), SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self.on_split_key_changed) ## Sort By box box = OWGUI.widgetBox(self.controlArea, "Sort By") self.sort_by_model = PyListModel() self.sort_by_view = QListView() self.sort_by_view.setSelectionMode(QListView.ExtendedSelection) self.sort_by_view.setModel(self.sort_by_model) box.layout().addWidget(self.sort_by_view) self.connect(self.sort_by_view.selectionModel(), SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self.on_sort_key_changed) ## Distance box box = OWGUI.widgetBox(self.controlArea, "Distance Measure") OWGUI.comboBox(box, self, "selected_distance_index", items=[t[0] for t in self.DISTANCE_FUNCTIONS], callback=self.on_distance_measure_changed) self.connect(self.graphButton, SIGNAL("clicked()"), self.save_graph) self.scene = QGraphicsScene() self.scene_view = QualityGraphicsView(self.scene) self.scene_view.setRenderHints(QPainter.Antialiasing) self.scene_view.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) self.mainArea.layout().addWidget(self.scene_view) self.connect(self.scene_view, SIGNAL("view_size_changed(QSize)"), self.on_view_resize) self._disable_updates = False self._cached_distances = {} self._base_index_hints = {} self.main_widget = None self.resize(800, 600)
def __init__(self, parent=None, signalManager=None, name="Gene selection"): OWWidget.__init__(self, parent, signalManager, name, wantGraph=True, showSaveGraph=True) self.inputs = [("Examples", ExampleTable, self.set_data)] self.outputs = [("Example table with selected genes", ExampleTable), ("Example table with remaining genes", ExampleTable), ("Selected genes", ExampleTable)] self.method_index = 0 self.genes_in_columns = False self.compute_null = False self.permutations_count = 10 self.auto_commit = False self.selectNBest = 20 self.selectPValue = 0.01 self.data_changed_flag = False self.add_scores_to_output = True self.thresholds = { "fold change": (0.5, 2.), "log2 fold change": (-1, 1), "t-test": (-2, 2), "t-test p-value": (0.01, 0.01), } self.oneTailTestHi = oneTailTestHi = lambda array, low, hi: array >= hi self.oneTailTestLow = oneTailTestLow = lambda array, low, hi: array <= low self.twoTailTest = twoTailTest = lambda array, low, hi: ( array >= hi) | (array <= low) self.middleTest = middleTest = lambda array, low, hi: (array <= hi) | ( array >= low) self.histType = { oneTailTestHi: "hiTail", oneTailTestLow: "lowTail", twoTailTest: "twoTail", middleTest: "middle" } # [(name, func, tail test, two sample test), ...] self.score_methods = [ ("fold change", ExpressionSignificance_FoldChange, twoTailTest, True), ("log2 fold change", ExpressionSignificance_Log2FoldChange, twoTailTest, True), ("t-test", ExpressionSignificance_TTest_T, twoTailTest, True), ("t-test p-value", ExpressionSignificance_TTest_PValue, oneTailTestLow, True), ("anova", ExpressionSignificance_ANOVA_F, oneTailTestHi, False), ("anova p-value", ExpressionSignificance_ANOVA_PValue, oneTailTestLow, False), ("signal to noise ratio", ExpressionSignificance_SignalToNoise, twoTailTest, True), ("info gain", ExpressionSignificance_Info, oneTailTestHi, True), ("chi-square", ExpressionSignificance_ChiSquare, oneTailTestHi, True), ("mann-whitney", ExpressionSignigicance_MannWhitneyu_U, oneTailTestLow, True) ] boxHistogram = OWGUI.widgetBox(self.mainArea) self.histogram = ScoreHist(self, boxHistogram) boxHistogram.layout().addWidget(self.histogram) self.histogram.show() box = OWGUI.widgetBox(self.controlArea, "Info") self.dataInfoLabel = OWGUI.widgetLabel(box, "\n\n") self.dataInfoLabel.setWordWrap(True) self.selectedInfoLabel = OWGUI.widgetLabel(box, "") box1 = OWGUI.widgetBox(self.controlArea, "Scoring Method") self.testRadioBox = OWGUI.comboBox( box1, self, "method_index", items=[sm[0] for sm in self.score_methods], callback=[self.on_scoring_method_changed, self.update_scores]) box = OWGUI.widgetBox(self.controlArea, "Target Labels") self.label_selection_widget = LabelSelectionWidget(self) self.label_selection_widget.setMaximumHeight(150) box.layout().addWidget(self.label_selection_widget) self.connect(self.label_selection_widget, SIGNAL("selection_changed()"), self.on_target_changed) self.connect(self.label_selection_widget, SIGNAL("label_activated(int)"), self.on_label_activated) self.genes_in_columns_check = OWGUI.checkBox( box, self, "genes_in_columns", "Genes in columns", callback=self.on_genes_in_columns_change) box = OWGUI.widgetBox(self.controlArea, "Selection") box.layout().setSpacing(0) self.upperBoundarySpin = OWGUI.doubleSpin( box, self, "histogram.upperBoundary", min=-1e6, max=1e6, step=1e-6, label="Upper threshold:", callback=self.update_boundary, callbackOnReturn=True) self.lowerBoundarySpin = OWGUI.doubleSpin( box, self, "histogram.lowerBoundary", min=-1e6, max=1e6, step=1e-6, label="Lower threshold:", callback=self.update_boundary, callbackOnReturn=True) check = OWGUI.checkBox(box, self, "compute_null", "Compute null distribution", callback=self.update_scores) check.disables.append( OWGUI.spin(box, self, "permutations_count", min=1, max=10, label="Permutations:", callback=self.update_scores, callbackOnReturn=True)) box1 = OWGUI.widgetBox(box, orientation='horizontal') check.disables.append( OWGUI.doubleSpin(box1, self, "selectPValue", min=2e-7, max=1.0, step=1e-7, label="P-value:")) check.disables.append( OWGUI.button(box1, self, "Select", callback=self.select_p_best)) check.makeConsistent() box1 = OWGUI.widgetBox(box, orientation='horizontal') OWGUI.spin(box1, self, "selectNBest", 0, 10000, step=1, label="Best Ranked:") OWGUI.button(box1, self, "Select", callback=self.select_n_best) box = OWGUI.widgetBox(self.controlArea, "Output") b = OWGUI.button(box, self, "&Commit", callback=self.commit) cb = OWGUI.checkBox(box, self, "auto_commit", "Commit on change") OWGUI.setStopper(self, b, cb, "data_changed_flag", self.commit) OWGUI.checkBox(box, self, "add_scores_to_output", "Add gene scores to output", callback=self.commit_if) OWGUI.rubber(self.controlArea) self.connect(self.graphButton, SIGNAL("clicked()"), self.histogram.saveToFile) self.loadSettings() self.data = None self.discData = None self.scoreCache = {} self.nullDistCache = {} self.cuts = {} self.null_dist = [] self.targets = [] self.scores = {} self.genes_in_columns = True self.target_selections = None self.on_scoring_method_changed() self.resize(800, 600)
def __init__(self, parent=None, signalManager=None, title="Molecule visualizer"): super(OWMoleculeVisualizer, self).__init__(parent, signalManager, title) self.colorFragments = 1 self.showFragments = 0 self.selectedFragment = "" self.moleculeSmiles = [] self.fragmentSmiles = [] self.defFragmentSmiles = [] self.smiles_var = 0 self.moleculeTitleAttr = 0 self.moleculeTitleAttributeList = [] self.selectedMoleculeTitleAttrs = [] self.fragmentSmilesAttr = 0 self.imageSize = 200 self.numColumns = 4 self.commitOnChange = 0 ## GUI box = OWGUI.widgetBox(self.controlArea, "Info", addSpace=True) self.infoLabel = OWGUI.label(box, self, "Chemicals:") box = OWGUI.radioButtonsInBox(self.controlArea, self, "showFragments", ["Show molecules", "Show fragments"], "Show", callback=self.updateitems) self.showFragmentsRadioButton = box.buttons[-1] self.markFragmentsCheckBox = OWGUI.checkBox(box, self, "colorFragments", "Mark fragments", callback=self._update) box.setSizePolicy(QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum)) OWGUI.separator(self.controlArea) self.moleculeSmilesCombo = OWGUI.comboBox(self.controlArea, self, "smiles_var", "Molecule SMILES Attribute", callback=self.updateitems) self.moleculeSmilesCombo.box.setSizePolicy( QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum)) self.smiles_var_model = VariableListModel(parent=self) self.moleculeSmilesCombo.setModel(self.smiles_var_model) OWGUI.separator(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Molecule Title Attributes", addSpace=True) self.title_var_view = QListView( selectionMode=QListView.ExtendedSelection) self.title_var_model = VariableListModel(parent=self) self.title_var_view.setModel(self.title_var_model) self.title_var_view.selectionModel().selectionChanged.connect( self._title_selection_changed) box.layout().addWidget(self.title_var_view) OWGUI.separator(self.controlArea) self.fragmentSmilesCombo = OWGUI.comboBox( self.controlArea, self, "fragmentSmilesAttr", "Fragment SMILES Attribute", callback=self.updateFragmentsListBox) self.fragmentSmilesCombo.setModel(VariableListModel(parent=self)) self.fragmentSmilesCombo.box.setSizePolicy( QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum)) OWGUI.separator(self.controlArea) box = OWGUI.spin(self.controlArea, self, "imageSize", 50, 500, 10, box="Image Size", callback=self._image_size_changed) box.setSizePolicy(QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum)) OWGUI.separator(self.controlArea) box = OWGUI.widgetBox(self.controlArea, "Selection", addSpace=True) OWGUI.checkBox(box, self, "commitOnChange", "Commit on change") self.selectMarkedMoleculesButton = OWGUI.button( box, self, "Select &matched molecules", self.select_marked) OWGUI.button(box, self, "&Commit", callback=self.commit, default=True) OWGUI.separator(self.controlArea) OWGUI.rubber(self.controlArea) spliter = QSplitter(Qt.Vertical) self.scrollArea = ScrollArea(spliter) self.grid = GridWidget() self.grid.selectionChanged.connect(self._on_selection_changed) self.scrollArea.setWidget(self.grid) self.scrollArea.setWidgetResizable(True) self.mainArea.layout().addWidget(spliter) if pybel: self.listBox = QListWidget(spliter) else: self.listBox = QListWidget(None) self.listBox.setHidden(True) self.listBox.itemClicked.connect(self.fragmentSelection) self.fragmentSmilesCombo.box.setDisabled(not pybel) self.data = None self.data_subset = [] self.fragment_data = None self.resize(800, 600) self.listBox.setMaximumHeight(150) self.fragmentSmilesCombo.setDisabled(True) self.selectMarkedMoleculesButton.setDisabled(True) self.markFragmentsCheckBox.setDisabled(True) self.showFragmentsRadioButton.setDisabled(True) self.loadSettings() if not pybel: self.showFragments = 0 self.warning( 10, "Pybel module not installed. To view molecule fragments\n" "please install openbabel python extension.") self.__loop = None
def __init__(self, parallelWidget, parent=None, signalManager=None): OWWidget.__init__(self, parent, signalManager, "Parallel Optimization Dialog", False) self.setCaption("Parallel Optimization Dialog") self.parallelWidget = parallelWidget self.optimizationMeasure = 0 self.attributeCount = 5 self.numberOfAttributes = 6 self.fileName = "" self.lastSaveDirName = os.getcwd() + "/" self.fileBuffer = [] self.projections = [] self.allResults = [] self.canOptimize = 0 self.orderAllAttributes = 1 # do we wish to order all attributes or find just an interesting subset self.worstVal = -1 # used in heuristics to stop the search in uninteresting parts of the graph self.loadSettings() self.measureBox = OWGUI.radioButtonsInBox(self.controlArea, self, "optimizationMeasure", ["Correlation", "VizRank"], box="Select optimization measure", callback=self.updateGUI) self.vizrankSettingsBox = OWGUI.widgetBox(self.controlArea, "VizRank settings") self.optimizeBox = OWGUI.widgetBox(self.controlArea, "Optimize") self.manageBox = OWGUI.widgetBox(self.controlArea, "Manage results") self.resultsBox = OWGUI.widgetBox(self.mainArea, "Results") self.resultList = OWGUI.listBox(self.resultsBox, self) self.resultList.setMinimumSize(200, 200) self.connect(self.resultList, SIGNAL("itemSelectionChanged()"), self.showSelectedAttributes) # remove non-existing files names = [] for i in range(len(self.fileBuffer) - 1, -1, -1): (short, longName) = self.fileBuffer[i] if not os.path.exists(longName): self.fileBuffer.remove((short, longName)) else: names.append(short) names.append("(None)") self.fileName = "(None)" self.hbox1 = OWGUI.widgetBox(self.vizrankSettingsBox, "VizRank projections file", orientation="horizontal") self.vizrankFileCombo = OWGUI.comboBox(self.hbox1, self, "fileName", items=names, tooltip="File that contains information about interestingness of scatterplots\n" "generated by VizRank method in scatterplot widget", callback=self.changeProjectionFile, sendSelectedValue=1, valueType=str) self.browseButton = OWGUI.button(self.hbox1, self, "...", callback=self.loadProjections) self.browseButton.setMaximumWidth(20) self.resultsInfoBox = OWGUI.widgetBox(self.vizrankSettingsBox, "VizRank parameters") self.kNeighborsLabel = OWGUI.widgetLabel(self.resultsInfoBox, "Number of neighbors (k):") self.percentDataUsedLabel = OWGUI.widgetLabel(self.resultsInfoBox, "Percent of data used:") self.testingMethodLabel = OWGUI.widgetLabel(self.resultsInfoBox, "Testing method used:") self.qualityMeasureLabel = OWGUI.widgetLabel(self.resultsInfoBox, "Quality measure used:") self.allAttributesRadio = QRadioButton("Order all attributes", self.optimizeBox) self.optimizeBox.layout().addWidget(self.allAttributesRadio) self.connect(self.allAttributesRadio, SIGNAL("clicked()"), self.setAllAttributeRadio) box = OWGUI.widgetBox(self.optimizeBox, orientation="horizontal") self.subsetAttributeRadio = QRadioButton("Find subsets of", box) box.layout().addWidget(self.subsetAttributeRadio) self.connect(self.subsetAttributeRadio, SIGNAL("clicked()"), self.setSubsetAttributeRadio) self.subsetAttributeEdit = OWGUI.lineEdit(box, self, "numberOfAttributes", valueType=int) self.subsetAttributeEdit.setMaximumWidth(30) OWGUI.widgetLabel(box, "attributes") self.startOptimizationButton = OWGUI.button(self.optimizeBox, self, "Start Optimization", callback=self.startOptimization) f = self.startOptimizationButton.font() f.setBold(1) self.startOptimizationButton.setFont(f) self.stopOptimizationButton = OWGUI.button(self.optimizeBox, self, "Stop Evaluation", callback=self.stopOptimizationClick) self.stopOptimizationButton.setFont(f) self.stopOptimizationButton.hide() self.connect(self.stopOptimizationButton, SIGNAL("clicked()"), self.stopOptimizationClick) self.clearButton = OWGUI.button(self.manageBox, self, "Clear Results", self.clearResults) self.loadButton = OWGUI.button(self.manageBox, self, "Load", self.loadResults) self.saveButton = OWGUI.button(self.manageBox, self, "Save", self.saveResults) self.closeButton = OWGUI.button(self.manageBox, self, "Close Dialog", self.hide) self.changeProjectionFile() self.updateGUI() if self.orderAllAttributes: self.setAllAttributeRadio() else: self.setSubsetAttributeRadio()