Changeset 1858:c5c08ee1c3d2 in orange-bioinformatics


Ignore:
Timestamp:
10/04/13 11:05:33 (7 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added some doc strings.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _bioinformatics/widgets/OWSelectGenes.py

    r1857 r1858  
    2323ICON = "icons/SelectGenes.svg" 
    2424 
    25 INPUTS = [("Data", Orange.data.Table, "set_data")] 
     25INPUTS = [("Data", Orange.data.Table, "setData")] 
    2626OUTPUTS = [("Selected Data", Orange.data.Table)] 
    2727 
     
    216216        self._updateActions() 
    217217 
    218     def set_data(self, data): 
     218    def setData(self, data): 
    219219        """ 
    220220        Set the input data. 
     
    245245    @property 
    246246    def geneVar(self): 
     247        """ 
     248        Current gene attribute or None if none available. 
     249        """ 
    247250        if self.data is not None and self.geneIndex >= 0: 
    248251            return self.variables[self.geneIndex] 
     
    257260 
    258261    def commit(self): 
     262        """ 
     263        Send the selected data subset to the output. 
     264        """ 
    259265        gene = self.geneVar 
    260266 
    261267        if gene is not None: 
    262             if self.preserveOrder: 
    263                 selection = set(self.selection) 
    264                 sel = [inst for inst in self.data 
    265                        if str(inst[gene]) in selection] 
    266             else: 
    267                 by_genes = defaultdict(list) 
    268                 for inst in self.data: 
    269                     by_genes[str(inst[gene])].append(inst) 
    270  
    271                 sel = [] 
    272                 for name in self.selection: 
    273                     sel.extend(by_genes.get(name, [])) 
    274  
    275             if sel: 
    276                 data = Orange.data.Table(self.data.domain, sel) 
    277             else: 
    278                 data = Orange.data.Table(self.data.domain) 
    279  
     268            data = select_by_genes(self.data, gene, 
     269                                   gene_list=self.selection, 
     270                                   preserve_order=self.preserveOrder) 
    280271        else: 
    281272            data = None 
     
    410401 
    411402def domain_variables(domain): 
     403    """ 
     404    Return all feature descriptors from the domain. 
     405    """ 
    412406    vars = (domain.features + 
    413407            domain.class_vars + 
     
    417411 
    418412def gene_candidates(data): 
     413    """ 
     414    Return features that could contain gene names. 
     415    """ 
    419416    vars = domain_variables(data.domain) 
    420417    vars = filter(is_string, vars) 
    421418    return vars 
     419 
     420 
     421def select_by_genes(data, gene_feature, gene_list, preserve_order=True): 
     422    if preserve_order: 
     423        selection = set(gene_list) 
     424        sel = [inst for inst in data 
     425               if str(inst[gene_feature]) in selection] 
     426    else: 
     427        by_genes = defaultdict(list) 
     428        for inst in data: 
     429            by_genes[str(inst[gene_feature])].append(inst) 
     430 
     431        sel = [] 
     432        for name in gene_list: 
     433            sel.extend(by_genes.get(name, [])) 
     434 
     435    if sel: 
     436        data = Orange.data.Table(data.domain, sel) 
     437    else: 
     438        data = Orange.data.Table(data.domain) 
     439 
     440    return data 
    422441 
    423442 
     
    431450 
    432451class ListTextEdit(QPlainTextEdit): 
     452    """ 
     453    A text editor specialized for editing a list of items. 
     454    """ 
     455    #: Emitted when the list items change. 
    433456    itemsChanged = Signal(list) 
    434457 
     
    577600 
    578601    def _commonCompletionPrefix(self): 
     602        """ 
     603        Return the common prefix of items in the current completion model. 
     604        """ 
    579605        model = self._completer.completionModel() 
    580606        column = self._completer.completionColumn() 
     
    606632 
    607633    def _getItems(self): 
     634        """ 
     635        Return the current items (a list of strings). 
     636 
     637        .. note:: The inline completion text is not included. 
     638 
     639        """ 
    608640        text = unicode(self.toPlainText()) 
    609641        if self._completionState[0] != -1: 
    610             # Remove the inline completion text from the text 
     642            # Remove the inline completion text 
    611643            _, pos, end = self._completionState 
    612644            text = text[:pos] + text[end:] 
     
    662694 
    663695class ListCompleter(QCompleter): 
     696    """ 
     697    A completer supporting selection of multiple list items. 
     698    """ 
    664699    activated = Signal(list) 
    665700 
     
    724759    w = OWSelectGenes() 
    725760    data = Orange.data.Table("brown-selected") 
    726     w.set_data(data) 
     761    w.setData(data) 
    727762    w.show() 
    728763    app.exec_() 
Note: See TracChangeset for help on using the changeset viewer.