Ignore:
Timestamp:
05/07/12 13:40:41 (2 years ago)
Author:
mstajdohar
Branch:
default
rebase_source:
796478979ddab536f07ba9b90d4f4ff9e3170605
Message:

Fixed some errors.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/OWNetworkHist.py

    r9671 r10860  
    1313 
    1414class OWNetworkHist(): 
    15      
     15 
    1616    def __init__(self, parent=None, type=0): 
    1717        self.parent = parent 
    18          
     18 
    1919    def addHistogramControls(self, parent=None): 
    2020        # set default settings 
     
    3030        self.excludeLimit = 1 
    3131        self.percentil = 0 
    32          
     32 
    3333        if parent is None: 
    3434            parent = self.controlArea 
    35              
    36         boxGeneral = OWGUI.widgetBox(parent, box = "Distance boundaries") 
    37          
     35 
     36        boxGeneral = OWGUI.widgetBox(parent, box="Distance boundaries") 
     37 
    3838        OWGUI.lineEdit(boxGeneral, self, "spinLowerThreshold", "Lower:", orientation='horizontal', callback=self.changeLowerSpin, valueType=float) 
    3939        OWGUI.lineEdit(boxGeneral, self, "spinUpperThreshold", "Upper:", orientation='horizontal', callback=self.changeUpperSpin, valueType=float) 
    40         ribg = OWGUI.radioButtonsInBox(boxGeneral, self, "andor", [], orientation='horizontal', callback = self.generateGraph) 
    41         OWGUI.appendRadioButton(ribg, self, "andor", "OR", callback = self.generateGraph) 
    42         b = OWGUI.appendRadioButton(ribg, self, "andor", "AND", callback = self.generateGraph) 
     40        ribg = OWGUI.radioButtonsInBox(boxGeneral, self, "andor", [], orientation='horizontal', callback=self.generateGraph) 
     41        OWGUI.appendRadioButton(ribg, self, "andor", "OR", callback=self.generateGraph) 
     42        b = OWGUI.appendRadioButton(ribg, self, "andor", "AND", callback=self.generateGraph) 
    4343        b.setEnabled(False) 
    4444        OWGUI.spin(boxGeneral, self, "kNN", 0, 1000, 1, label="kNN:", orientation='horizontal', callback=self.generateGraph) 
    4545        OWGUI.doubleSpin(boxGeneral, self, "percentil", 0, 100, 0.1, label="Percentil:", orientation='horizontal', callback=self.setPercentil, callbackOnReturn=1) 
    46          
     46 
    4747        # Options 
    4848        self.attrColor = "" 
    49         ribg = OWGUI.radioButtonsInBox(parent, self, "netOption", [], "Options", callback = self.generateGraph) 
    50         OWGUI.appendRadioButton(ribg, self, "netOption", "All vertices", callback = self.generateGraph) 
    51         OWGUI.appendRadioButton(ribg, self, "netOption", "Exclude small components", callback = self.generateGraph) 
    52         OWGUI.spin(OWGUI.indentedBox(ribg), self, "excludeLimit", 1, 100, 1, label="Less vertices than: ", callback = (lambda h=True: self.generateGraph(h))) 
    53         OWGUI.appendRadioButton(ribg, self, "netOption", "Largest connected component only", callback = self.generateGraph) 
     49        ribg = OWGUI.radioButtonsInBox(parent, self, "netOption", [], "Options", callback=self.generateGraph) 
     50        OWGUI.appendRadioButton(ribg, self, "netOption", "All vertices", callback=self.generateGraph) 
     51        OWGUI.appendRadioButton(ribg, self, "netOption", "Exclude small components", callback=self.generateGraph) 
     52        OWGUI.spin(OWGUI.indentedBox(ribg), self, "excludeLimit", 1, 100, 1, label="Less vertices than: ", callback=(lambda h=True: self.generateGraph(h))) 
     53        OWGUI.appendRadioButton(ribg, self, "netOption", "Largest connected component only", callback=self.generateGraph) 
    5454        OWGUI.appendRadioButton(ribg, self, "netOption", "Connected component with vertex") 
    5555        self.attribute = None 
    56         self.attributeCombo = OWGUI.comboBox(ribg, self, "attribute", box = "Filter attribute")#, callback=self.setVertexColor) 
    57          
    58         ribg = OWGUI.radioButtonsInBox(parent, self, "dstWeight", [], "Distance -> Weight", callback = self.generateGraph) 
    59         OWGUI.appendRadioButton(ribg, self, "dstWeight", "Weight := distance", callback = self.generateGraph) 
    60         OWGUI.appendRadioButton(ribg, self, "dstWeight", "Weight := 1 - distance", callback = self.generateGraph) 
    61          
     56        self.attributeCombo = OWGUI.comboBox(ribg, self, "attribute", box="Filter attribute")#, callback=self.setVertexColor) 
     57 
     58        ribg = OWGUI.radioButtonsInBox(parent, self, "dstWeight", [], "Distance -> Weight", callback=self.generateGraph) 
     59        OWGUI.appendRadioButton(ribg, self, "dstWeight", "Weight := distance", callback=self.generateGraph) 
     60        OWGUI.appendRadioButton(ribg, self, "dstWeight", "Weight := 1 - distance", callback=self.generateGraph) 
     61 
    6262        self.label = '' 
    6363        self.searchString = OWGUI.lineEdit(self.attributeCombo.box, self, "label", callback=self.setSearchStringTimer, callbackOnType=True) 
    6464        self.searchStringTimer = QTimer(self) 
    6565        self.connect(self.searchStringTimer, SIGNAL("timeout()"), self.generateGraph) 
    66          
     66 
    6767        if str(self.netOption) != '3': 
    6868            self.attributeCombo.box.setEnabled(False) 
    69              
     69 
    7070    def setPercentil(self): 
    7171        self.spinLowerThreshold = self.histogram.minValue 
    7272        net = orngNetwork.Network(self.matrix.dim, 0) 
    73         lower, upper = net.getDistanceMatrixThreshold(self.matrix, self.percentil/100) 
     73        lower, upper = net.getDistanceMatrixThreshold(self.matrix, self.percentil / 100) 
    7474        self.spinUpperThreshold = upper 
    7575        self.generateGraph() 
    76          
     76 
    7777    def enableAttributeSelection(self): 
    7878        self.attributeCombo.box.setEnabled(True) 
    79          
     79 
    8080    def setSearchStringTimer(self): 
    8181        self.searchStringTimer.stop() 
     
    8484    def setMatrix(self, data): 
    8585        if data == None: return 
    86          
     86 
    8787        self.matrix = data 
    8888        # draw histogram 
     
    9191        #print "values:",values 
    9292        self.histogram.setValues(values) 
    93          
     93 
    9494        low = min(values) 
    9595        upp = max(values) 
     
    100100        if (self.matrix != None): 
    101101            if hasattr(self.matrix, "items"): 
    102                   
     102 
    103103                if isinstance(self.matrix.items, orange.ExampleTable): 
    104104                    vars = list(self.matrix.items.domain.variables) 
    105                  
     105 
    106106                    metas = self.matrix.items.domain.getmetas(0) 
    107107                    for i, var in metas.iteritems(): 
    108108                        vars.append(var) 
    109                          
     109 
    110110        self.icons = self.createAttributeIconDict() 
    111                       
     111 
    112112        for var in vars: 
    113113            try: 
    114114                self.attributeCombo.addItem(self.icons[var.varType], unicode(var.name)) 
    115115            except: 
    116                 print "error adding ", var, " to the attribute combo" 
     116                print "Error adding ", var, " to the attribute combo." 
    117117 
    118118    def changeLowerSpin(self): 
    119119        self.percentil = 0 
    120          
     120 
    121121        if self.spinLowerThreshold < self.histogram.minValue: 
    122122            self.spinLowerThreshold = self.histogram.minValue 
    123123        elif self.spinLowerThreshold > self.histogram.maxValue: 
    124124            self.spinLowerThreshold = self.histogram.maxValue 
    125              
     125 
    126126        if self.spinLowerThreshold >= self.spinUpperThreshold: 
    127127            self.spinUpperThreshold = self.spinLowerThreshold 
    128              
    129         self.generateGraph() 
    130          
     128 
     129        self.generateGraph() 
     130 
    131131    def changeUpperSpin(self): 
    132132        self.percentil = 0 
    133          
     133 
    134134        if self.spinUpperThreshold < self.histogram.minValue: 
    135135            self.spinUpperThreshold = self.histogram.minValue 
    136136        elif self.spinUpperThreshold > self.histogram.maxValue: 
    137137            self.spinUpperThreshold = self.histogram.maxValue 
    138              
     138 
    139139        if self.spinUpperThreshold <= self.spinLowerThreshold: 
    140140            self.spinLowerThreshold = self.spinUpperThreshold 
    141          
    142         self.generateGraph() 
    143          
    144     def generateGraph(self, N_changed = False): 
     141 
     142        self.generateGraph() 
     143 
     144    def generateGraph(self, N_changed=False): 
    145145        self.searchStringTimer.stop() 
    146146        self.attributeCombo.box.setEnabled(False) 
     
    148148        matrix = None 
    149149        self.warning('') 
    150          
     150 
    151151        if N_changed: 
    152152            self.netOption = 1 
    153              
     153 
    154154        if self.matrix == None: 
    155155            self.infoa.setText("No data loaded.") 
    156156            self.infob.setText("") 
    157157            return 
    158          
     158 
    159159        #print len(self.histogram.yData), len(self.histogram.xData) 
    160         nEdgesEstimate = 2 * sum([self.histogram.yData[i] for i,e in enumerate(self.histogram.xData) if self.spinLowerThreshold <= e <= self.spinUpperThreshold]) 
    161          
     160        nEdgesEstimate = 2 * sum([self.histogram.yData[i] for i, e in enumerate(self.histogram.xData) if self.spinLowerThreshold <= e <= self.spinUpperThreshold]) 
     161 
    162162        if nEdgesEstimate > 200000: 
    163163            self.graph = None 
     
    168168            graph = orngNetwork.Network(self.matrix.dim, 0) 
    169169            matrix = self.matrix 
    170              
    171             if hasattr(self.matrix, "items"):                
     170 
     171            if hasattr(self.matrix, "items"): 
    172172                if type(self.matrix.items) == orange.ExampleTable: 
    173173                    #graph.setattr("items", self.data.items) 
     
    178178                    #graph.setattr("items", list(items)) 
    179179                    graph.items = list(items) 
    180                  
     180 
    181181            # set the threshold 
    182182            # set edges where distance is lower than threshold 
    183                    
     183 
    184184            self.warning(0) 
    185185            if self.kNN >= self.matrix.dim: 
     
    187187            nedges = graph.fromDistanceMatrix(self.matrix, self.spinLowerThreshold, self.spinUpperThreshold, min(self.kNN, self.matrix.dim - 1), self.andor) 
    188188            edges = graph.getEdges() 
    189              
     189 
    190190            #print graph.nVertices, self.matrix.dim 
    191              
     191 
    192192            if self.dstWeight == 1: 
    193193                if graph.directed: 
    194                     for u,v in edges: 
     194                    for u, v in edges: 
    195195                        foo = 1 
    196                         if str(graph[u,v]) != "0": 
    197                             foo = 1.0 - float(graph[u,v]) 
    198                          
    199                         graph[u,v] = foo 
    200                 else: 
    201                     for u,v in edges: 
     196                        if str(graph[u, v]) != "0": 
     197                            foo = 1.0 - float(graph[u, v]) 
     198 
     199                        graph[u, v] = foo 
     200                else: 
     201                    for u, v in edges: 
    202202                        if u <= v: 
    203203                            foo = 1 
    204                             if str(graph[u,v]) != "0": 
    205                                 foo = 1.0 - float(graph[u,v]) 
    206                              
    207                             graph[u,v] = foo 
    208                      
     204                            if str(graph[u, v]) != "0": 
     205                                foo = 1.0 - float(graph[u, v]) 
     206 
     207                            graph[u, v] = foo 
     208 
    209209            n = len(edges) 
    210210            #print 'self.netOption',self.netOption 
     
    213213                components = [x for x in graph.getConnectedComponents() if len(x) > self.excludeLimit] 
    214214                if len(components) > 0: 
    215                     include = reduce(lambda x,y: x+y, components) 
     215                    include = reduce(lambda x, y: x + y, components) 
    216216                    if len(include) > 1: 
    217217                        self.graph = orngNetwork.Network(graph.getSubGraph(include)) 
     
    240240                if self.attributeCombo.currentText() != '' and self.label != '': 
    241241                    components = graph.getConnectedComponents() 
    242                          
     242 
    243243                    txt = self.label.lower() 
    244244                    #print 'txt:',txt 
     
    252252                                    if len(component) > 0: 
    253253                                        vertices.extend(component) 
    254                                          
     254 
    255255                        if len(vertices) > 0: 
    256256                            #print "n vertices:", len(vertices), "n set vertices:", len(set(vertices)) 
     
    260260            else: 
    261261                self.graph = graph 
    262          
     262 
    263263        if matrix != None: 
    264             matrix.items  = self.graph.items 
     264            matrix.items = self.graph.items 
    265265            self.graph_matrix = matrix 
    266              
     266 
    267267        self.pconnected = nedges 
    268268        self.nedges = n 
     
    273273        if hasattr(self, "infoc"): 
    274274            self.infoc.setText("%d edges (%d average)" % (n, n / float(self.matrix.dim))) 
    275          
     275 
    276276        #print 'self.graph:',self.graph+ 
    277277        if hasattr(self, "sendSignals"): 
    278278            self.sendSignals() 
    279          
     279 
    280280        self.histogram.setBoundary(self.spinLowerThreshold, self.spinUpperThreshold) 
Note: See TracChangeset for help on using the changeset viewer.