示例#1
0
    def get_domain_ranges(self, sequence):
        if self.url is None:
            raise InitError("interpro url is not set")

        job_id = self._interpro_submit(sequence)

        t0 = time()
        while (time() - t0) < self.job_timout:

            status = self._interpro_status(job_id)

            if status in ['RUNNING', 'PENDING', 'STARTED']:
                sleep(self.poll_interval)
            elif status == 'NOT_FOUND':
                job_id = self._interpro_submit(sequence)
            else:
                break

        if status == 'RUNNING':
            raise ServiceError("inteproscan job timed out")
        elif status in ['FAILURE', 'ERROR']:
            raise ServiceError(self._interpro_error(job_id))
        elif status != 'FINISHED':
            raise ServiceError("inteproscan job status = " + status)

        xml_str = self._interpro_result(job_id)

        return self._parse_interpro_ranges(xml_str)
示例#2
0
文件: cache.py 项目: cmbi/hommod
    def _get_redis(self):
        if self.redis_hostname is None:
            raise ServiceError("redis hostname is not set")

        if self.redis_port is None:
            raise ServiceError("redis port is not set")

        if self.redis_db is None:
            raise ServiceError("redis db is not set")

        return redis.StrictRedis(host=self.redis_hostname,
                                 port=self.redis_port,
                                 db=self.redis_db)
示例#3
0
    def _interpro_error(self, job_id):

        result_url = '/'.join([self.url, 'result', job_id, 'xml'])
        try:
            r = requests.get(result_url, timeout=self.http_timeout)
        except requests.exceptions.ConnectTimeout:
            raise ServiceError("timeout connecting with interpro")

        r.raise_for_status()

        return r.text
示例#4
0
    def _interpro_submit(self, sequence):

        params = {'email': "*****@*****.**",
                  'sequence': sequence,
                  'goterms': True,
                  'pathways': False}

        submit_url = '/'.join([self.url, 'run'])
        try:
            r = requests.post(submit_url, data=params, timeout=self.http_timeout)
        except requests.exceptions.ConnectTimeout:
            raise ServiceError("timeout connecting with interpro")

        r.raise_for_status()

        return r.text