Exemplo n.º 1
0
    def blast_AmiGO(self, raw_sequence):
        """ blast Amigo with data \
        no customise blast parameters yet"""

        query_blast = [
            ('action', 'blast'),
            ('seq', raw_sequence),
            # ('seq_id','FB:FBgn0015946'),
            ('CMD', 'Put')]

        self.web_page = web_page_utils.get_web_page(query_blast, AMIGO_BLAST_URL)

        is_complete = self.web_page.find(MATCH_BLAST_NOT_COMPLETE)
        previous = time.time()

        while is_complete != -1:
            current = time.time()
            wait = previous + web_page_utils.DELAY - current
            if wait > 0:
                time.sleep(wait)
                print("wait %d s" % web_page_utils.DELAY)
                previous = current + wait
            else:
                previous = current
            session_id_index = self.web_page.find(MATCH_BLAST_WAIT, is_complete) + MATCH_BLAST_WAIT_LEN
            session_id_index_end = self.web_page.find(MATCH_BLAST_END, is_complete)
            session_id = self.web_page[session_id_index:session_id_index_end]
            query_wait = [
                ('action', 'get_blast_results'),
                ('session_id', session_id),
                ('CMD', 'Put')]
    #        http://amigo.geneontology.org/cgi-bin/amigo/blast.cgi?action=get_blast_results&session_id=1284amigo1359406324&CMD=Put
            self.web_page = web_page_utils.get_web_page(query_wait, AMIGO_BLAST_URL)
            is_complete = self.web_page.find(MATCH_BLAST_NOT_COMPLETE)
Exemplo n.º 2
0
def wait_for_query_result(query_wait):
    query_page = web_page_utils.get_web_page(query_wait, AMIGO_BLAST_URL)
    is_complete = query_page.find(MATCH_BLAST_NOT_COMPLETE)
#        previous, current = [time.time()] * 2
    previous = time.time()
    while is_complete != -1:
        current = time.time()
        wait = previous + web_page_utils.DELAY - current
        if wait > 0:
            time.sleep(wait)
            print("wait %d s" % web_page_utils.DELAY)
            previous = current + wait
        else:
            previous = current

        query_page = web_page_utils.get_web_page(query_wait, AMIGO_BLAST_URL)
        is_complete = query_page.find(MATCH_BLAST_NOT_COMPLETE)
    return query_page
Exemplo n.º 3
0
    def parse_querypage(self):

        query_wait = parse_get_blast_results_query(self.session_id, 1)
        self.query_page = wait_for_query_result(query_wait)
        complete = False

#             isReRun = self._get_seq_counter()
#                 def _get_seq_counter(self):

        match = RE_NO_SEQ_COUNTER.search(self.query_page)
        if match:
            self.seq_counter = int(match.group(1))
            if self.key_list and self.seq_counter != len(self.key_list):
                warnings.warn("Mismatch numebr of sequencs=%d, and number of key=%d keys" % (self.seq_counter, len(self.key_list)))
            if self.debug:
                print "===DEBUG: Parsing %d sequences" % self.seq_counter
            for page in range(self.seq_counter):
                query = parse_get_blast_results_query(self.session_id, page + 1)
                seq = None
                while seq is None:
                    web_page = web_page_utils.get_web_page(query, AMIGO_BLAST_URL)
                    if web_page is not None:
                        seq = self.parse_seq(web_page)
    #                    print "---in ", page, "with ", seq
                self.go_results.append(seq)
            complete = True
        else:
            """
            Error message from AmiGOs
            fatal message   There is an error in the configuration of AmiGO.
            Your cached BLAST results were lost. Please try again.
            """
            warnings.warn("No seq matched from id:%s!!! seq_counter=%d Recreate session_id!" % (self.session_id, self.seq_counter))
            complete = False
#             print self.session_id
            self.session_id = None
            while self.session_id is None:
                self.create_session_id()
#                 print self.session_id
        return complete