Changeset 9273:9c33029c1c40 in orange


Ignore:
Timestamp:
11/25/11 14:53:47 (2 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
94fac54e1b30740b24e1866297c3e080bde80f1b
Message:

More fixes to reporting.

Location:
orange/OrangeWidgets
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Classify/OWNomogram.py

    r9196 r9273  
    155155 
    156156    def sendReport(self): 
     157        if self.cl: 
     158            tclass = self.cl.domain.classVar.values[self.TargetClassIndex] 
     159        else: 
     160            tclass = "N/A" 
    157161        self.reportSettings("Information", 
    158                             [("Target class", self.cl.domain.classVar.values[self.TargetClassIndex]), 
     162                            [("Target class", tclass), 
    159163                             self.confidence_check and ("Confidence intervals", "%i%%" % self.confidence_percent), 
    160164                             ("Sorting", self.sortOptions[self.sort_type] if self.sort_type else "None")]) 
    161          
    162         canvases = header, graph, footer = self.header.scene(), self.graph.scene(), self.footer.scene() 
    163         painter = QPainter() 
    164         buffer = QPixmap(max(c.width() for c in canvases), sum(c.height() for c in canvases)) 
    165         painter.begin(buffer) 
    166         painter.fillRect(buffer.rect(), QBrush(QColor(255, 255, 255))) 
    167         header.render(painter, QRectF(0, 0, header.width(), header.height()), QRectF(0, 0, header.width(), header.height())) 
    168         graph.render(painter, QRectF(0, header.height(), graph.width(), graph.height()), QRectF(0, 0, graph.width(), graph.height())) 
    169         footer.render(painter, QRectF(0, header.height()+graph.height(), footer.width(), footer.height()), QRectF(0, 0, footer.width(), footer.height())) 
    170         painter.end() 
    171         self.reportImage(lambda filename: buffer.save(filename, os.path.splitext(filename)[1][1:])) 
     165        if self.cl: 
     166            canvases = header, graph, footer = self.header.scene(), self.graph.scene(), self.footer.scene() 
     167            painter = QPainter() 
     168            buffer = QPixmap(max(c.width() for c in canvases), sum(c.height() for c in canvases)) 
     169            painter.begin(buffer) 
     170            painter.fillRect(buffer.rect(), QBrush(QColor(255, 255, 255))) 
     171            header.render(painter, QRectF(0, 0, header.width(), header.height()), QRectF(0, 0, header.width(), header.height())) 
     172            graph.render(painter, QRectF(0, header.height(), graph.width(), graph.height()), QRectF(0, 0, graph.width(), graph.height())) 
     173            footer.render(painter, QRectF(0, header.height()+graph.height(), footer.width(), footer.height()), QRectF(0, 0, footer.width(), footer.height())) 
     174            painter.end() 
     175            self.reportImage(lambda filename: buffer.save(filename, os.path.splitext(filename)[1][1:])) 
    172176 
    173177         
  • orange/OrangeWidgets/Classify/OWNomogramGraph.py

    r9138 r9273  
    14171417            self.resizing = True 
    14181418            self.scene().show() 
    1419         self.setSceneRect(0, 0, self.width(), self.scene().height()) 
     1419            self.setSceneRect(0, 0, self.width(), self.scene().height()) 
    14201420 
    14211421    # ################################################################### 
  • orange/OrangeWidgets/Evaluate/OWCalibrationPlot.py

    r8042 r9273  
    244244                                                        for cNum, item in enumerate(self.classifiersQLB.item(i) for i in range(self.classifiersQLB.count())) 
    245245                                                          if item.isSelected())), 
    246                              ("Target class", self.classCombo.itemText(self.targetClass)), 
     246                             ("Target class", self.classCombo.itemText(self.targetClass) 
     247                                              if self.targetClass is not None else 
     248                                              "N/A"), 
    247249                            ]) 
    248         self.reportRaw("<br/>") 
    249         self.reportImage(self.graphs[self.targetClass].saveToFileDirect, QSize(400, 400)) 
     250        if self.targetClass is not None: 
     251            self.reportRaw("<br/>") 
     252            self.reportImage(self.graphs[self.targetClass].saveToFileDirect, QSize(400, 400)) 
    250253 
    251254 
     
    324327        self.closeContext() 
    325328 
    326         self.targeClass = None 
     329        self.targetClass = None 
    327330        self.classifiersQLB.clear() 
    328331        self.removeGraphs() 
  • orange/OrangeWidgets/Evaluate/OWConfusionMatrix.py

    r8042 r9273  
    9595        self.layout.setRowStretch(2, 100) 
    9696        self.connect(self.table, SIGNAL("itemSelectionChanged()"), self.sendIf) 
    97  
     97         
     98        self.res = None 
     99        self.matrix = None 
     100        self.selectedLearner = None 
    98101        self.resize(700,450) 
    99102 
     
    199202    def sendReport(self): 
    200203        self.reportSettings("Contents", 
    201                             [("Learner", self.learnerNames[self.selectedLearner[0]]), 
     204                            [("Learner", self.learnerNames[self.selectedLearner[0]] \ 
     205                                            if self.learnerNames else \ 
     206                                         "N/A"), 
    202207                             ("Data", self.quantities[self.shownQuantity])]) 
    203208         
    204         self.reportSection("Matrix") 
    205         classVals = self.res.classValues 
    206         nClassVals = len(classVals) 
    207         res = "<table>\n<tr><td></td>" + "".join('<td align="center"><b>&nbsp;&nbsp;%s&nbsp;&nbsp;</b></td>' % cv for cv in classVals) + "</tr>\n" 
    208         for i, cv in enumerate(classVals): 
    209             res += '<tr><th align="right"><b>%s</b></th>' % cv + \ 
    210                    "".join('<td align="center">%s</td>' % self.table.item(i, j).text() for j in range(nClassVals)) + \ 
    211                    '<th align="right"><b>%s</b></th>' % self.table.item(i, nClassVals).text() + \ 
     209        if self.res: 
     210            self.reportSection("Matrix") 
     211            classVals = self.res.classValues 
     212            nClassVals = len(classVals) 
     213            res = "<table>\n<tr><td></td>" + "".join('<td align="center"><b>&nbsp;&nbsp;%s&nbsp;&nbsp;</b></td>' % cv for cv in classVals) + "</tr>\n" 
     214            for i, cv in enumerate(classVals): 
     215                res += '<tr><th align="right"><b>%s</b></th>' % cv + \ 
     216                       "".join('<td align="center">%s</td>' % self.table.item(i, j).text() for j in range(nClassVals)) + \ 
     217                       '<th align="right"><b>%s</b></th>' % self.table.item(i, nClassVals).text() + \ 
     218                       "</tr>\n" 
     219            res += '<tr><th></th>' + \ 
     220                   "".join('<td align="center"><b>%s</b></td>' % self.table.item(nClassVals, j).text() for j in range(nClassVals+1)) + \ 
    212221                   "</tr>\n" 
    213         res += '<tr><th></th>' + \ 
    214                "".join('<td align="center"><b>%s</b></td>' % self.table.item(nClassVals, j).text() for j in range(nClassVals+1)) + \ 
    215                "</tr>\n" 
    216         res += "</table>\n<p><b>Note:</b> columns represent predictions, row represent true classes</p>" 
    217         self.reportRaw(res) 
     222            res += "</table>\n<p><b>Note:</b> columns represent predictions, row represent true classes</p>" 
     223            self.reportRaw(res) 
    218224             
    219225 
  • orange/OrangeWidgets/Evaluate/OWLiftCurve.py

    r8042 r9273  
    303303                                                        for cNum, item in enumerate(self.classifiersQLB.item(i) for i in range(self.classifiersQLB.count())) 
    304304                                                          if item.isSelected())), 
    305                              ("Target class", self.classCombo.itemText(self.targetClass)), 
     305                             ("Target class", self.classCombo.itemText(self.targetClass) 
     306                                              if self.targetClass is not None else 
     307                                              "N/A"), 
    306308                             ("Costs", "FP=%i, FN=%i" % (self.FPcost, self.FNcost)), 
    307309                             ("Prior target class probability", "%i%%" % self.pvalue) 
    308310                            ]) 
    309         self.reportRaw("<br/>") 
    310         self.reportImage(self.graphs[self.targetClass].saveToFileDirect, QSize(500, 400)) 
     311        if self.targetClass is not None: 
     312            self.reportRaw("<br/>") 
     313            self.reportImage(self.graphs[self.targetClass].saveToFileDirect, QSize(500, 400)) 
    311314 
    312315 
  • orange/OrangeWidgets/Evaluate/OWROC.py

    r8042 r9273  
    749749                                                        for cNum, item in enumerate(self.classifiersQLB.item(i) for i in range(self.classifiersQLB.count())) 
    750750                                                          if item.isSelected())), 
    751                              ("Target class", self.classCombo.itemText(self.targetClass)), 
     751                             ("Target class", self.classCombo.itemText(self.targetClass) 
     752                                              if self.targetClass is not None else 
     753                                              "N/A"), 
    752754                             ("Costs", "FP=%i, FN=%i" % (self.FPcost, self.FNcost)), 
    753755                             ("Prior target class probability", "%i%%" % self.pvalue) 
    754756                            ]) 
    755         self.reportRaw("<br/>") 
    756         self.reportImage(self.graphs[self.targetClass].saveToFileDirect, QSize(400, 400)) 
     757        if self.targetClass is not None: 
     758            self.reportRaw("<br/>") 
     759            self.reportImage(self.graphs[self.targetClass].saveToFileDirect, QSize(400, 400)) 
    757760         
    758761    def saveToFile(self): 
  • orange/OrangeWidgets/Regression/OWPade.py

    r8042 r9273  
    8484        self.contAttributes = [] 
    8585        self.dimensions = [] 
     86        self.data = None 
    8687 
    8788        #self.persistenceSpin.setEnabled(self.methods[self.method] == orngPade.canceling) 
  • orange/OrangeWidgets/Unsupervised/OWDistanceFile.py

    r8830 r9273  
    251251        else: 
    252252            labels = "None"  
    253                  
    254         self.reportSettings("File", 
    255                             [("File name", self.recentFiles[self.fileIndex or 0]), 
    256                              ("Matrix dimension", self.matrix.dim), 
    257                              ("Labels", labels)]) 
     253             
     254        if self.matrix is not None: 
     255            self.reportSettings("File", 
     256                                [("File name", self.recentFiles[self.fileIndex or 0]), 
     257                                 ("Matrix dimension", self.matrix.dim), 
     258                                 ("Labels", labels)]) 
     259        else: 
     260            self.reportSettings("File", []) 
    258261        if self.data: 
    259262            self.reportData(self.data, "Examples") 
  • orange/OrangeWidgets/Unsupervised/OWDistanceMap.py

    r9091 r9273  
    245245        self.errorText = QGraphicsSimpleTextItem("Bitmap is too large.", None, self.scene) 
    246246        self.errorText.setPos(10,10) 
     247        self.errorText.hide() 
    247248         
    248249        self.connect(self.graphButton, SIGNAL("clicked()"), lambda:OWChooseImageSizeDlg(self.scene, parent=self).exec_()) 
     
    251252 
    252253    def sendReport(self): 
    253         self.reportSettings("Data", 
    254                             [("Matrix dimension", self.matrix.dim)]) 
     254        if self.matrix: 
     255            self.reportSettings("Data", 
     256                                [("Matrix dimension", self.matrix.dim)]) 
    255257        self.reportSettings("Settings", 
    256258                            [("Merge", "%i elements in a cell" % self.Merge if self.Merge > 1 else "none"), 
     
    258260                             ("Thresholds", "low %.1f, high %.1f" % (self.CutLow, self.CutHigh) if self.CutEnabled else "none"), 
    259261                             ("Gamma", "%.2f" % self.Gamma)]) 
    260         self.reportRaw("<br/>") 
    261         buffer = QPixmap(self.scene.width(), self.scene.height()) 
    262         painter = QPainter(buffer) 
    263         painter.fillRect(buffer.rect(), QBrush(QColor(255, 255, 255))) 
    264         self.scene.render(painter) 
    265         painter.end() 
    266         self.reportImage(lambda filename: buffer.save(filename, os.path.splitext(filename)[1][1:])) 
    267  
    268                               
     262        if self.matrix: 
     263            self.reportRaw("<br/>") 
     264            buffer = QPixmap(self.scene.width(), self.scene.height()) 
     265            painter = QPainter(buffer) 
     266            painter.fillRect(buffer.rect(), QBrush(QColor(255, 255, 255))) 
     267            self.scene.render(painter) 
     268            painter.end() 
     269            self.reportImage(lambda filename: buffer.save(filename, os.path.splitext(filename)[1][1:])) 
    269270         
    270271    def createColorStripe(self, palette, offsetX): 
  • orange/OrangeWidgets/Unsupervised/OWInteractionGraph.py

    r8042 r9273  
    4444 
    4545    def __init__(self, parent=None, signalManager = None): 
    46         OWWidget.__init__(self, parent, signalManager, "Interaction graph", noReport=True) 
     46        OWWidget.__init__(self, parent, signalManager, "Interaction graph") 
    4747 
    4848        self.inputs = [("Examples", ExampleTable, self.setData)] 
     
    117117        self.saveRCanvas = OWGUI.button(None, self, "Save right canvas", callback = self.saveToFileRCanvas, debuggingEnabled = 0, addToLayout=False) 
    118118         
    119         if OWReport.report: 
    120             self.reportButton = OWGUI.button(None, self, "&Report", self.reportAndFinish, debuggingEnabled=0, addToLayout=False) 
     119#        if OWReport.report: 
     120#            self.reportButton = OWGUI.button(None, self, "&Report", self.reportAndFinish, debuggingEnabled=0, addToLayout=False) 
    121121 
    122122        layout.addWidget(self.saveLCanvas, 0, 0) 
     
    624624        sizeDlg.exec_() 
    625625 
    626     def _sendReport(self): 
     626    def sendReport(self): 
    627627        self.reportData(self.data) 
    628628        self.reportSettings("", [("Selected attributes", ", ".join(str(self.shownAttribsLB.item(i).text()) for i in range(self.shownAttribsLB.count())))]) 
    629         self.reportSection("Pairwise interaction bars") 
    630         self.reportImage(OWDlgs.OWChooseImageSizeDlg(self.canvasL).saveImage) 
    631         self.reportSection("Interaction graph") 
    632         self.reportImage(OWDlgs.OWChooseImageSizeDlg(self.canvasR).saveImage) 
     629        if self.data: 
     630            self.reportSection("Pairwise interaction bars") 
     631            self.reportImage(OWDlgs.OWChooseImageSizeDlg(self.canvasL).saveImage) 
     632            self.reportSection("Interaction graph") 
     633            self.reportImage(OWDlgs.OWChooseImageSizeDlg(self.canvasR).saveImage) 
    633634                             
    634635 
  • orange/OrangeWidgets/Unsupervised/OWSOMVisualizer.py

    r8042 r9273  
    10921092    def sendReport(self): 
    10931093        self.reportSettings("Visual settings", 
    1094                            [("Background", self.drawModes[self.scene.drawMode]+(" - "+self.componentCombo.currentText() if self.scene.drawMode==2 else "")), 
     1094                           [("Background", self.drawModes[self.drawMode]+(" - "+self.componentCombo.currentText() if self.drawMode==2 else "")), 
    10951095                            ("Histogram", ["data from training set", "data from input subset"][self.inputSet] if self.histogram else "none"), 
    10961096                            ("Coloring",  "%s for %s" % (["pie chart", "majority value", "majority value probability"][self.discHistMode], self.attributeCombo.currentText())) 
Note: See TracChangeset for help on using the changeset viewer.