def __analyze(self, bwsa, seq_pairs_read): ################################################## # This method performs the actual analysis work. # BWA writes its results directly into the bwsa structures. ################################################## if not self.reference_loaded(): self.load_reference() ii = bwa.isize_info_t() self.visitor.start("cal_sa_reg_gap") for i in 0, 1: bwa.cal_sa_reg_gap_mt(self.__bwts, seq_pairs_read, bwsa[i], self.gopt) self.visitor.stop("cal_sa_reg_gap") self.visitor.start("cal_pac_pos_pe") bwa.cal_pac_pos_pe(self.__bwts, seq_pairs_read, bwsa, ii, self.popt, self.gopt, self.__last_ii) self.visitor.stop("cal_pac_pos_pe") self.__last_ii = ii if ii.avg > self.max_isize: self.visitor.log_warning("skipping S-W, isize is too big (%.3f)" % ii.avg) else: self.visitor.start("paired_sw") if 0 < self.pairing_batch_size < seq_pairs_read: for offset in xrange(0, seq_pairs_read, self.pairing_batch_size): nseq = min(self.pairing_batch_size, seq_pairs_read - offset) self.visitor.start("paired_sw_batch") bwa.paired_sw(self.__bnsp, self.__pacseq, nseq, bwsa, self.popt, ii, offset) self.visitor.stop_batch("paired_sw_batch", offset, nseq) else: bwa.paired_sw(self.__bnsp, self.__pacseq, seq_pairs_read, bwsa, self.popt, ii) self.visitor.stop("paired_sw") self.visitor.start("refine_gapped") for i in 0, 1: bwa.refine_gapped(self.__bnsp, seq_pairs_read, bwsa[i], self.__pacseq) self.visitor.stop("refine_gapped")
def clean_isize_statistics(self): self.__last_ii = bwa.isize_info_t() self.__last_ii.avg = -1.0