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