Changeset 1306:96b1f04ce4d2 in orange-bioinformatics


Ignore:
Timestamp:
01/10/11 17:56:46 (2 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
de2bcb362c9847f78c92e2df032c207df4d4e4bc
Message:
 
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • obiBioMart.py

    r1302 r1306  
    3131import itertools 
    3232 
     33import warnings 
     34 
    3335import orngEnviron 
    3436 
     
    180182                raise StopIteration 
    181183            except Exception, ex: 
    182                 print >> sys.stderr, "An error occured during iteration:\n" 
    183                 traceback.print_exc(file=sys.stderr) 
     184                warnings.warn("An error occured during iteration:\n%s" % str(ex), UserWarning, stacklevel=2) 
     185#                print >> sys.stderr, "An error occured during iteration:\n" 
     186#                traceback.print_exc(file=sys.stderr) 
    184187    return list(_iter(generator)) 
    185188 
     
    190193    DEFAULT_CACHE = shelve.open(os.path.join(orngEnviron.bufferDir, "BioMartCache.pck")) 
    191194except Exception, ex: 
    192     import warnings 
    193195    warnings.warn("Could not open Bio Mart cache! %s" % str(ex)) 
    194196    DEFAULT_CACHE = {} 
     
    200202    elif response.strip().startswith("Problem retrieving datasets"): 
    201203        raise BioMartError(response) 
     204    elif response.startswith("non-BioMart die():"): 
     205        raise BioMartServerError(response) 
    202206 
    203207 
     
    215219        self.address = address if address is not None else DEFAULT_ADDRESS 
    216220        self.cache = cache if cache is not None else DEFAULT_CACHE 
     221        self.errorCache = {} 
    217222         
    218223    def request_url(self, **kwargs): 
    219224        url = self.address + "?" + "&".join("%s=%s" % item for item in kwargs.items() if item[0] != "POST") 
     225#        print url 
    220226        return url.replace(" ", "%20") 
    221227     
    222228    def request(self, **kwargs): 
    223229        url = self.request_url(**kwargs) 
     230        if url in self.errorCache: 
     231            raise self.errorCache[url] 
    224232        if str(url) not in self.cache: 
    225             response = urllib2.urlopen(url).read() 
    226             checkBioMartServerError(response) 
     233            try: 
     234                response = urllib2.urlopen(url).read() 
     235                checkBioMartServerError(response) 
     236            except Exception, ex: 
     237                self.errorCache[url] = ex 
     238                raise ex 
     239             
    227240            self.cache[str(url)] = response 
    228241            if hasattr(self.cache, "sync"): 
     
    476489        self.visible = visible 
    477490        self.__dict__.update(kwargs.items()) 
    478         self.connection = BioMartConnection("http://" + self.host + ":" + self.port + self.path) if connection is None \ 
    479                             or (kwargs.get("redirect", None) == "1" and BioMartConnection.FOLLOW_REDIRECTS) else connection 
     491         
     492        if connection is None: 
     493            connection = BioMartConnection() 
     494             
     495        if kwargs.get("redirect", None) == "1" and BioMartConnection.FOLLOW_REDIRECTS: 
     496            redirect = BioMartConnection("http://" + self.host + ":" + self.port + self.path, cache=connection.cache) 
     497            try: 
     498                registry = redirect.registry() 
     499                connection = redirect 
     500            except urllib2.HTTPError, ex: 
     501                warnings.warn("'%s' is not responding!, using the default original connection. %s" % (redirect.address, str(ex))) 
     502             
     503        self.connection = connection 
     504         
     505#        self.connection = BioMartConnection("http://" + self.host + ":" + self.port + self.path) if connection is None \ 
     506#                            or (kwargs.get("redirect", None) == "1" and BioMartConnection.FOLLOW_REDIRECTS) else connection 
    480507 
    481508    @cached     
     
    487514        except BioMartError, ex: 
    488515            if self.virtualSchema == "default": 
    489                 print >> sys.stderr, "error", ex 
    490516                datasets = self.connection.datasets(mart=self.name).read() 
    491517            else: 
     
    840866         
    841867        dataset = self.registry.dataset(pointerDataset) 
     868         
    842869        conf = dataset.configuration() 
    843870        desc = list(conf.elements(getter, internalName=name)) 
     
    845872            return dataset, desc[0] 
    846873        else: 
    847             import warnings 
    848874            warnings.warn("Could not resolve pointer '%s' in '%s'" % (name, pointerDataset), UserWarning, stacklevel=2) 
    849875            return None, None 
  • widgets/OWBioMart.py

    r1302 r1306  
    717717                     callback = self.clearCache) 
    718718         
     719         
    719720        self.martsCombo = OWGUI.comboBox(self.controlArea, self, "selectedDatabase", "Database", 
    720721                                         callback=self.setSelectedMart, 
     
    779780        self.connect(self.myThread, SIGNAL("finished()"), lambda :sys.stderr.write("Thread finished\n")) 
    780781         
     782        self.error(0) 
    781783        self.setEnabled(False) 
    782784        self.get_registry_async = OWConcurrent.createTask(self._get_registry, 
     
    812814        assert(QThread.currentThread() is self.thread()) 
    813815        if str(status).lower() != "ok": 
    814             print "AsyncCall failed with message:", status 
     816            print >> sys.stderr, "AsyncCall failed with message:", status 
     817            self.error(0, status) 
    815818        self.setEnabled(True) 
    816819             
     
    826829    def setSelectedMart(self): 
    827830        self.mart = self.marts[self.selectedDatabase] 
     831        self.error(0) 
    828832        self.setEnabled(False) 
    829833        self.get_datasets_async = OWConcurrent.createTask(self.mart.datasets, 
     
    842846    def setSelectedDataset(self): 
    843847        self.dataset = self.datasets[self.selectedDataset] 
    844         self.setEnabled(False) 
     848        self.error(0) 
    845849         
    846850        def get_configuration(dataset): 
     
    851855            response = stream.read() 
    852856            return response 
     857         
     858        self.setEnabled(False) 
    853859         
    854860        self.get_configuration_async = OWConcurrent.createTask(get_configuration, (self.dataset,), 
     
    981987                query.add_filter(filter, value) 
    982988         
    983         print query.xml_query() 
     989#        print query.xml_query() 
     990        self.error(0) 
    984991        self.setEnabled(False) 
    985992        self.run_query_async = OWConcurrent.createTask(query.get_example_table, 
     
    10351042    def clearCache(self): 
    10361043        obiBioMart.DEFAULT_CACHE.clear() 
     1044        self.registry.connection.errorCache.clear() 
    10371045     
    10381046if __name__ == "__main__": 
Note: See TracChangeset for help on using the changeset viewer.