Changeset 1614:b8ee06613d54 in orange-bioinformatics


Ignore:
Timestamp:
05/08/12 13:56:27 (2 years ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added columns from the gene info view to the output.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • widgets/OWGeneInfo.py

    r1338 r1614  
    88from __future__ import with_statement 
    99 
     10import Orange 
     11 
    1012import obiGene, obiTaxonomy 
    1113import orange 
     
    4143        self._roleData[role][row][col] = data 
    4244         
    43     def data(self, index, role): 
     45    def data(self, index, role=Qt.DisplayRole): 
    4446        row, col = index.row(), index.column() 
    4547        return self._roleData[role][row][col] 
     
    5153        return QModelIndex() 
    5254     
    53     def rowCount(self, index): 
     55    def rowCount(self, index=QModelIndex()): 
    5456        if index.isValid(): 
    5557            return 0 
     
    5759            return len(self._data) 
    5860         
    59     def columnCount(self, index): 
     61    def columnCount(self, index=QModelIndex()): 
    6062        return len(self._header) 
    6163 
    62     def headerData(self, section, orientation, role): 
     64    def headerData(self, section, orientation, role=Qt.DisplayRole): 
    6365        if role==Qt.DisplayRole: 
    6466            return QVariant(self._header[section]) 
     
    404406        if not self.data: 
    405407            return 
    406          
    407         mapToSource = self.treeWidget.model().mapToSource 
     408        model = self.treeWidget.model() 
     409        mapToSource = model.mapToSource 
    408410        selectedIds = [self.cells[mapToSource(index).row()][0] for index in self.treeWidget.selectedIndexes()] 
    409411        selectedRows = self.treeWidget.selectedIndexes() 
    410412        selectedRows = [mapToSource(index).row() for index in selectedRows] 
     413        model = model.sourceModel() 
    411414         
    412415        selectedGeneids = [self.row2geneinfo[row] for row in selectedRows] 
    413416        selectedIds = [self.geneinfo[i][0] for i in selectedGeneids] 
    414417        selectedIds = set(selectedIds) 
     418        gene2row = dict((self.geneinfo[self.row2geneinfo[row]][0], row) \ 
     419                        for row in selectedRows) 
    415420         
    416421        if self.useAttr: 
     
    426431            geneinfo = dict(self.geneinfo) 
    427432            examples = [ex for ex in self.data if str(ex[attr]) in selectedIds] 
     433            if True:  # Add gene info 
     434                domain = orange.Domain(self.data.domain, self.data.domain.classVar) 
     435                domain.addmetas(self.data.domain.getmetas()) 
     436                n_columns = model.columnCount() 
     437 
     438                headers = [str(model.headerData(i, Qt.Horizontal, Qt.DisplayRole).toString()) \ 
     439                           for i in range(n_columns)] 
     440                new_meta_attrs = [(orange.newmetaid(), orange.StringVariable(name)) \ 
     441                                  for name in headers] 
     442                domain.addmetas(dict(new_meta_attrs)) 
     443                examples = [orange.Example(domain, ex) for ex in examples] 
     444                for ex in examples: 
     445                    for i, (_, meta) in enumerate(new_meta_attrs): 
     446                        row = gene2row[str(ex[attr])] 
     447                        ex[meta] = str(model.data(model.index(row, i), Qt.DisplayRole).toString()) 
     448 
    428449            if examples: 
    429450                newdata = orange.ExampleTable(examples) 
     
    515536if __name__ == "__main__": 
    516537    app = QApplication(sys.argv) 
    517     data = orange.ExampleTable("../../orange/doc/datasets/brown-selected.tab") 
     538    data = orange.ExampleTable("brown-selected.tab") 
    518539    w = OWGeneInfo() 
    519540    w.show() 
Note: See TracChangeset for help on using the changeset viewer.