# cython: language_level=3 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 cimport cython from cpython cimport array from pysam.libchtslib cimport faidx_t, kstring_t, BGZF # These functions are put here and not in chtslib.pxd in order # to avoid warnings for unused functions. cdef extern from "pysam_stream.h" nogil: ctypedef struct kstream_t: pass ctypedef struct kseq_t: kstring_t name kstring_t comment kstring_t seq kstring_t qual kseq_t *kseq_init(BGZF *) int kseq_read(kseq_t *) void kseq_destroy(kseq_t *) kstream_t *ks_init(BGZF *) void ks_destroy(kstream_t *) # Retrieve characters from stream until delimiter # is reached placing results in str. int ks_getuntil(kstream_t *, int delimiter, kstring_t * str, int * dret) cdef class FastaFile: cdef bint is_remote cdef object _filename, _references, _lengths, reference2length cdef faidx_t* fastafile cdef char* _fetch(self, char* reference, int start, int end, int* length) except? NULL cdef class FastqProxy: cdef kseq_t * _delegate cdef cython.str to_string(self) cdef cython.str tostring(self) cpdef array.array get_quality_array(self, int offset=*) cdef class FastxRecord: """ Python container for pysam.libcfaidx.FastqProxy with persistence. """ cdef public str comment, quality, sequence, name cdef cython.str to_string(self) cdef cython.str tostring(self) cpdef array.array get_quality_array(self, int offset=*) cdef class FastxFile: cdef object _filename cdef BGZF * fastqfile cdef kseq_t * entry cdef bint persist cdef bint is_remote cdef kseq_t * getCurrent(self) cdef int cnext(self) # Compatibility Layer for pysam 0.8.1 cdef class FastqFile(FastxFile): pass # Compatibility Layer for pysam < 0.8 cdef class Fastafile(FastaFile): pass