コード例 #1
0
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
コード例 #2
0
    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