예제 #1
0
 def __init__(self, cache_folder, genome_build):
     """ obtain the sequence for a transcript from ensembl
     
     Args:
         cache_folder: path to folder for caching data requested from Ensembl
         genome_build: string indicating the genome build ("grch37" or "grch38")
     """
     
     self.cache = EnsemblCache(cache_folder, genome_build)
     
     self.prior_time = time.time() - 1
     self.rate_limit = 0.067
     
     server_dict = {"grch37": "grch37.", "grch38": ""}
     
     self.server = "http://{}rest.ensembl.org".format(server_dict[genome_build])
     
     self.check_ensembl_api_version()
예제 #2
0
def ensembl_cache(folder=None):
    ''' store/retrive repeated ensembl requests from a persistent sqlite cache
    '''
    if folder is None:
        folder = Path.home() / '.cache' / 'ensembl'
    cache = EnsemblCache(str(folder))

    def decorator(func):
        @functools.wraps(func)
        async def wrapper(*args, **kwargs):
            url = args[1]
            if 'rest.ensembl.org' in url:
                cached = cache.get_cached_data(url)
                if cached is not None:
                    return cached
                data = await func(*args, **kwargs)
                cache.cache_url_data(url, data)
                return data
            else:
                return await func(*args, **kwargs)

        return wrapper

    return decorator
예제 #3
0
 def setUpClass(self):
     self.temp_dir = tempfile.mkdtemp()
     self.cache = EnsemblCache(self.temp_dir)
예제 #4
0
 def run(self):
     cache = EnsemblCache(cache_dir)
     while self.counter > 0:
         write(cache)
         self.counter -= 1
예제 #5
0
 def setUpClass(self):
     self.temp_dir = tempfile.mkdtemp()
     self.cache = EnsemblCache(self.temp_dir, "grch37")
     self.cache.set_ensembl_api_version("3.0.0")
예제 #6
0
 def run(self):
     cache = EnsemblCache(cache_dir, 'grch37')
     cache.set_ensembl_api_version('6.0')
     while self.counter > 0:
         write(cache)
         self.counter -= 1