Changeset 1910:98d41e5e04b0 in orange-bioinformatics


Ignore:
Timestamp:
11/18/13 16:06:38 (5 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Fixed organism selection.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orangecontrib/bio/widgets/OWSelectGenes.py

    r1909 r1910  
    10381038        super(GeneSetView, self).__init__(*args, **kwargs) 
    10391039 
     1040        self._taxid = None 
     1041 
    10401042        layout = QVBoxLayout() 
    10411043        layout.setContentsMargins(0, 0, 0, 0) 
    10421044 
    10431045        self.orgcombo = QComboBox(minimumWidth=150) 
    1044         self.orgcombo.addItem("Organism") 
    1045         item = self.orgcombo.model().item(0) 
    1046         item.setEnabled(False) 
    1047         self.orgcombo.insertSeparator(1) 
    10481046        self.orgcombo.activated[int].connect(self._on_organismSelected) 
    10491047        layout.addWidget(self.orgcombo) 
     
    10751073        self.initialize() 
    10761074 
    1077     def sizeHint(self): 
    1078         return QSize(500, 550) 
    1079  
    10801075    def initialize(self): 
    10811076        self.gs_hierarchy = gs = genesets.list_all() 
     
    10851080            self.orgcombo.addItem(name, taxid) 
    10861081 
     1082        self.orgcombo.setCurrentIndex(-1) 
     1083 
     1084    def sizeHint(self): 
     1085        return QSize(500, 550) 
     1086 
    10871087    def setCurrentOrganism(self, taxid): 
    10881088        taxids = [tid for tid, _ in self.organisms] 
     
    10901090            taxid = None 
    10911091 
    1092         if taxid not in taxids: 
    1093             taxid = None 
    1094             index = 0 
    1095         else: 
    1096             index = taxid.index(taxid) + 2 
    1097  
    1098         if index != self.orgcombo.currentIndex(): 
     1092        if taxid != self._taxid: 
     1093            self._taxid = taxid 
    10991094            if taxid is None: 
     1095                self.orgcombo.setCurrentIndex(-1) 
     1096            else: 
     1097                index = taxids.index(taxid) 
    11001098                self.orgcombo.setCurrentIndex(index) 
    1101                 self.gsmodel.clear() 
    1102                 self.proxymodel.setSourceModel(None) 
    1103             else: 
    1104                 self.orgcombo.setCurrentIndex(index) 
    1105  
    1106                 currentsets = [(hier, tid) 
    1107                                for hier, tid, _ in self.gs_hierarchy 
    1108                                if tid == taxid] 
    1109  
    1110                 gs_ensure_downloaded([(hier, tid, local) 
    1111                                       for hier, tid, local in self.gs_hierarchy 
    1112                                       if tid == taxid and not local]) 
    1113  
    1114                 sets = [((hier, tid), genesets.load(hier, tid)) 
    1115                         for hier, tid in currentsets] 
    1116  
    1117                 model = sets_to_model(sets) 
    1118                 self.proxymodel.setSourceModel(model) 
    1119                 self.gsview.resizeColumnToContents(0) 
    1120                 self.selectedOrganismChanged.emit(taxid) 
     1099            self._updateGeneSetsModel() 
    11211100 
    11221101    def currentOrganism(self): 
    1123         index = self.orgcombo.currentIndex() 
    1124         if index > 1: 
    1125             item = self.orgcombo.model().item(index) 
    1126             return toString(item.data(Qt.UserRole)) 
    1127         else: 
    1128             return None 
    1129  
    1130     def _on_organismSelected(self, index): 
    1131         if index != -1: 
    1132             item = self.orgcombo.model().item(index) 
    1133             taxid = toString(item.data(Qt.UserRole)) 
    1134             self.setCurrentOrganism(taxid) 
    1135  
    1136     def _on_selectionChanged(self, *args): 
    1137         self.selectionChanged.emit() 
     1102        return self._taxid 
    11381103 
    11391104    def selectedGeneSets(self): 
     
    11441109        gsets = [model.data(row, Qt.UserRole) for row in rows] 
    11451110        return map(toPyObject, gsets) 
     1111 
     1112    def _updateGeneSetsModel(self): 
     1113        taxid = self._taxid 
     1114        if taxid is None: 
     1115            self.proxymodel.setSourceModel(None) 
     1116        else: 
     1117            currentsets = [(hier, tid) 
     1118                           for hier, tid, _ in self.gs_hierarchy 
     1119                           if tid == taxid] 
     1120 
     1121            gs_ensure_downloaded([(hier, tid, local) 
     1122                                  for hier, tid, local in self.gs_hierarchy 
     1123                                  if tid == taxid and not local]) 
     1124 
     1125            sets = [((hier, tid), genesets.load(hier, tid)) 
     1126                    for hier, tid in currentsets] 
     1127 
     1128            model = sets_to_model(sets) 
     1129            self.proxymodel.setSourceModel(model) 
     1130            self.gsview.resizeColumnToContents(0) 
     1131            self.selectedOrganismChanged.emit(taxid) 
     1132 
     1133    def _on_organismSelected(self, index): 
     1134        if index != -1: 
     1135            item = self.orgcombo.model().item(index) 
     1136            taxid = toString(item.data(Qt.UserRole)) 
     1137            self.setCurrentOrganism(taxid) 
     1138 
     1139    def _on_selectionChanged(self, *args): 
     1140        self.selectionChanged.emit() 
    11461141 
    11471142 
Note: See TracChangeset for help on using the changeset viewer.