source: orange/orange/OrangeWidgets/Prototypes/OWShuffle.py @ 9133:7ac18139ee65

Revision 9133:7ac18139ee65, 1.3 KB checked in by ales_erjavec <ales.erjavec@…>, 2 years ago (diff)

Added Shuffle widget.

Line 
1"""
2<name>Shuffle</name>
3<description>Shuffle the instances in a data table</description>
4
5"""
6
7from OWWidget import *
8import OWGUI
9
10import random
11import Orange
12
13class OWShuffle(OWWidget):
14    def __init__(self, parent=None, signalManager=None, title="Suffle"):
15        OWWidget.__init__(self, parent, signalManager, title,
16                          wantMainArea=False)
17       
18        self.inputs = [("Data Table", Orange.data.Table, self.set_data)]
19        self.outputs = [("Shuffled Data Table", Orange.data.Table)]
20       
21        self.seed = 0
22       
23        OWGUI.lineEdit(self.controlArea, self, "seed", box="Seed",
24                       tooltip="Random seed",
25                       callback=self.run,
26                       valueType=int,
27                       validator=QIntValidator()
28                       )
29       
30    def set_data(self, data=None):
31        self.data = data
32        self.run()
33       
34    def run(self):
35        shuffled = None
36        if self.data is not None:
37            rand = random.Random(self.seed)
38            shuffled = list(self.data)
39            rand.shuffle(shuffled)
40            shuffled = Orange.data.Table(shuffled) if shuffled else \
41                       Orange.data.Table(self.data.domain) # In case of empty table
42        self.send("Shuffled Data Table", shuffled)
43   
Note: See TracBrowser for help on using the repository browser.