Пример #1
0
    def __init__(self, parent=None, signalManager=None, name="Model Map"):
        OWNxExplorer.__init__(self,
                              parent,
                              signalManager,
                              name,
                              NetworkCanvas=OWModelMapCanvas)

        self.inputs = [
            ("Distances", orange.SymMatrix, self.setMatrix, Default),
            ("Model Subset", orange.ExampleTable, self.setSubsetModels)
        ]
        self.outputs = [("Model", orange.Example),
                        ("Classifier", orange.Classifier),
                        ("Selected Models", orange.ExampleTable)]

        self.vertexSize = 32
        self.autoSendSelection = False
        self.minVertexSize = 16
        self.maxVertexSize = 16
        self.lastColorAttribute = ""
        self.lastSizeAttribute = ""
        self.vizAccurancy = False
        self.vizAttributes = False
        self.radius = 100
        self.attrIntersection = []
        self.attrIntersectionList = []
        self.attrDifference = []
        self.attrDifferenceList = []

        self.loadSettings()

        self.matrixTab = OWGUI.widgetBox(self.tabs, addToLayout=0, margin=4)
        self.modelTab = OWGUI.widgetBox(self.tabs, addToLayout=0, margin=4)
        self.tabs.insertTab(0, self.matrixTab, "Matrix")
        self.tabs.insertTab(1, self.modelTab, "Model Info")
        self.tabs.setCurrentIndex(self.tabIndex)

        self.networkCanvas.appendToSelection = 0
        self.networkCanvas.minVertexSize = self.minVertexSize
        self.networkCanvas.maxVertexSize = self.maxVertexSize
        self.networkCanvas.invertEdgeSize = 1

        # MARTIX CONTROLS
        self.addHistogramControls(self.matrixTab)
        self.kNN = 1
        boxHistogram = OWGUI.widgetBox(self.matrixTab,
                                       box="Distance histogram")
        self.histogram = OWHist(self, boxHistogram)
        boxHistogram.layout().addWidget(self.histogram)

        # VISUALIZATION CONTROLS
        vizPredAcc = OWGUI.widgetBox(self.modelTab,
                                     "Prediction Accuracy",
                                     orientation="vertical")
        OWGUI.checkBox(vizPredAcc,
                       self,
                       "vizAccurancy",
                       "Visualize prediction accurancy",
                       callback=self.visualizeInfo)
        OWGUI.spin(vizPredAcc,
                   self,
                   "radius",
                   10,
                   300,
                   1,
                   label="Radius: ",
                   callback=self.visualizeInfo)
        self.predGraph = OWDistributionGraph(self, vizPredAcc)
        self.predGraph.setMaximumSize(QSize(300, 300))
        self.predGraph.setYRlabels(None)
        self.predGraph.setAxisScale(QwtPlot.xBottom, 0.0, 1.0, 0.1)
        self.predGraph.numberOfBars = 2
        self.predGraph.barSize = 200 / (self.predGraph.numberOfBars + 1)
        vizPredAcc.layout().addWidget(self.predGraph)

        vizPredAcc = OWGUI.widgetBox(self.modelTab,
                                     "Attribute lists",
                                     orientation="vertical")
        OWGUI.checkBox(vizPredAcc,
                       self,
                       "vizAttributes",
                       "Display attribute lists",
                       callback=self.visualizeInfo)
        self.attrIntersectionBox = OWGUI.listBox(
            vizPredAcc,
            self,
            "attrIntersection",
            "attrIntersectionList",
            "Attribute intersection",
            selectionMode=QListWidget.NoSelection)
        self.attrDifferenceBox = OWGUI.listBox(
            vizPredAcc,
            self,
            "attrDifference",
            "attrDifferenceList",
            "Attribute difference",
            selectionMode=QListWidget.NoSelection)

        self.attBox.hide()
        self.visualizeInfo()

        QObject.connect(self.networkCanvas, SIGNAL('selection_changed()'),
                        self.node_selection_changed)

        self.matrixTab.layout().addStretch(1)
        self.modelTab.layout().addStretch(1)