Changeset 7964:4469286fc674 in orange


Ignore:
Timestamp:
06/01/11 15:56:24 (3 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
e33819ffafb9944702febb9646628184640a41cf
Message:

Added FragViz methods.

Location:
orange/OrangeWidgets/Unsupervised
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Unsupervised/OWNxCanvas.py

    r7961 r7964  
    99MOVE_SELECTION = 100 
    1010 
     11import Orange 
     12 
     13from numpy import * 
    1114from OWGraph import * 
    12 from numpy import * 
    13 from orngNetwork import Network 
    1415from orngScaleScatterPlotData import * 
    1516 
     
    270271        self.minComponentEdgeWidth = 0 
    271272        self.maxComponentEdgeWidth = 0 
    272         self.vertexDistance = None 
     273        self.items_matrix = None 
    273274        self.controlPressed = False 
    274275        self.altPressed = False 
     
    488489                distance = math.sqrt(dX**2 + dY**2)                
    489490                if v != -1 and distance <= self.vertices[v].size / 2: 
    490                     if self.graph.vertexDistance == None: 
     491                    if self.items_matrix == None: 
    491492                        dst = 'vertex distance signal not set' 
    492493                    else: 
    493494                        dst = 0 
    494495                        for u in selection: 
    495                             dst += self.graph.vertexDistance[u, v] 
     496                            dst += self.items_matrix[u, v] 
    496497                        dst = dst / len(selection) 
    497498                         
     
    691692        self.tips.removeAll() 
    692693         
    693         if self.vertexDistance and self.minComponentEdgeWidth > 0 and self.maxComponentEdgeWidth > 0:           
     694        if self.items_matrix and self.minComponentEdgeWidth > 0 and self.maxComponentEdgeWidth > 0:           
    694695            components = Orange.network.nx.algorithms.components.connected_components(self.graph) 
    695             matrix = self.vertexDistance.avgLinkage(components) 
     696            matrix = self.items_matrix.avgLinkage(components) 
    696697             
    697698            edges = set() 
  • orange/OrangeWidgets/Unsupervised/OWNxExplorer.py

    r7962 r7964  
    4949                       ("Items to Mark", Orange.data.Table, self.markItems),  
    5050                       ("Items Subset", Orange.data.Table, self.setExampleSubset),  
    51                        ("Vertex Distance", Orange.core.SymMatrix, self.setVertexDistance)] 
     51                       ("Items Distance Matrix", Orange.core.SymMatrix, self.setItemsDistanceMatrix)] 
    5252         
    5353        self.outputs = [("Selected Network", Orange.network.Graph), 
    54                         ("Selected Distance Matrix", Orange.core.SymMatrix), 
    55                         ("Selected Examples", Orange.data.Table),  
    56                         ("Unselected Examples", Orange.data.Table),  
    57                         ("Marked Examples", Orange.data.Table), 
     54                        ("Selected Items Distance Matrix", Orange.core.SymMatrix), 
     55                        ("Selected Items", Orange.data.Table),  
     56                        ("Unselected Items", Orange.data.Table),  
     57                        ("Marked Items", Orange.data.Table), 
    5858                        ("Attribute Selection List", AttributeList)] 
    5959         
     
    9898        self.edgeColorSettings = [('net_edges', [[], [('contPalette', (4294967295L, 4278190080L, 0))], [('discPalette', [(204, 204, 204), (179, 226, 205), (253, 205, 172), (203, 213, 232), (244, 202, 228), (230, 245, 201), (255, 242, 174), (241, 226, 204)])]]), ('Default', [[], [('contPalette', (4294967295L, 4278190080L, 0))], [('discPalette', [(0, 0, 255), (255, 0, 0), (0, 255, 0), (255, 128, 0), (255, 255, 0), (255, 0, 255), (0, 255, 255), (128, 0, 255), (0, 128, 255), (255, 223, 128), (127, 111, 64), (92, 46, 0), (0, 84, 0), (192, 192, 0), (0, 127, 127), (128, 0, 0), (127, 0, 127)])]])] 
    9999        self.selectedEdgeSchemaIndex = 0 
    100         self.vertexDistance = None 
     100        self.items_matrix = None 
    101101        self.showDistances = 0 
    102102        self.showMissingValues = 0 
    103103        self.fontSize = 12 
    104104        self.mdsTorgerson = 0 
    105         self.mdsAvgLinkage = 0 
    106         self.mdsSteps = 120 
    107         self.mdsRefresh = 30 
    108         self.mdsStressDelta = 0.00001 
     105        self.mdsAvgLinkage = 1 
     106        self.mdsSteps = 10000 
     107        self.mdsRefresh = 50 
     108        self.mdsStressDelta = 0.0000001 
    109109        self.organism = 'goa_human' 
    110110        self.showTextMiningInfo = 0 
    111111        self.toolbarSelection = 0 
    112         self.minComponentEdgeWidth = 0 
    113         self.maxComponentEdgeWidth = 0 
     112        self.minComponentEdgeWidth = 10 
     113        self.maxComponentEdgeWidth = 70 
    114114        self.mdsFromCurrentPos = 0 
    115115        self.tabIndex = 0 
     
    298298        #ib = OWGUI.widgetBox(ibProto, "Distance Matrix") 
    299299        ibs = OWGUI.widgetBox(ib, orientation="horizontal") 
    300         self.btnMDS = OWGUI.button(ibs, self, "Fragviz", callback=self.mdsComponents, toggleButton=1) 
    301         self.btnESIM = OWGUI.button(ibs, self, "eSim", callback=(lambda: self.mdsComponents(Orange.network.MdsType.exactSimulation)), toggleButton=1) 
    302         self.btnMDSv = OWGUI.button(ibs, self, "MDS", callback=(lambda: self.mdsComponents(Orange.network.MdsType.MDS)), toggleButton=1) 
     300        self.btnMDS = OWGUI.button(ibs, self, "Fragviz", callback=self.mds_components, toggleButton=1) 
     301        self.btnESIM = OWGUI.button(ibs, self, "eSim", callback=(lambda: self.mds_components(Orange.network.MdsType.exactSimulation)), toggleButton=1) 
     302        self.btnMDSv = OWGUI.button(ibs, self, "MDS", callback=(lambda: self.mds_components(Orange.network.MdsType.MDS)), toggleButton=1) 
    303303        ibs = OWGUI.widgetBox(ib, orientation="horizontal") 
    304304        self.btnRotate = OWGUI.button(ibs, self, "Rotate", callback=self.rotateComponents, toggleButton=1) 
     
    433433    def rotateComponentsMDS(self): 
    434434        print "rotate" 
    435         if self.vertexDistance is None: 
     435        if self.items_matrix is None: 
    436436            self.information('Set distance matrix to input signal') 
    437437            self.btnRotateMDS.setChecked(False) 
     
    442442            self.btnRotateMDS.setChecked(False) 
    443443            return 
    444         if self.vertexDistance.dim != self.graph.number_of_nodes(): 
     444        if self.items_matrix.dim != self.graph.number_of_nodes(): 
    445445            self.error('Distance matrix dimensionality must equal number of vertices') 
    446446            self.btnRotateMDS.setChecked(False) 
     
    456456        qApp.processEvents() 
    457457         
    458         self.layout.vertexDistance = self.vertexDistance 
     458        self.layout.items_matrix = self.items_matrix 
    459459        self.progressBarInit() 
    460460         
    461         self.layout.mdsComponents(self.mdsSteps, self.mdsRefresh, self.mdsProgress, self.updateCanvas, self.mdsTorgerson, self.mdsStressDelta, rotationOnly=True, mdsFromCurrentPos=self.mdsFromCurrentPos)             
     461        self.layout.mds_components(self.mdsSteps, self.mdsRefresh, self.mdsProgress, self.updateCanvas, self.mdsTorgerson, self.mdsStressDelta, rotationOnly=True, mdsFromCurrentPos=self.mdsFromCurrentPos)             
    462462             
    463463        self.btnRotateMDS.setChecked(False) 
     
    466466     
    467467    def rotateComponents(self): 
    468         if self.vertexDistance is None: 
     468        if self.items_matrix is None: 
    469469            self.information('Set distance matrix to input signal') 
    470470            self.btnRotate.setChecked(False) 
     
    476476            return 
    477477         
    478         if self.vertexDistance.dim != self.graph.number_of_nodes(): 
     478        if self.items_matrix.dim != self.graph.number_of_nodes(): 
    479479            self.error('Distance matrix dimensionality must equal number of vertices') 
    480480            self.btnRotate.setChecked(False) 
     
    488488        qApp.processEvents() 
    489489         
    490         self.layout.vertexDistance = self.vertexDistance 
     490        self.layout.items_matrix = self.items_matrix 
    491491        self.progressBarInit() 
    492492        self.layout.rotateComponents(self.rotateSteps, 0.0001, self.rotateProgress, self.updateCanvas) 
     
    503503        qApp.processEvents() 
    504504         
    505     def mdsComponents(self, mdsType=Orange.network.MdsType.componentMDS): 
     505    def mds_components(self, mdsType=Orange.network.MdsType.componentMDS): 
    506506        if mdsType == Orange.network.MdsType.componentMDS: 
    507507            btn = self.btnMDS 
     
    513513        btnCaption = btn.text() 
    514514         
    515         if self.vertexDistance is None: 
     515        if self.items_matrix is None: 
    516516            self.information('Set distance matrix to input signal') 
    517517            btn.setChecked(False) 
     
    523523            return 
    524524         
    525         if self.vertexDistance.dim != self.graph.number_of_nodes(): 
     525        if self.items_matrix.dim != self.graph.number_of_nodes(): 
    526526            self.error('Distance matrix dimensionality must equal number of vertices') 
    527527            btn.setChecked(False) 
     
    537537        qApp.processEvents() 
    538538         
    539         self.layout.vertexDistance = self.vertexDistance 
     539        self.layout.items_matrix = self.items_matrix 
    540540        self.progressBarInit() 
    541541         
    542542        if self.mdsAvgLinkage: 
    543             self.layout.mdsComponentsAvgLinkage(self.mdsSteps, self.mdsRefresh, self.mdsProgress, self.updateCanvas, self.mdsTorgerson, self.mdsStressDelta, scalingRatio = self.scalingRatio, mdsFromCurrentPos=self.mdsFromCurrentPos) 
    544         else: 
    545             self.layout.mdsComponents(self.mdsSteps, self.mdsRefresh, self.mdsProgress, self.updateCanvas, self.mdsTorgerson, self.mdsStressDelta, mdsType=mdsType, scalingRatio=self.scalingRatio, mdsFromCurrentPos=self.mdsFromCurrentPos)             
     543            self.layout.mds_components_avg_linkage(self.mdsSteps, self.mdsRefresh, self.mdsProgress, self.networkCanvas.updateCanvas, self.mdsTorgerson, self.mdsStressDelta, scalingRatio = self.scalingRatio, mdsFromCurrentPos=self.mdsFromCurrentPos) 
     544        else: 
     545            self.layout.mds_components(self.mdsSteps, self.mdsRefresh, self.mdsProgress, self.networkCanvas.updateCanvas, self.mdsTorgerson, self.mdsStressDelta, mdsType=mdsType, scalingRatio=self.scalingRatio, mdsFromCurrentPos=self.mdsFromCurrentPos)             
    546546         
    547547        btn.setChecked(False) 
     
    549549        self.progressBarFinished() 
    550550         
    551     def setVertexDistance(self, matrix): 
     551    def setItemsDistanceMatrix(self, matrix): 
    552552        self.error('') 
    553553        self.information('') 
     
    555555         
    556556        if matrix is None or self.graph is None: 
    557             self.vertexDistance = None 
    558             self.layout.vertexDistance = None 
    559             if self.networkCanvas: self.networkCanvas.vertexDistance = None 
     557            self.items_matrix = None 
     558            self.layout.items_matrix = None 
     559            if self.networkCanvas: self.networkCanvas.items_matrix = None 
    560560            return 
    561561 
    562562        if matrix.dim != self.graph.number_of_nodes(): 
    563563            self.error('Distance matrix dimensionality must equal number of vertices') 
    564             self.vertexDistance = None 
    565             self.layout.vertexDistance = None 
    566             if self.networkCanvas: self.networkCanvas.vertexDistance = None 
    567             return 
    568          
    569         self.vertexDistance = matrix 
    570         self.layout.vertexDistance = matrix 
    571         if self.networkCanvas: self.networkCanvas.vertexDistance = matrix 
     564            self.items_matrix = None 
     565            self.layout.items_matrix = None 
     566            if self.networkCanvas: self.networkCanvas.items_matrix = None 
     567            return 
     568         
     569        self.items_matrix = matrix 
     570        self.layout.items_matrix = matrix 
     571        if self.networkCanvas: self.networkCanvas.items_matrix = matrix 
    572572        self.showDistancesCheckBox.setEnabled(1) 
    573573         
     
    579579            self.sendMarkedNodes(self.networkCanvas.getMarkedVertices()) 
    580580        else: 
    581             self.send("Marked Examples", None) 
     581            self.send("Marked Items", None) 
    582582            self.networkCanvas.sendMarkedNodes = None 
    583583         
    584584    def sendMarkedNodes(self, markedNodes):         
    585585        if len(markedNodes) == 0: 
    586             self.send("Marked Examples", None) 
     586            self.send("Marked Items", None) 
    587587            return 
    588588         
    589589        if self.graph is not None and self.graph.items() is not None: 
    590590            items = self.graph.items().getitems(markedNodes) 
    591             self.send("Marked Examples", items) 
    592             return 
    593          
    594         self.send("Marked Examples", None) 
     591            self.send("Marked Items", items) 
     592            return 
     593         
     594        self.send("Marked Items", None) 
    595595         
    596596    def insideviewneighbours(self): 
     
    10971097        if graph is not None: 
    10981098            if graph.items() is not None: 
    1099                 self.send("Selected Examples", graph.items()) 
     1099                self.send("Selected Items", graph.items()) 
    11001100            else: 
    1101                 self.send("Selected Examples", self.networkCanvas.getSelectedExamples()) 
     1101                self.send("Selected Items", self.networkCanvas.getSelectedExamples()) 
    11021102             
    11031103            #print "sendData:", self.visualize.graph.items().domain 
    1104             self.send("Unselected Examples", self.networkCanvas.getUnselectedExamples())     
     1104            self.send("Unselected Items", self.networkCanvas.getUnselectedExamples())     
    11051105            self.send("Selected Network", graph) 
    11061106        else: 
    11071107            items = self.networkCanvas.getSelectedExamples() 
    1108             self.send("Selected Examples", items) 
     1108            self.send("Selected Items", items) 
    11091109                 
    11101110            items = self.networkCanvas.getUnselectedExamples() 
    1111             self.send("Unselected Examples", items) 
     1111            self.send("Unselected Items", items) 
    11121112         
    11131113        matrix = None 
    1114         if self.vertexDistance is not None: 
    1115             matrix = self.vertexDistance.getitems(vertices) 
    1116  
    1117         self.send("Selected Distance Matrix", matrix) 
     1114        if self.items_matrix is not None: 
     1115            matrix = self.items_matrix.getitems(vertices) 
     1116 
     1117        self.send("Selected Items Distance Matrix", matrix) 
    11181118                 
    11191119    def setCombos(self): 
     
    14411441        c.setColorSchemas(colorSettings, selectedSchemaIndex) 
    14421442        return c 
     1443     
    14431444    """ 
    14441445    Layout Optimization 
    14451446    """ 
     1447     
    14461448    def graph_layout(self): 
    14471449        if self.graph is None:   #grafa se ni 
     
    14771479         
    14781480    def graph_layout_method(self, method=None): 
     1481        self.information() 
    14791482        self.stepsSpin.label.setText('Iterations: ') 
    14801483         
     
    14921495            self.stepsSpin.label.setText('Pivots: ') 
    14931496            self.stepsSpin.setEnabled(True) 
     1497             
     1498            if self.items_matrix is None: 
     1499                self.information('Set distance matrix to input signal') 
     1500                return 
     1501            if self.graph is None: 
     1502                self.information('No network found') 
     1503                return 
     1504            if self.items_matrix.dim != self.graph.number_of_nodes(): 
     1505                self.error('Distance matrix dimensionality must equal number of vertices') 
     1506                return 
    14941507        else: 
    14951508            self.stepsSpin.setEnabled(False) 
     
    15911604             
    15921605    def graph_layout_pivot_mds(self): 
    1593         if self.vertexDistance is None: 
     1606        self.information() 
     1607         
     1608        if self.items_matrix is None: 
    15941609            self.information('Set distance matrix to input signal') 
    15951610            return 
     
    15991614            return 
    16001615         
    1601         if self.vertexDistance.dim != self.graph.number_of_nodes(): 
     1616        if self.items_matrix.dim != self.graph.number_of_nodes(): 
    16021617            self.error('Distance matrix dimensionality must equal number of vertices') 
    16031618            return 
    16041619         
    1605         self.frSteps = min(self.frSteps, self.vertexDistance.dim) 
     1620        self.frSteps = min(self.frSteps, self.items_matrix.dim) 
    16061621        qApp.processEvents() 
    1607         mds = orngMDS.PivotMDS(self.vertexDistance, self.frSteps) 
     1622        mds = orngMDS.PivotMDS(self.items_matrix, self.frSteps) 
    16081623        x,y = mds.optimize() 
    1609         self.graph.coors[0] = x 
    1610         self.graph.coors[1] = y 
     1624        self.layout.coors[0] = x 
     1625        self.layout.coors[1] = y 
    16111626        self.networkCanvas.updateCanvas() 
    16121627     
Note: See TracChangeset for help on using the changeset viewer.