source: orange/Orange/OrangeWidgets/Prototypes/OWTranslateDomain.py @ 10813:9b649b0d7808

Revision 10813:9b649b0d7808, 2.2 KB checked in by Ales Erjavec <ales.erjavec@…>, 2 years ago (diff)

Fixed a NameError.

Line 
1"""
2<name>Translate Domain</name>
3<description>Translate input data into a target domain</description>
4<contact>ales.erjavec(@ at @)fri.uni-lj.si</contact>
5<icons>icons/TranslateDomain.png</icons>
6<tags>translate,transformation</tags>
7
8"""
9
10from OWWidget import *
11
12import OWGUI
13
14import Orange
15
16class OWTranslateDomain(OWWidget):
17    def __init__(self, parent=None, signalManager=None, title="Translate Domain"):
18        OWWidget.__init__(self, parent, signalManager, title, wantMainArea=False)
19
20        self.inputs = [("Target Domain", Orange.data.Table, self.set_target),
21                       ("Input Data", Orange.data.Table, self.set_input)]
22
23        self.outputs = [("Translated Data", Orange.data.Table)]
24
25        box = OWGUI.widgetBox(self.controlArea, "Info")
26        self.info = OWGUI.widgetLabel(box, "No target domain\nNo input data")
27
28        OWGUI.rubber(self.controlArea)
29
30        self.target = None
31        self.input_data = None
32
33    def set_target(self, target=None):
34        self.target = target
35
36    def set_input(self, input_data=None):
37        self.input_data = input_data
38
39    def handleNewSignals(self):
40        self.update_info()
41        self.error(0)
42        self.commit()
43
44    def update_info(self):
45        target_lines = ["No target domain"]
46        input_lines = ["No input data"]
47        if self.target is not None:
48            class_var = self.target.domain.class_var
49            if class_var:
50                class_str = type(class_var).__name__.lower()
51            else:
52                class_str = "no"
53            num_features = len(self.target.domain.features)
54            target_lines = ["Target domain with %i features and %s class." % (num_features, class_str)]
55        if self.input_data is not None:
56            input_lines = ["Input data with %i instances" % len(self.input_data)]
57        self.info.setText("\n".join(target_lines + input_lines))
58
59    def commit(self):
60        self.error(0)
61        translated = None
62        if self.target is not None and self.input_data is not None:
63            try:
64                translated = self.input_data.translate(self.target.domain)
65            except Exception, ex:
66                self.error("Failed to convert the domain (%r)." % ex)
67        self.send("Translated Data", translated)
Note: See TracBrowser for help on using the repository browser.