Changeset 1816:1ddb05ba025a in orange-bioinformatics


Ignore:
Timestamp:
06/07/13 15:17:44 (11 months ago)
Author:
Flashpoint <vid.flashpoint@…>
Branch:
default
Message:

Changed the hierarchy name of Custom gene sets in obiGeneSets.py. Moved the statistics information about genesets into an info bar.

Location:
_bioinformatics
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _bioinformatics/obiGeneSets.py

    r1814 r1816  
    164164        tabs = [tab.strip() for tab in s.split("\t")] 
    165165        return GeneSet(id=tabs[0], description=tabs[1], 
    166                                    hierarchy=("Custom Genesets",name), genes=tabs[2:]) 
     166                                   hierarchy=("Custom Gene Sets",name), genes=tabs[2:]) 
    167167 
    168168    def handleNELines(s, fn): 
  • _bioinformatics/widgets/prototypes/OWCustomSets.py

    r1815 r1816  
    4848        self.recent_files = [] 
    4949        self.loadSettings() 
    50         self.recent_files = filter(os.path.exists, self.recent_files) 
     50        try: 
     51            self.recent_files = filter(os.path.exists, self.recent_files) 
     52        except: 
     53            pass 
     54 
    5155 
    5256        layout = QHBoxLayout() 
     
    6872        layout.addWidget(self.browse_button) 
    6973        
    70         # The preview field 
    71         form = QFormLayout() 
    72          
     74        # The preview field         
    7375        box = OWGUI.widgetBox(self.controlArea, "Preview") 
    7476        self.preview_view = QPlainTextEdit() 
     
    7880        box.layout().addWidget(self.preview_view) 
    7981 
    80         OWGUI.button(self.controlArea, self, "Import", callback=self.import_data) 
    81  
     82         
    8283        # The geneset table 
    8384        ma = self.mainArea 
     
    8687        ma.layout().addWidget(self.listView) 
    8788        self.listView.setAllColumnsShowFocus(1) 
    88         self.listView.setColumnCount(5) 
    89         self.listView.setHeaderLabels(["Name", "Gene Sets", "Unique Genes", "Average no. of Genes/Geneset", "Import time"]) 
     89        self.listView.setColumnCount(2) 
     90        self.listView.setHeaderLabels(["Name", "Import time"]) 
    9091 
    9192        self.listView.header().setStretchLastSection(True) 
     
    99100        self.populate_table() 
    100101 
    101         OWGUI.button(self.controlArea, self, "Delete", callback=self.delete_data) 
    102  
     102         
    103103        self.selected_file = None  
    104104 
     
    108108                    lambda: self.set_selected_file(self.recent_files[0]) 
    109109                    ) 
     110 
     111        #Data Set info bar 
     112        info_box = OWGUI.widgetBox(self.controlArea, "Info") 
     113        self.info = OWGUI.widgetLabel(info_box, "No gene set selected") 
     114        self.connect(self.listView, SIGNAL("itemSelectionChanged()"), self.selection) 
     115        self.connect(self.listView, SIGNAL("itemSelectionChanged()"), self.update_preview) 
     116 
     117        info_box.layout().addWidget(self.info)        
     118         
     119        OWGUI.button(self.controlArea, self, "Import", callback=self.import_data) 
     120        OWGUI.button(self.controlArea, self, "Delete", callback=self.delete_data) 
     121 
     122    def selection(self):  
     123        if self.listView.selectedItems(): 
     124            self.info.clear() 
     125            name = self.listView.selectedItems()[0].text(0)             
     126            for geneset in os.listdir(local_path()): 
     127                if geneset.__contains__(str(name)): 
     128                    the_file = os.path.join(local_path(), geneset)  
     129                    sets = pickle.load(open(the_file, "rb")) 
     130                    stats = getGenesetsStats(sets) 
     131                    num_sets, uniq_genes, avg_genes = str(stats[0]), str(stats[1]), str(stats[2]) 
     132                    break 
     133            self.info.setText("Gene Sets: %d\nUnique Genes: %d\nAverage no. of Genes/Gene Set: %d" % (int(num_sets), int(uniq_genes), int(avg_genes))) 
     134        else: 
     135            self.info.setText("No gene set selected") 
     136 
    110137 
    111138    def populate_table(self): 
     
    116143            the_file = os.path.join(local_path(), geneset) 
    117144            mod_time = str(modification_date(the_file)) 
    118             sets = pickle.load(open(the_file, "rb")) 
    119             stats = getGenesetsStats(sets) 
    120145            item.setText(0, name) 
    121             item.setText(1, str(stats[0])) 
    122             item.setText(2, str(stats[1])) 
    123             item.setText(3, str(stats[2])) 
    124             item.setText(4, mod_time[:mod_time.rfind(".")]) 
     146            item.setText(1, mod_time[:mod_time.rfind(".")]) 
    125147 
    126148    def on_select_recent(self, recent): 
     
    158180            self.recent_combo.removeItem(index_to_remove + 1) 
    159181            self.recent_files.pop(index_to_remove + 1) 
    160   
    161         self.update_preview() 
    162      
     182         
    163183    def update_preview(self): 
    164         try: 
    165             text = open(self.selected_file).read() 
    166             final_text="" 
    167             counts = 0 
    168             for i in text.split("\n"): 
    169                 counts += 1 
    170                 if counts == 6: 
     184        if self.listView.selectedItems(): 
     185            final_text = "" 
     186            self.preview_view.clear() 
     187            name = self.listView.selectedItems()[0].text(0)             
     188            for geneset in os.listdir(local_path()): 
     189                if geneset.__contains__(str(name)): 
     190                    the_file = os.path.join(local_path(), geneset)  
     191                    sets = pickle.load(open(the_file, "rb")) 
    171192                    break 
    172                 if len(i) == 0: 
    173                     continue 
    174                 try: 
    175                     display_genes = ", ".join((i.split("\t")[2:])[:5])                    
    176                 except: 
    177                     display_genes = ", ".join(i.split("\t")[2:])  
    178                 genes = i.split("\t")[2:] 
    179                 final_text += (i.split("\t")[0]+" (%d genes)\n" % len(genes)) 
    180                 final_text += display_genes + ",...\n\n" 
    181  
     193            for geneset in sets: 
     194                final_text += geneset.id + "(%d genes)\n" % len(geneset.genes) 
     195                final_text += ", ".join([geneset.genes.pop() for i in range(5)]) + ", ...\n\n" 
    182196            final_text += "..." 
    183197            self.preview_view.setPlainText(final_text) 
    184         except: 
    185             text = None 
    186              
     198        else: 
     199            self.preview_view.clear() 
     200 
    187201    def import_data(self):     
    188202        self.error(0)      
Note: See TracChangeset for help on using the changeset viewer.