Changeset 11317:56e332539b11 in orange


Ignore:
Timestamp:
02/15/13 16:38:54 (14 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Code style fix (PEP8)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/Unsupervised/OWSOM.py

    r11217 r11317  
    33<description>Self organizing maps learner.</description> 
    44<icon>icons/SOM.svg</icon> 
    5 <contact>Ales Erjavec (ales.erjevec(@at@)fri.uni.lj.si)</contact>  
     5<contact>Ales Erjavec (ales.erjevec(@at@)fri.uni.lj.si)</contact> 
    66<priority>5010</priority> 
    77""" 
     
    1212import OWGUI 
    1313 
    14 #class orange_input(object): 
    15 #    def __init__(self, input_type, check=None): 
    16 #        pass 
    17 #     
    18 #    def __get__(self, instance): 
    19 #        return self.__call__         
    2014 
    2115class OWSOM(OWWidget): 
    22     settingsList=["xdim", "ydim", "neighborhood", "topology", "alphaType", "iterations1", "iterations2", 
    23                   "radius1", "radius2", "alpha1", "alpha2", "initialization", "eps"] 
    24     def __init__(self ,parent=None , signalManager=None, name="SOM"): 
    25         OWWidget.__init__(self, parent, signalManager, name, wantMainArea=False) 
     16    settingsList = ["xdim", "ydim", "neighborhood", "topology", "alphaType", 
     17                    "iterations1", "iterations2", "radius1", "radius2", 
     18                    "alpha1", "alpha2", "initialization", "eps"] 
     19 
     20    def __init__(self, parent=None, signalManager=None, name="SOM"): 
     21        OWWidget.__init__(self, parent, signalManager, name, 
     22                          wantMainArea=False) 
    2623 
    2724        self.inputs = [("Data", ExampleTable, self.setData)] 
    28         self.outputs = [("Classifier", orange.Classifier), ("Learner", orange.Learner), ("SOM", orngSOM.SOMMap)] 
     25        self.outputs = [("Classifier", orange.Classifier), 
     26                        ("Learner", orange.Learner), 
     27                        ("SOM", orngSOM.SOMMap)] 
    2928 
    30         self.LearnerName="SOM Map" 
     29        self.LearnerName = "SOM Map" 
    3130        self.xdim = 5 
    3231        self.ydim = 10 
     
    4342        self.alpha2 = 0.01 
    4443        self.loadSettings() 
    45 ##        self.TopolMap=[orangeom.SOMLearner.HexagonalTopology, orangeom.SOMLearner.RectangularTopology] 
    46         self.TopolMap = [orngSOM.HexagonalTopology, orngSOM.RectangularTopology] 
    47 ##        self.NeighMap=[orangeom.SOMLearner.BubbleNeighborhood, orangeom.SOMLearner.GaussianNeighborhood] 
    48         self.NeighMap = [orngSOM.NeighbourhoodGaussian, orngSOM.NeighbourhoodBubble] 
    49 ##        self.AlphaMap=[orangeom.SOMLearner.LinearFunction, orangeom.SOMLearner.InverseFunction] 
    50 ##        self.AlphaMap=[1, 2] 
    51         self.learnerName = OWGUI.lineEdit(self.controlArea, self, "LearnerName", box="Learner/Classifier Name", tooltip="Name to be used by other widgets to identify yor Learner/Classifier") 
    52 ##        self.learnerName.setText("SOM Classifier") 
    53 ##        box = OWGUI.widgetBox(self.controlArea, self, "Dimensions") 
    54         box = OWGUI.radioButtonsInBox(self.controlArea, self, "topology", ["Hexagonal topology", "Rectangular topology"], box="Topology") 
    55         OWGUI.spin(box, self, "xdim", 4, 1000, orientation="horizontal", label="Columns") 
    56         OWGUI.spin(box, self, "ydim", 4, 1000, orientation="horizontal", label="Rows") 
    57         OWGUI.radioButtonsInBox(self.controlArea, self, "initialization", ["Linear", "Random"], box="Map Initialization") 
    58         OWGUI.radioButtonsInBox(self.controlArea, self, "neighborhood", ["Gaussian neighborhood", "Bubble neighborhood"], box="Neighborhood") 
    59 ##        OWGUI.radioButtonsInBox(self.controlArea, self, "alphaType", ["Linear function", "Inverse function"], box="Alpha Function Type") 
     44 
     45        self.TopolMap = [orngSOM.HexagonalTopology, 
     46                         orngSOM.RectangularTopology] 
     47 
     48        self.NeighMap = [orngSOM.NeighbourhoodGaussian, 
     49                         orngSOM.NeighbourhoodBubble] 
     50 
     51        self.learnerName = OWGUI.lineEdit( 
     52            self.controlArea, self, "LearnerName", 
     53            box="Learner/Classifier Name", 
     54            tooltip=("Name to be used by other widgets to identify your " 
     55                     "Learner/Classifier") 
     56        ) 
     57 
     58        box = OWGUI.radioButtonsInBox( 
     59            self.controlArea, self, "topology", 
     60            ["Hexagonal topology", "Rectangular topology"], 
     61            box="Topology" 
     62        ) 
     63 
     64        OWGUI.spin(box, self, "xdim", 4, 1000, 
     65                   orientation="horizontal", 
     66                   label="Columns") 
     67 
     68        OWGUI.spin(box, self, "ydim", 4, 1000, 
     69                   orientation="horizontal", 
     70                   label="Rows") 
     71 
     72        OWGUI.radioButtonsInBox(self.controlArea, self, "initialization", 
     73                                ["Linear", "Random"], 
     74                                box="Map Initialization") 
     75 
     76        OWGUI.radioButtonsInBox(self.controlArea, self, "neighborhood", 
     77                                ["Gaussian neighborhood", 
     78                                 "Bubble neighborhood"], 
     79                                box="Neighborhood") 
     80 
    6081        b = OWGUI.widgetBox(self.controlArea, "Radius") 
    61         OWGUI.spin(b, self, "radius1", 2,50, orientation="horizontal", label="Initial radius") 
    62         OWGUI.spin(b, self, "radius2", 1,50, orientation="horizontal", label="Final radius") 
    6382 
    64         b = OWGUI.widgetBox(self.controlArea , "Stoping Conditions") 
     83        OWGUI.spin(b, self, "radius1", 2, 50, 
     84                   orientation="horizontal", label="Initial radius") 
     85 
     86        OWGUI.spin(b, self, "radius2", 1, 50, 
     87                   orientation="horizontal", label="Final radius") 
     88 
     89        b = OWGUI.widgetBox(self.controlArea, "Stopping Conditions") 
    6590        OWGUI.spin(b, self, "iterations1", 10, 10000, label="Iterations") 
    66 ##        OWGUI.doubleSpin(b, self, "eps", 0.0, 1.0, 1e-5, label="Eps") 
    67 ##        tabW=OWGUI.tabWidget(self.controlArea) 
    68 ##        b1=OWGUI.createTabPage(tabW, "Step 1") 
    69 ##        b2=OWGUI.createTabPage(tabW, "Step 2") 
    70 ##         
    71 ##        OWGUI.spin(b1, self, "iterations1", 10, 100000, orientation="horizontal", label="Num. iter.") 
    72 ##        OWGUI.spin(b2, self, "iterations2", 10, 100000, orientation="horizontal", label="Num. iter.") 
    73 ##        OWGUI.spin(b1, self, "radius1", 2,1000, orientation="horizontal", label="Radius") 
    74 ##        OWGUI.spin(b2, self, "radius2", 2,1000, orientation="horizontal", label="Radius") 
    75 ##        OWGUI.doubleSpin(b1, self, "alpha1", 0.0, 1.0, 0.01, orientation="horizontal", label="Alpha") 
    76 ##        OWGUI.doubleSpin(b2, self, "alpha2", 0.0, 1.0, 0.01, orientation="horizontal", label="Alpha") 
    77 ##        self.alpha1=self.alpha1 
    78 ##        self.alpha2=self.alpha2 
    79         OWGUI.button(self.controlArea, self,  "&Apply", callback=self.ApplySettings, default=True) 
     91 
     92        OWGUI.button(self.controlArea, self, "&Apply", 
     93                     callback=self.ApplySettings, 
     94                     default=True) 
    8095 
    8196        OWGUI.rubber(self.controlArea) 
    82          
    83         self.data = None         
    84          
     97 
     98        self.data = None 
     99 
    85100        self.resize(100, 100) 
    86101 
    87     def dataWithDefinedValues(self, data, ): 
     102    def dataWithDefinedValues(self, data): 
    88103        self.warning(1235) 
    89104        self.warning(1236) 
     
    92107            if not any(not ex[attr].isSpecial() for ex in data): 
    93108                exclude.append(attr) 
     109 
    94110        if exclude: 
    95             self.warning(1235, "Excluding attributes with all unknown values: %s." % ", ".join(attr.name for attr in exclude)) 
     111            self.warning(1235, 
     112                         "Excluding attributes with all unknown " 
     113                         "values: %s." % \ 
     114                         ", ".join(attr.name for attr in exclude)) 
     115 
    96116            exclude_class = data.domain.classVar in exclude 
    97117            if exclude_class: 
    98                 self.warning(1236, "Excluding class attribute: %s" % data.domain.classVar.name)  
    99             domain = orange.Domain([attr for attr in data.domain.variables if attr not in exclude], 
    100                                    data.domain.classVar if not exclude_class else False) 
     118                self.warning(1236, 
     119                             "Excluding class attribute: %s" % \ 
     120                             data.domain.classVar.name) 
     121 
     122            domain = orange.Domain( 
     123                [attr for attr in data.domain.variables 
     124                 if attr not in exclude], 
     125                data.domain.classVar if not exclude_class else False 
     126            ) 
     127 
    101128            domain.addmetas(data.domain.getmetas()) 
    102129            data = orange.ExampleTable(domain, data) 
    103              
     130 
    104131        return data 
    105          
     132 
    106133    def setData(self, data=None): 
    107134        self.data = data 
     
    113140            self.send("SOM", None) 
    114141            self.send("Learner", None) 
    115          
    116142 
    117143    def ApplySettings(self): 
    118144        topology = self.TopolMap[self.topology] 
    119145        neigh = self.NeighMap[self.neighborhood] 
    120 ##        alphaT=self.AlphaMap[self.alphaType] 
    121 ##        params=[{"iterations":self.iterations1, "radius":self.radius1, "alpha":self.alpha1}, 
    122 ##                {"iterations":self.iterations2, "radius":self.radius2, "alpha":self.alpha2}] 
    123         self.learner = orngSOM.SOMLearner(name=self.LearnerName, map_shape=(self.xdim, self.ydim), topology=topology, neighbourhood=neigh, 
    124                                         epochs=self.iterations1, eps=self.eps, initialize=self.initialization, 
    125                                         radius_ini=self.radius1, radius_fin=self.radius2) #alphaType=alphaT, parameters=params) 
     146 
     147        self.learner = orngSOM.SOMLearner( 
     148            name=self.LearnerName, 
     149            map_shape=(self.xdim, self.ydim), 
     150            topology=topology, 
     151            neighbourhood=neigh, 
     152            epochs=self.iterations1, 
     153            eps=self.eps, 
     154            initialize=self.initialization, 
     155            radius_ini=self.radius1, 
     156            radius_fin=self.radius2 
     157        ) 
    126158 
    127159        self.send("Learner", self.learner) 
     160 
    128161        if self.data: 
    129162            self.progressBarInit() 
    130             self.classifier = self.learner(self.data, progressCallback=self.progressBarSet) 
     163            self.classifier = self.learner( 
     164                self.data, progressCallback=self.progressBarSet 
     165            ) 
     166 
    131167            self.progressBarFinished() 
    132168            self.classifier.name = self.LearnerName 
     
    135171                self.send("Classifier", self.classifier) 
    136172            self.send("SOM", self.classifier) 
    137          
    138173 
    139174    def sendReport(self): 
    140         self.reportSettings("Topology", 
    141                             [("Shape", ["hexagonal", "rectangular"][self.topology]), 
    142                              ("Size", "%i columns, %i rows" % (self.xdim, self.ydim)) 
    143                             ]) 
    144         self.reportSettings("Optimization", 
    145                             [("Initialization", ["linear", "random"][self.initialization]), 
    146                              ("Neighborhood", ["Gaussian", "bubble"][self.neighborhood]), 
    147                              ("Radius", "initial: %i, final: %i" % (self.radius1, self.radius2)), 
    148                              ("Number of iterations", self.iterations1) 
    149                             ]) 
    150          
     175        self.reportSettings( 
     176            "Topology", 
     177            [("Shape", ["hexagonal", "rectangular"][self.topology]), 
     178             ("Size", "%i columns, %i rows" % (self.xdim, self.ydim))] 
     179        ) 
     180 
     181        self.reportSettings( 
     182            "Optimization", 
     183            [("Initialization", ["linear", "random"][self.initialization]), 
     184             ("Neighborhood", ["Gaussian", "bubble"][self.neighborhood]), 
     185             ("Radius", "initial: %i, final: %i" % \ 
     186              (self.radius1, self.radius2)), 
     187             ("Number of iterations", self.iterations1) 
     188            ]) 
     189 
     190 
    151191if __name__ == "__main__": 
    152192    app = QApplication(sys.argv) 
    153193    w = OWSOM() 
    154 ##    app.setMainWidget(w) 
    155194    w.show() 
    156195    data = orange.ExampleTable("../../doc/datasets/iris.tab") 
    157      
     196 
    158197    w.setData(data) 
    159198    app.exec_() 
Note: See TracChangeset for help on using the changeset viewer.