Changeset 8650:18854434a4a5 in orange


Ignore:
Timestamp:
08/10/11 13:29:35 (3 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
b57aefc589c100b8e3973defe6a24cebcb176494
Message:

Added distance matrix support and Pivot MDS.

Location:
orange/OrangeWidgets/Prototypes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Prototypes/OWNxCanvasQt.py

    r8625 r8650  
    547547        pass     
    548548     
    549     def update_animations(self): 
    550         OWPlot.use_animations(self) 
    551         self.networkCurve.set_use_animations(True) 
    552      
     549    def update_animations(self, use_animations=None): 
     550        OWPlot.update_animations(self, use_animations) 
     551        self.networkCurve.set_use_animations(self.use_animations) 
     552 
    553553    def set_labels_on_marked_only(self, labelsOnMarkedOnly): 
    554554        self.networkCurve.set_labels_on_marked_only(labelsOnMarkedOnly) 
  • orange/OrangeWidgets/Prototypes/OWNxExplorerQt.py

    r8623 r8650  
    157157        self.optCombo.addItem("Circular Original") 
    158158        self.optCombo.addItem("Circular Random") 
    159         #self.optCombo.addItem("Pivot MDS") 
     159        self.optCombo.addItem("Pivot MDS") 
    160160        self.optCombo.setCurrentIndex(self.optMethod) 
    161161        self.stepsSpin = OWGUI.spin(self.optimizeBox, self, "frSteps", 1, 100000, 1, label="Iterations: ") 
     
    549549     
    550550    def set_items_distance_matrix(self, matrix): 
    551 #        self.error('') 
    552 #        self.information('') 
    553 #        self.showDistancesCheckBox.setEnabled(0) 
    554 #         
    555 #        if matrix is None or self.graph is None: 
    556 #            self.items_matrix = None 
    557 #            self.layout.items_matrix = None 
    558 #            if self.networkCanvas: self.networkCanvas.items_matrix = None 
    559 #            return 
    560 # 
    561 #        if matrix.dim != self.graph.number_of_nodes(): 
    562 #            self.error('Distance matrix dimensionality must equal number of vertices') 
    563 #            self.items_matrix = None 
    564 #            self.layout.items_matrix = None 
    565 #            if self.networkCanvas: self.networkCanvas.items_matrix = None 
    566 #            return 
    567 #         
    568 #        self.items_matrix = matrix 
    569 #        self.layout.items_matrix = matrix 
    570 #        if self.networkCanvas: self.networkCanvas.items_matrix = matrix 
    571 #        self.showDistancesCheckBox.setEnabled(1) 
    572 #         
    573 #        self.networkCanvas.updateCanvas() 
    574         pass 
     551        self.error('') 
     552        self.information('') 
     553        self.showDistancesCheckBox.setEnabled(0) 
     554         
     555        if matrix is None or self.graph_base is None: 
     556            self.items_matrix = None 
     557            self.networkCanvas.items_matrix = None 
     558            return 
     559 
     560        if matrix.dim != self.graph_base.number_of_nodes(): 
     561            self.error('The number of vertices does not match matrix size.') 
     562            self.items_matrix = None 
     563            self.networkCanvas.items_matrix = None 
     564            return 
     565         
     566        self.items_matrix = matrix 
     567        self.networkCanvas.items_matrix = matrix 
     568        self.showDistancesCheckBox.setEnabled(1) 
     569         
     570        if self.optMethod == 8: 
     571            self.optButton.setChecked(True) 
     572            self.graph_layout() 
    575573     
    576574    def send_marked_nodes(self): 
     
    12761274         
    12771275    def set_graph(self, graph): 
    1278         self.set_items_distance_matrix(None) 
     1276        self.information() 
    12791277              
    12801278        if graph is None: 
     
    12881286            self._items = None 
    12891287            self._links = None 
     1288            self.set_items_distance_matrix(None) 
    12901289            return 
    12911290         
    12921291        self.graph_base = graph 
     1292         
     1293        if self.items_matrix is not None and self.items_matrix.dim != self.graph_base.number_of_nodes(): 
     1294            self.set_items_distance_matrix(None) 
    12931295         
    12941296        if self._network_view is not None: 
     
    13421344        # if graph is large, set random layout, min vertex size, min edge size 
    13431345        if self.frSteps < 10: 
    1344             self.networkCanvas.use_antialiasing = 0 
    1345             self.networkCanvas.use_animations = 0 
     1346            self.networkCanvas.update_antialiasing(False) 
     1347            self.networkCanvas.update_animations(False) 
    13461348            self.minVertexSize = 5 
    13471349            self.maxVertexSize = 5 
     
    13641366        self.optButton.setChecked(1) 
    13651367        self.graph_layout()         
    1366         self.information(0) 
    13671368         
    13681369    def set_network_view(self, nxView): 
     
    15251526            self.networkCanvas.networkCurve.circular(NetworkCurve.circular_random); 
    15261527        elif self.optMethod == 8: 
    1527 #            self.graph_layout_pivot_mds() 
    1528             pass 
     1528            self.graph_layout_pivot_mds() 
    15291529             
    15301530        self.optButton.setChecked(False) 
     
    15841584        self.optButton.setChecked(False) 
    15851585        self.optButton.setText("Optimize layout") 
    1586          
    1587     def graph_layout_fr_special(self): 
    1588         if self.graph is None:   #grafa se ni 
    1589             return 
    1590          
    1591 #        steps = 100 
    1592 #        initTemp = 1000 
    1593 #        coolFactor = math.exp(math.log(10.0/10000.0) / steps) 
    1594 #        oldXY = [(self.layout.coors[0][i], self.layout.coors[1][i]) for i in range(self.graph.number_of_nodes())] 
    1595 #        #print oldXY 
    1596 #        initTemp = self.layout.fr(steps, initTemp, coolFactor) 
    1597 #        #print oldXY 
    1598 #        self.networkCanvas.updateDataSpecial(oldXY) 
    1599 #        self.networkCanvas.replot() 
    16001586                 
    16011587    def graph_layout_fr_radial(self): 
     
    16301616        self.information() 
    16311617         
    1632 #        if self.items_matrix is None: 
    1633 #            self.information('Set distance matrix to input signal') 
    1634 #            return 
    1635 #         
    1636 #        if self.graph is None: 
    1637 #            self.information('No network found') 
    1638 #            return 
    1639 #         
    1640 #        if self.items_matrix.dim != self.graph.number_of_nodes(): 
    1641 #            self.error('Distance matrix dimensionality must equal number of vertices') 
    1642 #            return 
    1643 #         
    1644 #        self.frSteps = min(self.frSteps, self.items_matrix.dim) 
    1645 #        qApp.processEvents() 
    1646 #        mds = orngMDS.PivotMDS(self.items_matrix, self.frSteps) 
    1647 #        x,y = mds.optimize() 
    1648 #        self.layout.coors[0] = x 
    1649 #        self.layout.coors[1] = y 
    1650 #        self.networkCanvas.updateCanvas() 
    1651      
    1652        
     1618        if self.items_matrix is None: 
     1619            self.information('Set distance matrix to input signal') 
     1620            return 
     1621         
     1622        if self.graph_base is None: 
     1623            self.information('No network found') 
     1624            return 
     1625         
     1626        if self.items_matrix.dim != self.graph_base.number_of_nodes(): 
     1627            self.error('The number of vertices does not match matrix size.') 
     1628            return 
     1629         
     1630        self.frSteps = min(self.frSteps, self.graph.number_of_nodes()) 
     1631        qApp.processEvents() 
     1632         
     1633        if self.graph.number_of_nodes() == self.graph_base.number_of_nodes(): 
     1634            matrix = self.items_matrix 
     1635        else: 
     1636            matrix = self.items_matrix.get_items(sorted(self.graph.nodes())) 
     1637         
     1638        mds = orngMDS.PivotMDS(matrix, self.frSteps) 
     1639        x,y = mds.optimize() 
     1640        xy = zip(list(x), list(y)) 
     1641        coors = dict(zip(sorted(self.graph.nodes()), xy)) 
     1642        self.networkCanvas.networkCurve.set_node_coordinates(coors) 
     1643        self.networkCanvas.update_canvas() 
     1644 
    16531645    """ 
    16541646    Network Visualization 
     
    17421734            self.networkCanvas.networkCurve.set_node_sizes(values, min_size=self.minVertexSize, max_size=self.maxVertexSize) 
    17431735         
    1744             self.networkCanvas.replot() 
     1736        self.networkCanvas.replot() 
    17451737         
    17461738    def setFontSize(self): 
Note: See TracChangeset for help on using the changeset viewer.