Changeset 1771:bf833fa5d2a3 in orange-bioinformatics


Ignore:
Timestamp:
04/30/13 17:51:58 (12 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Children:
1772:58718fc3f736, 1777:ab15a6b6fbbe
Message:

Fixed 'Ontology' and 'Annotations' stream parsing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _bioinformatics/obiGO.py

    r1770 r1771  
    285285        self.instances = {} 
    286286        self.slimsSubset = set() 
    287         if isinstance(file, basestring): 
     287 
     288        if file is not None: 
    288289            self.ParseFile(file, progressCallback) 
    289  
    290290        elif rev is not None: 
    291291            if not _CVS_REVISION_RE.match(rev): 
     
    302302                                     if progressCallback else None) 
    303303        else: 
     304            # Load the default ontology file. 
    304305            fool = self.Load(progressCallback) 
    305306            # A fool and his attributes are soon parted 
     
    311312        default_database_path. It looks for a filename starting with 
    312313        'gene_ontology'. If not found it will download it. 
     314 
    313315        """ 
    314316        filename = os.path.join(default_database_path, 
     
    316318        if not os.path.isfile(filename) and not os.path.isdir(filename): 
    317319            orngServerFiles.download("GO", "gene_ontology_edit.obo.tar.gz") 
    318         try: 
    319             return cls(filename, progressCallback=progressCallback) 
    320         except (IOError, OSError), ex: 
    321             raise Exception("Could not locate ontology file") 
     320 
     321        return cls(filename, progressCallback=progressCallback) 
    322322 
    323323    def ParseFile(self, file, progressCallback=None): 
     
    326326        argument to report on the progress. 
    327327        """ 
    328         if type(file) == str: 
     328        if isinstance(file, basestring): 
    329329            if os.path.isfile(file) and tarfile.is_tarfile(file): 
    330330                f = tarfile.open(file).extractfile("gene_ontology_edit.obo") 
    331331            elif os.path.isfile(file): 
    332332                f = open(file) 
     333            elif os.path.isdir(file): 
     334                f = open(os.path.join(file, "gene_ontology_edit.obo")) 
    333335            else: 
    334                 f = open(os.path.join(file, "gene_ontology_edit.obo")) 
     336                raise ValueError("Cannot open %r for parsing" % file) 
    335337        else: 
    336338            f = file 
     
    559561 
    560562        """ 
    561         self.file = file 
    562563        self.ontology = ontology 
    563564        self.allAnnotations = defaultdict(list) 
     
    572573        self.genematcher = genematcher 
    573574        self.taxid = None 
     575 
    574576        if type(file) in [list, set, dict, Annotations]: 
    575577            for ann in file: 
    576578                self.AddAnnotation(ann) 
    577579            if type(file, Annotations): 
    578                 taxid = file.taxid 
     580                self.taxid = file.taxid 
     581 
    579582        elif isinstance(file, basestring) and os.path.exists(file): 
    580583            self.ParseFile(file, progressCallback) 
     
    583586            except IOError: 
    584587                pass 
    585         elif file is not None: 
    586             # Organism code 
     588 
     589        elif isinstance(file, basestring): 
     590            # Assuming organism code/name 
    587591            if rev is not None: 
    588592                if not _CVS_REVISION_RE.match(rev): 
     
    597601 
    598602                if not os.path.exists(filename): 
    599                     self.DownloadAnnotationsAtRev(code, rev, filename, 
    600                                                   progressCallback 
    601                                                   ) 
     603                    self.DownloadAnnotationsAtRev( 
     604                        code, rev, filename, progressCallback) 
    602605 
    603606                self.ParseFile(filename, progressCallback) 
     
    607610                self.__dict__ = a.__dict__ 
    608611                self.taxid = to_taxid(organism_name_search(file)).pop() 
     612        elif file is not None: 
     613            self.ParseFile(file, progressCallback) 
     614 
    609615        if not self.genematcher and self.taxid: 
    610             self.genematcher = obiGene.matcher( 
    611                 [obiGene.GMGO(self.taxid)] + 
    612                 ([obiGene.GMDicty(), 
    613                   [obiGene.GMGO(self.taxid), obiGene.GMDicty()]] 
    614                  if self.taxid == "352472" else []) 
    615             ) 
     616            matchers = [obiGene.GMGO(self.taxid)] 
     617            if self.taxid == "352472": 
     618                matchers.extend( 
     619                    [obiGene.GMDicty(), 
     620                     [obiGene.GMGO(self.taxid), obiGene.GMDicty()]] 
     621                ) 
     622 
     623            self.genematcher = obiGene.matcher(matchers) 
     624 
    616625        if self.genematcher: 
    617626            self.genematcher.set_targets(self.geneNames) 
     
    692701            - an open file-like object of the association file 
    693702        """ 
    694         if type(file) == str: 
     703        if isinstance(file, basestring): 
    695704            if os.path.isfile(file) and tarfile.is_tarfile(file): 
    696705                f = tarfile.open(file).extractfile("gene_association") 
     
    699708            elif os.path.isfile(file): 
    700709                f = open(file) 
     710            elif os.path.isdir(file): 
     711                f = open(os.path.join(file, "gene_association")) 
    701712            else: 
    702                 f = open(os.path.join(file, "gene_association")) 
     713                raise ValueError("Cannot open %r for parsing." % file) 
    703714        else: 
    704715            f = file 
     
    10431054    @staticmethod 
    10441055    def DownloadAnnotations(org, file, progressCallback=None): 
    1045         tFile = tarfile.open(file, "w:gz") if type(file) == str else file 
     1056        if isinstance(file, basestring): 
     1057            tFile = tarfile.open(file, "w:gz") 
     1058        else: 
     1059            tFile = file 
     1060 
    10461061        tmpDir = os.path.join(orngEnviron.bufferDir, "tmp_go/") 
    10471062        try: 
Note: See TracChangeset for help on using the changeset viewer.