Ignore:
Timestamp:
11/01/13 02:09:11 (6 months ago)
Author:
blaz <blaz.zupan@…>
Branch:
default
Message:

Changes in headers, widget descriptions text.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/Data/OWFeatureConstructor.py

    r11713 r11748  
    1 """ 
    2 <name>Feature Constructor</name> 
    3 <description>Construct a new continuous attribute computed from existing attributes.</description> 
    4 <icon>icons/FeatureConstructor.svg</icon> 
    5 <priority>3100</priority> 
    6 <contact>Janez Demsar (janez.demsar(@at@)fri.uni-lj.si)</contact> 
    7 """ 
    8  
    91from OWWidget import * 
    102import OWGUI, math, re 
     
    124import inspect 
    135 
     6NAME = "Feature Constructor" 
     7DESCRIPTION = "Constructs new features computed from existing ones." 
     8ICON = "icons/FeatureConstructor.svg" 
     9MAINTAINER = "Janez Demsar" 
     10MAINTAINER_EMAIL = "janez.demsar(@at@)fri.uni-lj.si" 
     11PRIORITY = 3100 
     12CATEGORY = "Data" 
     13INPUTS = [("Data", Orange.data.Table, "setData")] 
     14OUTPUTS = [("Data", Orange.data.Table, )] 
     15 
    1416re_identifier = re.compile(r'([a-zA-Z_]\w*)|("[^"]+")') 
     17 
    1518 
    1619class IdentifierReplacer: 
     
    2831            return "_ex['%s']" % id 
    2932        return id 
     33 
    3034 
    3135class AttrComputer: 
     
    4246                       "triangular": random.triangular, 
    4347                       "uniform": random.uniform}.items()) 
     48 
    4449    def __init__(self, expression): 
    4550        self.expression = expression 
     
    5156            return "?" 
    5257 
     58 
    5359class OWFeatureConstructor(OWWidget): 
    5460    contextHandlers = {"": PerfectDomainContextHandler()} 
     
    6167 
    6268        self.expression = self.attrname = "" 
    63         self.selectedDef = [] 
    64         self.defLabels = [] 
     69        self.selected_def = [] 
     70        self.def_labels = [] 
    6571        self.data = None 
    6672        self.definitions = [] 
    6773 
    68         self.selectedAttr = 0 
     74        self.selected_features = 0 
    6975        self.selectedFunc = 0 
    7076        self.autosend = True 
     
    8086        self.leExpression = OWGUI.lineEdit(vb, self, "expression", "Expression") 
    8187        hhb = OWGUI.widgetBox(vb, None, "horizontal") 
    82         self.cbAttrs = OWGUI.comboBox(hhb, self, "selectedAttr", items = ["(all attributes)"], callback = self.attrListSelected) 
     88        self.cbAttrs = OWGUI.comboBox(hhb, self, "selected_features", items = ["(all attributes)"], callback = self.feature_list_selected) 
    8389        sortedFuncs = sorted(m for m in AttrComputer.FUNCTIONS.keys()) 
    8490        self.cbFuncs = OWGUI.comboBox(hhb, self, "selectedFunc", items = ["(all functions)"] + sortedFuncs, callback = self.funcListSelected) 
     
    9298        OWGUI.button(hb, self, "Add", callback = self.addAttr, autoDefault=True) 
    9399        OWGUI.button(hb, self, "Update", callback = self.updateAttr) 
    94         OWGUI.button(hb, self, "Remove", callback = self.removeAttr) 
    95         OWGUI.button(hb, self, "Remove All", callback = self.removeAllAttr) 
    96  
    97         self.lbDefinitions = OWGUI.listBox(db, self, "selectedDef", "defLabels", callback=self.selectAttr) 
     100        OWGUI.button(hb, self, "Remove", callback = self.remove_feature) 
     101        OWGUI.button(hb, self, "Remove All", callback = self.remove_all_features) 
     102 
     103        self.lbDefinitions = OWGUI.listBox(db, self, "selected_def", 
     104                                           "def_labels", 
     105                                           callback=self.select_feature) 
    98106        self.lbDefinitions.setFixedHeight(160) 
    99107 
     
    110118    def settingsToWidgetCallback(self, handler, context): 
    111119        self.definitions = getattr(context, "definitions", []) 
    112         self.defLabels = ["%s := %s" % t for t in self.definitions] 
    113         self.selectedDef = [] 
     120        self.def_labels = ["%s := %s" % t for t in self.definitions] 
     121        self.selected_def = [] 
    114122 
    115123    def setData(self, data): 
     
    120128        if self.data: 
    121129            self.cbAttrs.addItems([attr.name for attr in self.data.domain]) 
    122         self.removeAllAttr() 
     130        self.remove_all_features() 
    123131        self.openContext("", data) 
    124132        self.apply() 
     
    144152        if not attrexpr: 
    145153            return 
    146         self.defLabels = self.defLabels + ["%s := %s" % attrexpr] # should be like this to update the listbox 
     154        self.def_labels = self.def_labels + ["%s := %s" % attrexpr] # should be like this to update the listbox 
    147155        self.definitions.append(attrexpr) 
    148156        self.expression = self.attrname = "" 
    149         self.applyIf() 
     157        self.apply_if() 
    150158 
    151159    def updateAttr(self): 
    152         if self.selectedDef: 
    153             selected = self.selectedDef[0] 
     160        if self.selected_def: 
     161            selected = self.selected_def[0] 
    154162            attrexpr = self.getAttrExpression(selected) 
    155163            if not attrexpr: 
    156164                return 
    157165             # should be like this to reset the listbox 
    158             self.defLabels = self.defLabels[:selected] + ["%s := %s" % attrexpr] + self.defLabels[selected+1:] 
     166            self.def_labels = self.def_labels[:selected] + ["%s := %s" % attrexpr] + self.def_labels[selected+1:] 
    159167            self.definitions[selected] = attrexpr 
    160             self.applyIf() 
    161  
    162     def removeAttr(self): 
    163         if self.selectedDef: 
    164             selected = self.selectedDef[0] 
     168            self.apply_if() 
     169 
     170    def remove_feature(self): 
     171        if self.selected_def: 
     172            selected = self.selected_def[0] 
    165173            if 0 <= selected < self.lbDefinitions.count(): 
    166                 self.defLabels = self.defLabels[:selected] + self.defLabels[selected+1:] 
     174                self.def_labels = self.def_labels[:selected] + self.def_labels[selected+1:] 
    167175                del self.definitions[selected] 
    168                 self.applyIf() 
    169  
    170     def removeAllAttr(self): 
    171         self.defLabels = [] 
     176                self.apply_if() 
     177 
     178    def remove_all_features(self): 
     179        self.def_labels = [] 
    172180        self.definitions = [] 
    173         self.selectedDef = [] 
     181        self.selected_def = [] 
    174182        self.expression = "" 
    175         self.applyIf() 
    176  
    177     def selectAttr(self): 
    178         if self.selectedDef: 
    179             self.attrname, self.expression = self.definitions[self.selectedDef[0]] 
     183        self.apply_if() 
     184 
     185    def select_feature(self): 
     186        if self.selected_def: 
     187            self.attrname, self.expression = self.definitions[self.selected_def[0]] 
    180188        else: 
    181189            self.attrname = self.expression = "" 
    182190 
    183     def insertIntoExpression(self, what): 
     191    def insert_into_expression(self, what): 
    184192        # Doesn't work: clicking the listbox removes the selection 
    185193        if self.leExpression.hasSelectedText(): 
     
    189197        self.leExpression.setFocus() 
    190198 
    191     def attrListSelected(self): 
    192         if self.selectedAttr: 
    193             attr = str(self.cbAttrs.itemText(self.selectedAttr)) 
     199    def feature_list_selected(self): 
     200        if self.selected_features: 
     201            attr = str(self.cbAttrs.itemText(self.selected_features)) 
    194202            mo = re_identifier.match(attr) 
    195203            if not mo or mo.span()[1] != len(attr): 
    196204                attr = '"%s"' % attr 
    197             self.insertIntoExpression(attr) 
    198             self.selectedAttr = 0 
     205            self.insert_into_expression(attr) 
     206            self.selected_features = 0 
    199207 
    200208    def funcListSelected(self): 
     
    205213                        "gauss", "lognormvariate", "betavariate", "gammavariate", 
    206214                        "triangular", "uniform", "vonmisesvariate", "weibullvariate"]: 
    207                 self.insertIntoExpression(func + "(,)") 
     215                self.insert_into_expression(func + "(,)") 
    208216                self.leExpression.cursorBackward(False, 2) 
    209217            elif func in ["e", "pi"]: 
    210                 self.insertIntoExpression(func) 
     218                self.insert_into_expression(func) 
    211219            else: 
    212                 self.insertIntoExpression(func + "()") 
     220                self.insert_into_expression(func + "()") 
    213221                self.leExpression.cursorBackward(False) 
    214222            self.selectedFunc = 0 
    215223 
    216     def applyIf(self): 
     224    def apply_if(self): 
    217225        self.dataChanged = True 
    218226        if self.autosend: 
Note: See TracChangeset for help on using the changeset viewer.