def create_alnmt(start, end, chrom, name): ''' Given 1-based blast start, end and chromosome, return an HTSeq Alignment object ''' iv = create_genomic_interval(start, end, chrom) r = HTSeq.SequenceWithQualities(b"", str(name), b"") alnmt = HTSeq.Alignment(r, iv) return alnmt
counts_transcriptome_edit = [0] ref_rlen = -1 for almnt in almnt_file: # Constructing the reference alignment. total_rlen = len(almnt.read) if ref_rlen < 0: ref_rlen = total_rlen counts_genome += [0] * total_rlen counts_transcriptome += [0] * total_rlen counts_transcriptome_edit += [0] * total_rlen elif ref_rlen != total_rlen: raise RuntimeError, "differing read lengths are not supported" ref_pos = int(almnt.read.name) s_almnt = HTSeq.Alignment(almnt.read, HTSeq.GenomicInterval(cur_chr, ref_pos, ref_pos+total_rlen, "+")) source_ids = set() for iv, val in source_features[s_almnt.iv].steps(): source_ids |= val # Checking whether it's actually aligned to the new genome if not almnt.aligned or almnt.aQual < args.minqual: counts_genome[0] += 1 if len(source_ids): counts_transcriptome[0] += 1 counts_transcriptome_edit[0] += 1 continue # Computing the number of matching bases (edit distance includes indels, so we add them back in) edit_distance = almnt.optional_field("NM") total_match =- edit_distance