Changeset 1495:3ab2f3d8a4e5 in orange-bioinformatics


Ignore:
Timestamp:
10/13/11 14:39:03 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
b3552da13a00acaaa1491e0aa409bef63eff9911
Message:

Added update script for STRING database.
Some minor fixes to obiPPI.STRING.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • obiPPI.py

    r1493 r1495  
    437437        self.filename = orngServerFiles.localpath_download(self.DOMAIN, self.FILENAME) 
    438438        self.db = sqlite3.connect(self.filename) 
    439         self.init_db_index() 
    440439         
    441440    def organisms(self): 
     
    523522        Pass the version of the  STRING release e.g. v8.3. 
    524523        The resulting sqlite database will only contain the protein 
    525         interactions for `taxids` (if None all interactions will be present). 
     524        interactions for `taxids` (if None obiTaxonomy.common_taxids() will 
     525        be used). 
    526526         
    527527        """ 
     
    602602        filesize = os.stat(links_filename).st_size 
    603603         
    604         taxids = set(taxids) if taxids else set(obiTaxonomy.common_taxids()) 
    605                  
     604        if taxids: 
     605            taxids = set(taxids) 
     606        else: 
     607            taxids = [cls.TAXID_MAP.get(id, id) for id in obiTaxonomy.common_taxids()] 
     608            taxids = set(filter(None, taxids)) 
     609                         
    606610        con = sqlite3.connect(orngServerFiles.localpath(cls.DOMAIN, cls.FILENAME)) 
    607611        with con: 
     
    621625            reader = csv.reader(links_file, delimiter=" ") 
    622626             
    623             def read_links(reader): 
     627            def read_links(reader, chunk_size=1000000): 
    624628                links = [] 
    625629                i = 0 
     
    629633                    if taxid1 in taxids and taxid2 in taxids: 
    630634                        links.append((intern(p1), intern(p2), int(score))) 
     635                        if len(links) == chunk_size: 
     636                            yield links 
     637                            links = [] 
    631638                    i += 1 
    632639                    if i % 1000 == 0: # Update the progress every 1000 lines 
    633640                        progress(100.0 * links_file.tell() / filesize) 
    634                 links.sort() 
    635                 return links 
    636              
    637             con.executemany("insert into links values (?, ?, ?)", read_links(reader)) 
     641                if links: 
     642                    yield links 
     643             
     644            for chunk in read_links(reader): 
     645                con.executemany("insert into links values (?, ?, ?)", chunk) 
    638646                 
    639647            con.commit() 
     
    693701                for taxid, name, alias, source in reader: 
    694702                    if taxid in taxids: 
    695                         yield ".".join([taxid, name]), alias 
     703                        yield ".".join([taxid, name]), alias.decode("utf-8", errors="ignore") 
    696704                    i += 1 
    697705                    if i % 1000 == 0: 
     
    699707                         
    700708            con.executemany("insert into aliases values (?, ?)", read_aliases(reader)) 
    701 #            con.commit() 
     709 
     710            print "Indexing the database" 
     711            self.init_db_index() 
     712             
    702713        progress.finish() 
    703714         
Note: See TracChangeset for help on using the changeset viewer.