Changeset 1948:09fcb288b061 in orange-bioinformatics


Ignore:
Timestamp:
01/07/14 15:35:20 (3 months ago)
Author:
markotoplak
Branch:
default
Message:

PIPAx widget can now handle experiments with only some result types.

File:
1 edited

Legend:

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

    r1897 r1948  
    685685 
    686686        self.UpdateExperimentTypes() 
     687        self.UpdateResultsList(reload=reload) 
     688 
     689        self.progressBarFinished() 
     690 
     691        if self.currentSelection: 
     692            self.currentSelection.select(self.experimentsWidget.selectionModel()) 
     693 
     694        self.handle_commit_button() 
     695 
     696    def UpdateResultsList(self, reload=False): 
    687697 
    688698        results_list = {} 
     
    697707        self.results_list = results_list 
    698708        mappings_key_dict = dict(((m["data_id"], m["id"]), key) \ 
    699                                  for key, m in mappings.items()) 
     709                                 for key, m in self.mappings.items()) 
    700710 
    701711        def mapping_unique_id(annot): 
     
    707717 
    708718        elements = [] 
    709         pos = 0 
    710  
    711         for r_id, r_annot in self.results_list.items(): 
    712             pos += 1 
     719 
     720        #softly change the view so that the selection stays the same 
     721 
     722        items_shown = {} 
     723        for i,item in enumerate(self.items): 
     724            c = str(item.text(10)) 
     725            items_shown[c] = i 
     726 
     727        items_to_show = dict( (mapping_unique_id(annot), annot) for annot in self.results_list.values() ) 
     728 
     729        add_items = set(items_to_show) - set(items_shown) 
     730        delete_items = set(items_shown) - set(items_to_show) 
     731 
     732        i = 0 
     733        while i < self.experimentsWidget.topLevelItemCount(): 
     734            it = self.experimentsWidget.topLevelItem(i) 
     735            if str(it.text(10)) in delete_items: 
     736                self.experimentsWidget.takeTopLevelItem(i) 
     737            else: 
     738                i += 1 
     739 
     740        delete_ind = set([ items_shown[i] for i in delete_items ]) 
     741        self.items = [ it for i, it in enumerate(self.items) if i not in delete_ind ] 
     742 
     743        for r_annot in [ items_to_show[i] for i in add_items ]: 
    713744            d = defaultdict(lambda: "?", r_annot) 
    714745            row_items = [""] + [d.get(key, "?") for key, _ in HEADER[1:]] 
     
    747778        self.UpdateCached() 
    748779 
    749         self.progressBarFinished() 
    750  
    751         if self.currentSelection: 
    752             self.currentSelection.select(self.experimentsWidget.selectionModel()) 
    753  
    754         self.handle_commit_button() 
    755  
    756     def UpdateResultsList(self, reload=False): 
    757         results_list = {} 
    758         try: 
    759             results_list = self.dbc.results_list(self.rtype(), reload=reload) 
    760         except Exception: 
    761             results_list = self.dbc.results_list(self.rtype()) 
    762         self.results_list = results_list 
    763         self.UpdateCached() 
    764780 
    765781    def UpdateCached(self): 
Note: See TracChangeset for help on using the changeset viewer.