Changeset 1332:0a48d6c732ac in orange-bioinformatics


Ignore:
Timestamp:
02/24/11 17:25:42 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
2a02d2df7453c8354d45a523aa4369099105e6c4
Message:
  • changed info label to show only matches for unique genes
  • show percentages of mapped genes in the main view
File:
1 edited

Legend:

Unmodified
Added
Removed
  • widgets/OWFunctionalAnnotation.py

    r1282 r1332  
    5959        self.loadSettings() 
    6060         
    61         self.signalManager.freeze(self).push() #setFreeze(self.signalManager.freezing + 1) 
     61        self.signalManager.freeze(self).push() 
    6262        QTimer.singleShot(50, self.updateHierarchy) 
    6363         
     
    6666        self.infoBox.setText("No data on input") 
    6767         
    68         self.speciesComboBox = OWGUI.comboBox(self.controlArea, self, "speciesIndex", "Species", callback=lambda :self.data and self.updateAnnotations(), debuggingEnabled=0) 
     68        self.speciesComboBox = OWGUI.comboBox(self.controlArea, self, 
     69                      "speciesIndex", "Species", 
     70                      callback=lambda :self.data and self.updateAnnotations(), 
     71                      debuggingEnabled=0) 
    6972         
    7073        box = OWGUI.widgetBox(self.controlArea, "Gene names") 
    71         self.geneAttrComboBox = OWGUI.comboBox(box, self, "geneattr", "Gene attribute", sendSelectedValue=0, callback=self.updateAnnotations) 
    72         cb = OWGUI.checkBox(box, self, "genesinrows", "Use attribute names", callback=lambda :self.data and self.updateAnnotations(), disables=[(-1, self.geneAttrComboBox)]) 
     74        self.geneAttrComboBox = OWGUI.comboBox(box, self, "geneattr", 
     75                                "Gene attribute", 
     76                                sendSelectedValue=0, 
     77                                callback=self.updateAnnotations) 
     78         
     79        cb = OWGUI.checkBox(box, self, "genesinrows", "Use attribute names", 
     80                            callback=lambda :self.data and self.updateAnnotations(), 
     81                            disables=[(-1, self.geneAttrComboBox)]) 
    7382        cb.makeConsistent() 
    74         OWGUI.button(box, self, "Gene matcher settings", callback=self.updateGeneMatcherSettings, tooltip="Open gene matching settings dialog", debuggingEnabled=0) 
    75          
    76         self.referenceRadioBox = OWGUI.radioButtonsInBox(self.controlArea, self, "useReferenceData", ["Entire genome", "Reference set (input)"], 
    77                                                         tooltips=["Use entire genome for reference", "Use genes from Referece Examples input signal as reference"], 
    78                                                         box="Reference", callback=self.updateAnnotations) 
     83         
     84        OWGUI.button(box, self, "Gene matcher settings", 
     85                     callback=self.updateGeneMatcherSettings, 
     86                     tooltip="Open gene matching settings dialog", 
     87                     debuggingEnabled=0) 
     88         
     89        self.referenceRadioBox = OWGUI.radioButtonsInBox(self.controlArea, 
     90                    self, "useReferenceData", ["Entire genome", "Reference set (input)"], 
     91                    tooltips=["Use entire genome for reference", 
     92                              "Use genes from Referece Examples input signal as reference"], 
     93                    box="Reference", callback=self.updateAnnotations) 
    7994         
    8095        box = OWGUI.widgetBox(self.controlArea, "Annotation Summary") 
     
    85100        hLayout = QHBoxLayout() 
    86101        hLayout.setSpacing(10) 
    87         sb, sbcb = OWGUI.spin(QWidget(self.mainArea), self, "minClusterCount", 0, 100, label="Min. Count", tooltip="Minimum gene count", callback=self.filterAnnotationsChartView, callbackOnReturn=True, checked="useMinCountFilter", checkCallback=self.filterAnnotationsChartView) 
    88         dsp, dspcb = OWGUI.doubleSpin(QWidget(self.mainArea), self, "maxPValue", 0.0, 1.0, 0.0001, label="Max. P-Value", tooltip="Maximum (FDR corrected) P-Value", callback=self.filterAnnotationsChartView, callbackOnReturn=True, checked="useMaxPValFilter", checkCallback=self.filterAnnotationsChartView) 
     102        sb, sbcb = OWGUI.spin(QWidget(self.mainArea), self, "minClusterCount", 
     103                              0, 100, label="Min. Count", 
     104                              tooltip="Minimum gene count", 
     105                              callback=self.filterAnnotationsChartView, 
     106                              callbackOnReturn=True, 
     107                              checked="useMinCountFilter", 
     108                              checkCallback=self.filterAnnotationsChartView) 
     109         
     110        dsp, dspcb = OWGUI.doubleSpin(QWidget(self.mainArea), self, 
     111                        "maxPValue", 0.0, 1.0, 0.0001, 
     112                        label="Max. P-Value", 
     113                        tooltip="Maximum (FDR corrected) P-Value", 
     114                        callback=self.filterAnnotationsChartView, 
     115                        callbackOnReturn=True, 
     116                        checked="useMaxPValFilter", 
     117                        checkCallback=self.filterAnnotationsChartView) 
    89118         
    90119        hLayout.addWidget(sb) 
     
    96125        self.filterLineEdit = OWGUIEx.QLineEditWithActions(self) 
    97126        self.filterLineEdit.setPlaceholderText("Filter ...") 
    98         action = QAction(QIcon(os.path.join(orngEnviron.canvasDir, "icons", "delete_gray.png")), "Clear", self) 
     127        action = QAction(QIcon(os.path.join(orngEnviron.canvasDir, 
     128                        "icons", "delete_gray.png")), "Clear", self) 
     129         
    99130        self.filterLineEdit.addAction(action, 0, Qt.AlignHCenter) 
    100131        self.connect(action, SIGNAL("triggered()"), self.filterLineEdit.clear) 
     
    107138        self.mainArea.layout().addLayout(hLayout) 
    108139         
    109         self.connect(self.filterLineEdit, SIGNAL("textChanged(QString)"), self.filterAnnotationsChartView) 
     140        self.connect(self.filterLineEdit, SIGNAL("textChanged(QString)"), 
     141                     self.filterAnnotationsChartView) 
    110142         
    111143        self.annotationsChartView = MyTreeWidget(self) 
    112         self.annotationsChartView.setHeaderLabels(["Category", "Term", "Count", "Reference count", "P-Value", "Enrichment"]) 
     144        self.annotationsChartView.setHeaderLabels(["Category", "Term", 
     145                            "Count", "Reference count", "P-Value", "Enrichment"]) 
    113146        self.annotationsChartView.setAlternatingRowColors(True) 
    114147        self.annotationsChartView.setSortingEnabled(True) 
     
    352385        self.genematcher.set_targets(referenceGenes) 
    353386         
    354         countAll = len(clusterGenes) 
    355         infoText = "%i genes on input\n" % countAll 
     387        countAll = len(set(clusterGenes)) 
     388        infoText = "%i unique gene names on input\n" % countAll 
    356389        referenceGenes = set(self.mapGeneNames(referenceGenes, cache, passUnknown=False)) 
    357390        self.progressBarSet(1) 
    358391        clusterGenes = set(self.mapGeneNames(clusterGenes, cache, passUnknown=False)) 
    359 #        knownClusterGenes = set(self.mapGeneNames(clusterGenes, cache, passUnknown=False)) 
    360392        self.progressBarSet(2) 
    361393        infoText += "%i (%.1f) gene names matched" % (len(clusterGenes), 100.0 * len(clusterGenes) / countAll) 
     
    376408            results = [(geneset, (cmapped, rmapped, pvals[i], es)) for i, (geneset, (cmapped, rmapped, _, es)) in enumerate(results)] 
    377409         
    378 #        results = [(geneset, self.enrichment(geneset, clusterGenes, referenceGenes, cache=cache)) for geneset in collections] 
    379410        fmt = lambda score, max_decimals=10: "%%.%if" % min(int(abs(math.log(max(score, 1e-10)))) + 2, max_decimals) if score > math.pow(10, -max_decimals) and score < 1 else "%.1f" 
    380411        self.annotationsChartView.clear() 
     412         
     413        maxCount = max([len(cm) for _, (cm, _, _, _) in results] + [1]) 
     414        maxRefCount = max([len(rc) for _, (_, rc, _, _) in results] + [1]) 
     415        countSpaces = int(math.ceil(math.log10(maxCount))) 
     416        refSpaces = int(math.ceil(math.log(maxRefCount))) 
     417        countFmt = "%"+str(countSpaces) + "s  (%.2f%%)" 
     418        refFmt = "%"+str(refSpaces) + "s  (%.2f%%)" 
    381419             
    382420        self.filterCompleter.setModel(None) 
     
    387425            if len(cmapped) > 0: 
    388426                item = QTreeWidgetItem(self.annotationsChartView, [" ".join(geneset.hierarchy), geneset.name]) 
    389                 item.setData(2, Qt.DisplayRole, QVariant(len(cmapped))) 
    390                 item.setData(3, Qt.DisplayRole, QVariant(len(rmapped))) 
     427                item.setData(2, Qt.DisplayRole, QVariant(countFmt % (len(cmapped), 100.0*len(cmapped)/countAll))) 
     428                item.setData(3, Qt.DisplayRole, QVariant(refFmt % (len(rmapped), 100.0*len(rmapped)/len(referenceGenes)))) 
    391429                item.setData(4, Qt.DisplayRole, QVariant(p_val)) 
    392430                item.setData(5, Qt.DisplayRole, QVariant(enrichment)) 
     431                item.setData(5, Qt.ToolTipRole, QVariant("%.3f" % enrichment)) 
    393432                item.geneset= geneset 
    394433                self.treeItems.append(item) 
     
    399438                    item.setForeground(1, QColor(Qt.blue)) 
    400439                     
    401 #                    link='<a href="%s"> %s</a>' % (geneset.link, geneset.name) 
    402 #                    self.annotationsChartView.setItemWidget(item, 1, QLabel(link, self)) 
    403 #                    item.setData(1, Qt.DisplayRole, QVariant("")) 
    404440        if not self.treeItems: 
    405441            self.warning(0, "No enriched sets found.") 
     
    413449        self.annotationsChartView.setItemDelegateForColumn(5, BarItemDelegate(self, scale=(0.0, max(t[1][3] for t in results)))) 
    414450        self.annotationsChartView.setItemDelegateForColumn(1, LinkStyledItemDelegate(self.annotationsChartView)) 
    415 #        self.filterCompleter.setModel(self.annotationsChartView.model()) 
    416 #        self.filterCompleter.setCompletionColumn(1) 
    417451                 
    418452        for i in range(self.annotationsChartView.columnCount()): 
     
    428462            return 
    429463        categories = set(" ".join(cat) for cat, taxid in self.selectedCategories()) 
    430 #        print categories 
    431464        filterString = str(self.filterLineEdit.text()).lower() 
    432465        itemsHidden = [] 
Note: See TracChangeset for help on using the changeset viewer.