Exemplo n.º 1
0
    def amigo_batch_resume(self):

        print "RESUME!!! Tempfile exist: %s!" % self.tempfile
        tempout = open(self.tempfile, "r+")

        t2File = self.tempfile + "object"
        with open(t2File, 'r') as f:
            self.web_session_list = pickle.load(f)


        total_BLAST = len(self.web_session_list)

        self.stored_session_id_result = []
        self.stored_web_session_info = [0] * total_BLAST
        line = ""


        is_parse_result = False
        is_saving_completed = False
        for line in tempout.readlines():
            line = line.strip()
#             print line
            if line.startswith(STORE_SESSION_ID_STRING):
                index = line.split(self.DELIM)
                sid = index[2]
#                 self.stored_web_session_info.append((index[1], sid))
                self.stored_web_session_info[int(index[1])] = (index[1], sid)

            if line.startswith(END_SESSION_ID_STRING):
                is_saving_completed = True
            if line.startswith(END_STORE_RESULT_STRING):
                is_parse_result = False

            if is_parse_result and line.startswith(SEQ_ID_STRING):
                index = line.split(self.DELIM)  # Use $ becasue GO:000251 terms got : already
                seqid = index[1]
                seqSet = index[2]
#                 print seqid, seqSet
#                 sset = Ste
                seq = GoSequence(seqid, seqSet)
                seq.combined_terms = eval(seqSet)
#                 print seq
                self.all_seqs.append(seq)

            if line.startswith(STORE_RESULT_STRING):
                index = line.split(self.DELIM)
                sid = index[1]
                self.stored_session_id_result.append(sid)
                is_parse_result = True


        if self.debug:  # # These might have to go
            print "==DEBUG: Full saved session_list:", self.stored_web_session_info
            print "==DEBUG: Stored sessios_results:", self.stored_session_id_result

        if not is_saving_completed:
            print "===Warning!! Not all session_ids are stored, recreate using partial batch mode"
            return self.amigo_batch_mode_resume_partial()



        stored_session_id_only = self.rebuild_web_session_list_from_tempobject()
        complete_index_boolean = [x in self.stored_session_id_result for x in stored_session_id_only]
#         stored_session_id_only = [ x[1] for x in self.stored_web_session_info]
#         missiing_session_id = set(stored_session_id_only) - set(self.stored_session_id_result)
#         missiing_session_id = list(missiing_session_id)
        missing_length = total_BLAST - sum(complete_index_boolean)
        print "Missing %d/%d session(s)!" % (missing_length, total_BLAST)
        if self.debug:
            missing_session_index = [i for i, is_comp in enumerate(complete_index_boolean) if not is_comp]
            print "==DEBUG: Missing %d/%d session(s): Index: %s" % (len(missing_session_index), total_BLAST, missing_session_index)
            print stored_session_id_only
            print self.stored_session_id_result
            print complete_index_boolean
#         exit()

        self.retrieving_all_session_results(complete_index_boolean, tempout)

        tempout.close()
        print "End amigo_batch_resume, number of missed session: %d" % missing_length
        return missing_length