source: orange/Orange/OrangeWidgets/Unsupervised/OWNxFromDistances.py @ 9671:a7b056375472

Revision 9671:a7b056375472, 3.6 KB checked in by anze <anze.staric@…>, 2 years ago (diff)

Moved orange to Orange (part 2)

Line 
1"""
2<name>Net from Distances</name>
3<description>Costructs Graph object by connecting nodes from ExampleTable where distance between them is between given threshold.</description>
4<icon>icons/NetworkFromDistances.png</icon>
5<contact>Miha Stajdohar (miha.stajdohar(@at@)gmail.com)</contact> 
6<priority>6440</priority>
7"""
8
9#
10# OWNetworkFromDistances.py
11#
12
13import copy
14import random
15
16import Orange
17import OWGUI
18
19from OWNxHist import *
20from OWWidget import *
21from OWGraph import *
22from OWHist import *
23
24class OWNxFromDistances(OWWidget, OWNxHist):
25    settingsList=["spinLowerThreshold", "spinUpperThreshold", "netOption", 
26                  "dstWeight", "kNN", "andor", "excludeLimit"]
27   
28    def __init__(self, parent=None, signalManager=None):
29        OWWidget.__init__(self, parent, signalManager, "Nx from Distances")
30        OWNxHist.__init__(self)
31       
32        self.inputs = [("Distances", Orange.core.SymMatrix, self.setMatrix)]
33        self.outputs = [("Network", Orange.network.Graph), 
34                        ("Data", Orange.data.Table), 
35                        ("Distances", Orange.core.SymMatrix)]
36
37        self.addHistogramControls()
38       
39        # get settings from the ini file, if they exist
40        self.loadSettings()
41       
42        # GUI
43        # general settings
44        boxHistogram = OWGUI.widgetBox(self.mainArea, box = "Distance histogram")
45        self.histogram = OWHist(self, boxHistogram)
46        boxHistogram.layout().addWidget(self.histogram)
47
48        boxHistogram.setMinimumWidth(500)
49        boxHistogram.setMinimumHeight(300)
50       
51        # info
52        boxInfo = OWGUI.widgetBox(self.controlArea, box = "Network info")
53        self.infoa = OWGUI.widgetLabel(boxInfo, "No data loaded.")
54        self.infob = OWGUI.widgetLabel(boxInfo, '')
55        self.infoc = OWGUI.widgetLabel(boxInfo, '')
56       
57        OWGUI.rubber(self.controlArea)
58       
59        self.resize(700, 100)
60
61    def sendReport(self):
62        self.reportSettings("Settings",
63                            [("Edge thresholds", "%.5f - %.5f" % \
64                              (self.spinLowerThreshold, \
65                               self.spinUpperThreshold)),
66                             ("Selected vertices", ["All", \
67                                "Without isolated vertices", 
68                                "Largest component", 
69                                "Connected with vertex"][self.netOption]),
70                             ("Weight", ["Distance", "1 - Distance"][self.dstWeight])])
71        self.reportSection("Histogram")
72        self.reportImage(self.histogram.saveToFileDirect, QSize(400,300))
73        self.reportSettings("Output graph",
74                            [("Vertices", self.matrix.dim),
75                             ("Edges", self.nedges),
76                             ("Connected vertices", "%i (%.1f%%)" % \
77                              (self.pconnected, self.pconnected / \
78                               max(1, float(self.matrix.dim))*100))])
79       
80    def sendSignals(self):
81        if self.graph != None:
82            #setattr(matrix, "items", self.graph.items)
83            self.matrix.items = self.graph.items()
84       
85        self.send("Network", self.graph)
86       
87        if self.matrix:
88            self.send("Distances", self.matrix)
89           
90        if self.graph == None:
91            self.send("Data", None)
92        else:
93            self.send("Data", self.graph.items())
94                                                                     
95if __name__ == "__main__":   
96    appl = QApplication(sys.argv)
97    ow = OWNxFromDistances()
98    ow.show()
99    appl.exec_()
Note: See TracBrowser for help on using the repository browser.