1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
from libc.stdint cimport int8_t, int16_t, int32_t, int64_t
from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t
from libc.stdlib cimport malloc, calloc, realloc, free
from libc.string cimport memcpy, memcmp, strncpy, strlen, strdup
from libc.stdio cimport FILE, printf
from pysam.libcfaidx cimport faidx_t, FastaFile
from pysam.libcalignedsegment cimport AlignedSegment
from pysam.libchtslib cimport *
from cpython cimport array
cimport cython
cdef extern from *:
ctypedef char* const_char_ptr "const char*"
cdef extern from "htslib_util.h":
char * pysam_bam_get_qname(bam1_t * b)
####################################################################
# Utility types
ctypedef struct __iterdata:
htsFile * htsfile
bam_hdr_t * header
hts_itr_t * iter
faidx_t * fastafile
int tid
char * seq
int seq_len
int min_mapping_quality
int flag_require
int flag_filter
bint compute_baq
bint redo_baq
bint ignore_orphans
int adjust_capq_threshold
cdef class AlignmentHeader(object):
cdef bam_hdr_t *ptr
cdef class AlignmentFile(HTSFile):
cdef readonly object reference_filename
cdef readonly AlignmentHeader header
# pointer to index
cdef hts_idx_t *index
# current read within iteration
cdef bam1_t * b
cdef bam1_t * getCurrent(self)
cdef int cnext(self)
# write an aligned read
cpdef int write(self, AlignedSegment read) except -1
cdef class PileupColumn:
cdef bam_pileup1_t ** plp
cdef int tid
cdef int pos
cdef int n_pu
cdef class PileupRead:
cdef AlignedSegment _alignment
cdef int32_t _qpos
cdef int _indel
cdef int _level
cdef uint32_t _is_del
cdef uint32_t _is_head
cdef uint32_t _is_tail
cdef uint32_t _is_refskip
cdef class IteratorRow:
cdef int retval
cdef bam1_t * b
cdef AlignmentFile samfile
cdef htsFile * htsfile
cdef hts_idx_t * index
cdef AlignmentHeader header
cdef int owns_samfile
cdef class IteratorRowRegion(IteratorRow):
cdef hts_itr_t * iter
cdef bam1_t * getCurrent(self)
cdef int cnext(self)
cdef class IteratorRowHead(IteratorRow):
cdef int max_rows
cdef int current_row
cdef bam1_t * getCurrent(self)
cdef int cnext(self)
cdef class IteratorRowAll(IteratorRow):
cdef bam1_t * getCurrent(self)
cdef int cnext(self)
cdef class IteratorRowAllRefs(IteratorRow):
cdef int tid
cdef IteratorRowRegion rowiter
cdef class IteratorRowSelection(IteratorRow):
cdef int current_pos
cdef positions
cdef bam1_t * getCurrent(self)
cdef int cnext(self)
cdef class IteratorColumn:
# result of the last plbuf_push
cdef IteratorRowRegion iter
cdef int tid
cdef int pos
cdef int n_plp
cdef uint32_t min_base_quality
cdef bam_pileup1_t * plp
cdef bam_mplp_t pileup_iter
cdef __iterdata iterdata
cdef AlignmentFile samfile
cdef FastaFile fastafile
cdef stepper
cdef int max_depth
cdef bint ignore_overlaps
cdef int cnext(self)
cdef char * get_sequence(self)
cdef _setup_iterator(self,
int tid,
int start,
int stop,
int multiple_iterators=?)
cdef reset(self, tid, start, stop)
cdef _free_pileup_iter(self)
# backwards compatibility
cdef char * getSequence(self)
cdef class IteratorColumnRegion(IteratorColumn):
cdef int start
cdef int stop
cdef int truncate
cdef class IteratorColumnAllRefs(IteratorColumn):
pass
cdef class IndexedReads:
cdef AlignmentFile samfile
cdef htsFile * htsfile
cdef object index
cdef int owns_samfile
cdef AlignmentHeader header
|