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()
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
def setUpClass(self): self.temp_dir = tempfile.mkdtemp() self.cache = EnsemblCache(self.temp_dir)
def run(self): cache = EnsemblCache(cache_dir) while self.counter > 0: write(cache) self.counter -= 1
def setUpClass(self): self.temp_dir = tempfile.mkdtemp() self.cache = EnsemblCache(self.temp_dir, "grch37") self.cache.set_ensembl_api_version("3.0.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