Changeset 3514:c291e6b475c2 in orange


Ignore:
Timestamp:
04/06/07 16:13:02 (7 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
aeaafa8812d1744e207b7385b5a25085ff7b8370
Message:

lower, upper bounds

File:
1 edited

Legend:

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

    r3509 r3514  
    1919     
    2020    def __init__(self, parent=None, signalManager=None): 
    21         OWWidget.__init__(self, parent, signalManager, "Connect Nodes by Euclid") 
     21        OWWidget.__init__(self, parent, signalManager, "Similarity Network") 
    2222         
    2323        self.inputs = [("Distance Matrix", orange.SymMatrix, self.cdata, Default)] 
    2424        self.outputs = [("Graph with ExampleTable", Graph), ("Examples", ExampleTable)] 
    2525 
    26         self.threshold = 0 
     26        self.spinLowerThreshold = 0 
     27        self.spinLowerChecked = False 
     28        self.spinUpperThreshold = 0 
     29        self.spinUpperChecked = False 
    2730     
    2831        # GUI 
    2932        # general settings 
    30         boxGeneral = QVGroupBox("General Settings", self.controlArea) 
    31         self.spin = OWGUI.doubleSpin(boxGeneral, self, "threshold", 0, 100000, step=0.01, label="Threshold:", callback=self.changeSpin) 
    32         self.spin.setMinimumWidth(250) 
     33        boxGeneral = QVGroupBox("Thresholding", self.controlArea) 
     34        #cb, self.spinLower = OWGUI.checkWithSpin(boxGeneral, self, "Lower:", 0, 100000, "spinLowerChecked", "spinLowerThreshold", step=0.01, spinCallback=self.changeSpin) 
     35        #cb, self.spinUpper = OWGUI.checkWithSpin(boxGeneral, self, "Upper:", 0, 100000, "spinUpperChecked", "spinUpperThreshold", step=0.01, spinCallback=self.changeSpin) 
     36         
     37        OWGUI.lineEdit(boxGeneral, self, "spinLowerThreshold", "Lower:", callback=self.changeSpin, valueType=float) 
     38        OWGUI.lineEdit(boxGeneral, self, "spinUpperThreshold", "Upper:", callback=self.changeSpin, valueType=float) 
    3339         
    3440        # info 
     
    3743        self.infob = QLabel('', boxInfo) 
    3844         
    39         self.resize(150,80) 
     45        self.resize(230,80) 
    4046 
    4147        # set default settings 
     
    4753    def cdata(self, data): 
    4854        self.data = data 
     55         
     56        maxValue = max([max(r) for r in data]) 
     57        print maxValue 
     58        #self.spinLower.setMaxValue(maxValue) 
     59        #self.spinUpper.setMaxValue(maxValue) 
     60         
    4961        self.generateGraph() 
    5062         
     
    5769            self.infob.setText("") 
    5870            return 
    59          
    60         # construct the function to measure the distances 
    61         dist = data 
    62          
     71 
    6372        nedges = []  
    64         for i in range(len(self.data)): 
     73        print self.data.dim 
     74        for i in range(self.data.dim): 
    6575           n = 0 
    66            for j in range(len(self.data)): 
     76           for j in range(self.data.dim): 
    6777              if i == j: continue 
    68               if dist(self.data[i], self.data[j]) < self.threshold: 
     78              if self.spinLowerThreshold < self.data[i][j] and self.data[i][j] < self.spinUpperThreshold: 
    6979                 n += 1 
    7080           nedges.append(n) 
    7181        n = 0; idid = [] 
    72         for i in range(len(self.data)): 
     82        for i in range(self.data.dim): 
    7383           idid.append(n) 
    7484           if nedges[i]: 
    7585              n += 1 
    7686 
    77         self.infoa.setText("%d vertices, " % len(self.data) + "%d (%3.2f) not connected" % (nedges.count(0), nedges.count(0)/float(len(self.data)))) 
     87        self.infoa.setText("%d vertices, " % self.data.dim + "%d (%3.2f) not connected" % (nedges.count(0), nedges.count(0)/float(self.data.dim))) 
    7888 
    79         graph = orange.GraphAsList(len(self.data), 0) 
    80         graph.setattr("items", self.data) 
     89        graph = orange.GraphAsList(self.data.dim, 0) 
     90        graph.setattr("items", self.data.items) 
    8191         
    8292        # set the threshold 
    8393        # set edges where distance is lower than threshold 
    8494        n = 0 
    85         for i in range(len(self.data)): 
    86            for j in range(i+1): 
     95        print self.spinLowerThreshold 
     96        print self.spinUpperThreshold 
     97        for i in range(self.data.dim): 
     98           for j in range(i): 
    8799              if i == j:  
    88100                  continue 
    89               if dist(self.data[i], self.data[j]) < self.threshold: 
     101              if self.spinLowerThreshold < self.data[i][j] and self.data[i][j] < self.spinUpperThreshold: 
    90102                  n += 1 
    91103                  graph[i,j] = 1 
    92104           
    93105        self.graph = graph 
    94         self.infob.setText("%d edges (%d average)" % (n, n/float(len(self.data)))) 
     106        self.infob.setText("%d edges (%d average)" % (n, n/float(self.data.dim))) 
    95107        self.send("Graph with ExampleTable", graph) 
    96108        self.send("Examples", graph.items) 
Note: See TracChangeset for help on using the changeset viewer.