Changeset 1735:50499d1dc55a in orange-bioinformatics for _bioinformatics/obiKEGG/__init__.py


Ignore:
Timestamp:
04/05/13 19:43:32 (13 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Changed the Organism.gene_aliases method.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _bioinformatics/obiKEGG/__init__.py

    r1734 r1735  
    2020 
    2121from collections import defaultdict 
    22  
     22from itertools import chain 
    2323from datetime import datetime 
    2424 
     
    9494    def gene_aliases(self): 
    9595        """ 
    96         Return known gene aliases (synonyms in other databases). 
    97         """ 
    98         return self.genes.gene_aliases() 
     96        Return a list of sets of equal genes (synonyms) in KEGG for 
     97        this organism. 
     98 
     99        .. note:: 
     100 
     101            This only includes 'ncbi-geneid' and 'ncbi-gi' records 
     102            from the KEGG Genes DBLINKS entries. 
     103 
     104        """ 
     105        definitions = self.api.list(self.org_code) 
     106        ncbi_geneid = self.api.conv(self.org_code, "ncbi-geneid") 
     107        ncbi_gi = self.api.conv(self.org_code, "ncbi-gi") 
     108 
     109        aliases = defaultdict(set) 
     110 
     111        for entry_id, definition in definitions: 
     112            # genes entry id without the organism code 
     113            aliases[entry_id].add(entry_id.split(":", 1)[1]) 
     114            # all names in the NAME field (KEGG API list returns 
     115            # 'NAME; DEFINITION') fields for genes 
     116            names = definition.split(";")[0].split(",") 
     117            aliases[entry_id].update([name.strip() for name in names]) 
     118 
     119        for source_id, target_id in chain(ncbi_geneid, ncbi_gi): 
     120            aliases[target_id].add(source_id.split(":", 1)[1]) 
     121 
     122        return [set([entry_id]).union(names) 
     123                for entry_id, names in aliases.iteritems()] 
    99124 
    100125    def pathways(self, with_ids=None): 
     
    119144    def enzymes(self, genes=None): 
    120145        raise NotImplementedError() 
    121  
    122     def _gm_gene_aliases(self): 
    123         """ 
    124         Return a list of sets of equal genes. This is a hack for 
    125         gene matchers to work faster until the whole implementations 
    126         transitions to REST. Does not include links to DBs. 
    127         """ 
    128         s1 = urllib2.urlopen("http://rest.kegg.jp/list/%s" % self.org_code).read() 
    129         out = [] 
    130         for l in s1.split('\n'): 
    131             if l: 
    132                 tabs = l.split("\t") 
    133                 cset = set([tabs[0]]) 
    134  
    135                 if ":" in tabs[0]: 
    136                     # also add 'identifier' from 'org_code:identifier' 
    137                     cset.add(tabs[0].split(":", 1)[-1]) 
    138  
    139                 try: 
    140                     rest = tabs[1].split(";")[0] 
    141                     cset |= set(rest.split(", ")) 
    142                 except: 
    143                     pass  # do not crash if a line does not conform 
    144                 out.append(cset) 
    145         return out 
    146146 
    147147    def get_enriched_pathways(self, genes, reference=None, 
Note: See TracChangeset for help on using the changeset viewer.