Changes in [1755:418d0e7f330a:1754:56ba93b2b1e1] in orange-bioinformatics


Ignore:
Location:
_bioinformatics
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _bioinformatics/obiKEGG/__init__.py

    r1750 r1747  
    1 """ 
     1"""\ 
    22============================================== 
    33KEGG - Kyoto Encyclopedia of Genes and Genomes 
     
    5656import sys 
    5757import urllib2 
    58 import threading 
    5958 
    6059from collections import defaultdict 
    6160from itertools import chain 
    6261from datetime import datetime 
    63 from contextlib import contextmanager 
    6462 
    6563from Orange.utils import lru_cache 
     
    309307    @classmethod 
    310308    def organism_name_search(cls, name): 
    311         return organism_name_search(name) 
     309        genome = KEGGGenome() 
     310        try: 
     311            name = genome.org_code_to_entry_key(name) 
     312        except ValueError: 
     313            pass 
     314 
     315        if name not in genome: 
     316            ids = genome.search(name) 
     317            if ids: 
     318                name = ids.pop(0) if ids else name 
     319            else: 
     320                raise OrganismNotFoundError(name) 
     321 
     322        try: 
     323            return genome[name].organism_code 
     324        except KeyError: 
     325            raise OrganismNotFoundError(name) 
    312326 
    313327    @classmethod 
    314328    def organism_version(cls, name): 
    315329        name = cls.organism_name_search(name) 
    316         with _global_genome_instance() as genome: 
    317             info = genome.api.info(name) 
    318             return info.release 
     330        genome = KEGGGenome() 
     331        info = genome.api.info(name) 
     332        return info.release 
    319333 
    320334    def _set_genematcher(self, genematcher): 
     
    344358def organism_name_search(name): 
    345359    """ 
    346     Search for a organism by `name` and return it's KEGG organism code. 
    347     """ 
    348     with _global_genome_instance() as genome: 
    349         try: 
    350             name = genome.org_code_to_entry_key(name) 
    351         except ValueError: 
    352             pass 
    353  
    354         if name not in genome: 
    355             ids = genome.search(name) 
    356             if ids: 
    357                 name = ids.pop(0) if ids else name 
    358             else: 
    359                 raise OrganismNotFoundError(name) 
    360  
    361         try: 
    362             return genome[name].organism_code 
    363         except KeyError: 
    364             raise OrganismNotFoundError(name) 
     360    Search and organism by `name` and return an KEGG organism code. 
     361    """ 
     362    return KEGGOrganism.organism_name_search(name) 
    365363 
    366364 
     
    372370 
    373371 
     372def organisms(): 
     373    """ 
     374    Return a list of all KEGG organisms. 
     375    """ 
     376    return KEGGOrganism.organisms() 
     377 
     378 
    374379def from_taxid(taxid): 
    375380    """ 
    376381    Return a KEGG organism code for a an NCBI Taxonomy id string `taxid`. 
    377382    """ 
    378     with _global_genome_instance() as genome: 
    379         res = genome.search(taxid) 
    380         for r in res: 
    381             e = genome[r] 
    382  
    383             if e.taxid in [taxid, genome.TAXID_MAP.get(taxid, taxid)]: 
    384                 return e.org_code() 
    385  
     383    genome = KEGGGenome() 
     384    res = genome.search(taxid) 
     385    for r in res: 
     386        e = genome[r] 
     387 
     388        if e.taxid in [taxid, genome.TAXID_MAP.get(taxid, taxid)]: 
     389            return e.org_code() 
     390 
     391    return None 
     392 
     393 
     394def to_taxid(name): 
     395    """ 
     396    Return a NCBI Taxonomy id for a given KEGG Organism name 
     397    """ 
     398    genome = KEGGGenome() 
     399    if name in genome: 
     400        return genome[name].taxid 
     401 
     402    keys = genome.search(name) 
     403    if keys: 
     404        return genome[keys[0]].taxid 
     405    else: 
    386406        return None 
    387  
    388  
    389 def to_taxid(name): 
    390     """ 
    391     Return a NCBI Taxonomy id for a given KEGG Organism name 
    392     """ 
    393     with _global_genome_instance() as genome: 
    394         if name in genome: 
    395             return genome[name].taxid 
    396  
    397         keys = genome.search(name) 
    398         if keys: 
    399             return genome[keys[0]].taxid 
    400         else: 
    401             return None 
    402  
    403  
    404 def _global_genome_instance(): 
    405     genome = getattr(_global_genome_instance, "_genome", None) 
    406     if genome is None: 
    407         genome = KEGGGenome() 
    408         genome._lock = threading.RLock() 
    409         _global_genome_instance._genome = genome 
    410  
    411     @contextmanager 
    412     def instance_locked(instance, lock): 
    413         lock.acquire() 
    414         try: 
    415             yield instance 
    416         finally: 
    417             lock.release() 
    418  
    419     return instance_locked(genome, genome._lock) 
    420407 
    421408 
  • _bioinformatics/widgets/OWGOEnrichmentAnalysis.py

    r1748 r1726  
    158158         
    159159        # freeze until annotation combo box is updateded with available annotations. 
    160         if self.signalManager: 
    161             self.signalManager.freeze(self).push() 
     160        self.signalManager.freeze(self).push() 
    162161        QTimer.singleShot(0, self.UpdateOrganismComboBox) 
    163162         
     
    310309            self.annotationComboBox.setCurrentIndex(self.annotationIndex) 
    311310        finally: 
    312             if self.signalManager: 
    313                 self.signalManager.freeze(self).pop() 
    314  
     311            self.signalManager.freeze(self).pop() 
     312             
    315313    def UpdateGeneMatcher(self): 
    316314        dialog = GeneMatcherDialog(self, defaults=self.geneMatcherSettings, modal=True) 
     
    10191017    app = QApplication(sys.argv) 
    10201018    w=OWGOEnrichmentAnalysis() 
    1021     data = orange.ExampleTable("brown-selected.tab") 
     1019    data = orange.ExampleTable("../../../doc/datasets/brown-selected.tab") 
    10221020    w.show() 
    10231021    w.SetClusterDataset(data) 
  • _bioinformatics/widgets/OWGsea.py

    r1749 r1726  
    255255    def UpdateOrganismComboBox(self): 
    256256        try: 
    257             genome = obiKEGG.KEGGGenome() 
    258  
    259             self.allOrganismCodes = genome 
    260  
     257            self.progressBarInit() 
     258            with orngServerFiles.DownloadProgress.setredirect(self.progressBarSet): 
     259                genome = obiKEGG.KEGGGenome() 
     260            self.progressBarFinished() 
     261             
     262            self.allOrganismCodes = genome  
     263     
    261264            essential = genome.essential_organisms() 
    262  
    263             local = [name.split(".")[0].split("_")[-1] 
    264                      for name in orngServerFiles.listfiles("KEGG") 
    265                      if "kegg_genes" in name] 
    266  
    267             entry_keys = map(genome.org_code_to_entry_key, 
    268                              essential + local) 
    269  
    270             entries = genome.batch_get(entry_keys) 
    271  
    272             items = [entry.definition for entry in entries] 
    273  
    274             self.organismTaxids = [entry.taxid for entry in entries] 
    275  
    276             self.organismComboBox.clear() 
     265             
     266            local = [name.split(".")[0].split("_")[-1] for name in orngServerFiles.listfiles("KEGG") if "kegg_genes" in name] 
     267            self.organismCodes = [(code, organism.definition) for code, organism in self.allOrganismCodes.items() if code in local or code in essential] 
     268            self.organismCodes.sort() 
     269            items = [desc for code, desc in self.organismCodes] 
     270            self.organismCodes = [obiKEGG.to_taxid(code) for code, desc in self.organismCodes] 
     271             
    277272            self.organismComboBox.addItems(items) 
    278273        finally: 
    279             if self.signalManager: 
    280                 self.signalManager.freeze(self).pop() 
     274            self.signalManager.freeze(self).pop() #setFreeze(0) 
    281275 
    282276 
     
    322316        #FROM KEGG WIDGET - organism selection 
    323317        self.allOrganismCodes = {} 
    324         self.organismTaxids = [] 
     318        self.organismCodes = [] 
    325319        self.organismComboBox = cb = OWGUI.comboBox(box, self, "organismIndex", items=[], debuggingEnabled=0) #changed 
    326320        cb.setMaximumWidth(200) 
    327  
    328         if self.signalManager: 
    329             self.signalManager.freeze(self).push() 
     321        self.signalManager.freeze(self).push() #setFreeze(1) 
    330322        QTimer.singleShot(100, self.UpdateOrganismComboBox) 
    331323  
     
    574566        collectionNames = [ self.geneSel[a] for a in self.gridSel ] 
    575567 
    576         organism = self.organismTaxids[self.organismIndex] 
     568        organism = self.organismCodes[self.organismIndex] 
    577569 
    578570        if self.gsgo: 
     
    696688            taxid = data_hints.get_hint(data, "taxid", None) 
    697689            try: 
    698                 self.organismIndex = self.organismTaxids.index(taxid) 
     690                code = obiKEGG.from_taxid(taxid) 
     691                self.organismIndex = self.organismCodes.index(code) 
    699692            except Exception, ex: 
    700693                pass 
    701  
     694             
    702695            if obiGsea.already_have_correlations(data): 
    703696 
     
    807800    #d = orange.ExampleTable('tmp.tab') 
    808801    #d = orange.ExampleTable('../gene_three_lines_log.tab') 
    809  
    810     QTimer.singleShot(1000, lambda : ow.setData(d)) 
     802    ow.setData(d) 
    811803 
    812804    a.exec_() 
  • _bioinformatics/widgets/OWKEGGPathwayBrowser.py

    r1751 r1740  
    300300            tooltip="Select the organism of the input genes") 
    301301 
    302         if self.signalManager: 
    303             self.signalManager.freeze(self).push() 
     302        self.signalManager.freeze(self).push() 
    304303 
    305304        # Selection of genes attribute 
     
    388387 
    389388        self.setEnabled(False) 
    390         self.infoLabel.setText("Fetching organism definitions\n") 
    391389        QTimer.singleShot(100, self.UpdateOrganismComboBox) 
    392390 
     
    415413            # in the common list. 
    416414 
     415            self.infoLabel.setText("Fetching organism definitions\n") 
     416 
    417417            keys = map(genome.org_code_to_entry_key, essential + common) 
    418418 
     
    428428 
    429429            self.organismCodes = [code for code, desc in codes] 
    430             self.organismComboBox.clear() 
    431430            self.organismComboBox.addItems(items) 
    432             self.organismComboBox.setCurrentIndex(self.organismIndex) 
    433431        finally: 
    434432            self.setEnabled(True) 
    435433            self.infoLabel.setText("No data on input\n") 
    436             if self.signalManager: 
    437                 self.signalManager.freeze(self).pop() 
     434            self.signalManager.freeze(self).pop() 
    438435 
    439436    def Clear(self): 
     
    924921if __name__ == "__main__": 
    925922    app = QApplication(sys.argv) 
     923    data = Orange.data.Table("brown-selected.tab") 
    926924    w = OWKEGGPathwayBrowser() 
     925    w.UpdateOrganismComboBox() 
    927926    w.show() 
    928  
    929     data = Orange.data.Table("brown-selected.tab") 
    930  
    931     QTimer.singleShot(1000, lambda: w.SetData(data)) 
    932     QTimer.singleShot(1500, w.handleNewSignals) 
     927    w.SetData(Orange.data.Table(data[:])) 
     928    QTimer.singleShot(10, w.handleNewSignals) 
    933929 
    934930    app.exec_() 
  • _bioinformatics/widgets/OWPIPA.py

    r1748 r1726  
    554554 
    555555    def UpdateExperimentTypes(self): 
    556         if self.signalManager: 
    557             self.signalManager.freeze(self).push() 
     556        self.signalManager.freeze(self).push() #setFreeze(1) 
    558557        try: 
    559558            self.expressionTypesCB.clear() 
     
    563562            pass 
    564563        finally: 
    565             if self.signalManager: 
    566                 self.signalManager.freeze(self).pop() 
    567  
     564            self.signalManager.freeze(self).pop() #setFreeze(0) 
    568565        self.ctypei = max(0, min(self.ctypei, len(self.exTypes)-1)) 
    569566 
  • _bioinformatics/widgets/OWSetEnrichment.py

    r1748 r1726  
    8484        self.loadSettings() 
    8585         
    86         if self.signalManager: 
    87             self.signalManager.freeze(self).push() 
     86        self.signalManager.freeze(self).push() 
    8887        QTimer.singleShot(50, self.updateHierarchy) 
    8988         
     
    212211            self.genesets = all 
    213212        finally: 
    214             if self.signalManager: 
    215                 self.signalManager.freeze(self).pop() 
     213            self.signalManager.freeze(self).pop() #setFreeze(self.signalManager.freezing - 1) 
    216214         
    217215    def setData(self, data=None): 
     
    576574    w = OWSetEnrichment() 
    577575    w.updateHierarchy() 
    578     data = orange.ExampleTable("brown-selected") 
     576    data = orange.ExampleTable("../../../doc/datasets/brown-selected") 
    579577#    data = orange.ExampleTable("../human") 
    580578#    print cProfile.runctx("w.setData(data)", globals(), locals()) 
Note: See TracChangeset for help on using the changeset viewer.