/* Generated by Cython 0.17.2 on Tue Oct 1 11:06:33 2013 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02040000 #error Cython requires Python 2.4+. #else #include /* For offsetof */ #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #endif #if PY_VERSION_HEX < 0x02050000 typedef int Py_ssize_t; #define PY_SSIZE_T_MAX INT_MAX #define PY_SSIZE_T_MIN INT_MIN #define PY_FORMAT_SIZE_T "" #define CYTHON_FORMAT_SSIZE_T "" #define PyInt_FromSsize_t(z) PyInt_FromLong(z) #define PyInt_AsSsize_t(o) __Pyx_PyInt_AsInt(o) #define PyNumber_Index(o) ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \ (PyErr_Format(PyExc_TypeError, \ "expected index value, got %.200s", Py_TYPE(o)->tp_name), \ (PyObject*)0)) #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \ !PyComplex_Check(o)) #define PyIndex_Check __Pyx_PyIndex_Check #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message) #define __PYX_BUILD_PY_SSIZE_T "i" #else #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #define __Pyx_PyIndex_Check PyIndex_Check #endif #if PY_VERSION_HEX < 0x02060000 #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt) #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) #define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) #define PyVarObject_HEAD_INIT(type, size) \ PyObject_HEAD_INIT(type) size, #define PyType_Modified(t) typedef struct { void *buf; PyObject *obj; Py_ssize_t len; Py_ssize_t itemsize; int readonly; int ndim; char *format; Py_ssize_t *shape; Py_ssize_t *strides; Py_ssize_t *suboffsets; void *internal; } Py_buffer; #define PyBUF_SIMPLE 0 #define PyBUF_WRITABLE 0x0001 #define PyBUF_FORMAT 0x0004 #define PyBUF_ND 0x0008 #define PyBUF_STRIDES (0x0010 | PyBUF_ND) #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE) #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE) typedef int (*getbufferproc)(PyObject *, Py_buffer *, int); typedef void (*releasebufferproc)(PyObject *, Py_buffer *); #endif #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #endif #if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6 #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict") #endif #if PY_MAJOR_VERSION >= 3 #define Py_TPFLAGS_CHECKTYPES 0 #define Py_TPFLAGS_HAVE_INDEX 0 #endif #if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3) #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ? \ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #else #define CYTHON_PEP393_ENABLED 0 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_READ(k, d, i) ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_VERSION_HEX < 0x02060000 #define PyBytesObject PyStringObject #define PyBytes_Type PyString_Type #define PyBytes_Check PyString_Check #define PyBytes_CheckExact PyString_CheckExact #define PyBytes_FromString PyString_FromString #define PyBytes_FromStringAndSize PyString_FromStringAndSize #define PyBytes_FromFormat PyString_FromFormat #define PyBytes_DecodeEscape PyString_DecodeEscape #define PyBytes_AsString PyString_AsString #define PyBytes_AsStringAndSize PyString_AsStringAndSize #define PyBytes_Size PyString_Size #define PyBytes_AS_STRING PyString_AS_STRING #define PyBytes_GET_SIZE PyString_GET_SIZE #define PyBytes_Repr PyString_Repr #define PyBytes_Concat PyString_Concat #define PyBytes_ConcatAndDel PyString_ConcatAndDel #endif #if PY_VERSION_HEX < 0x02060000 #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_VERSION_HEX < 0x03020000 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300) #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b) #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value) #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b) #else #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \ (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \ (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \ (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0))) #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \ (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \ (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1))) #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \ (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \ (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1))) #endif #if PY_MAJOR_VERSION >= 3 #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #endif #if PY_VERSION_HEX < 0x02050000 #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),((char *)(n))) #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a)) #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),((char *)(n))) #else #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),(n)) #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a)) #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),(n)) #endif #if PY_VERSION_HEX < 0x02050000 #define __Pyx_NAMESTR(n) ((char *)(n)) #define __Pyx_DOCSTR(n) ((char *)(n)) #else #define __Pyx_NAMESTR(n) (n) #define __Pyx_DOCSTR(n) (n) #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #define __PYX_HAVE__assembler #define __PYX_HAVE_API__assembler #include "string.h" #include "stdlib.h" #include "stdio.h" #include "ctype.h" #include "unistd.h" #include "razf.h" #include "stdint.h" #include "bam.h" #include "sam.h" #include "pysam_util.h" #include "math.h" #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif /* inline attribute */ #ifndef CYTHON_INLINE #if defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif /* unused attribute */ #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ /* Type Conversion Predeclarations */ #define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s) #define __Pyx_PyBytes_AsUString(s) ((unsigned char*) PyBytes_AsString(s)) #define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*); #if CYTHON_COMPILING_IN_CPYTHON #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #ifdef __GNUC__ /* Test for GCC > 2.95 */ #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* __GNUC__ > 2 ... */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ > 2 ... */ #else /* __GNUC__ */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "assembler.pyx", "samtoolsWrapper.pxd", "fastafile.pxd", "cwindow.pxd", "variant.pxd", }; /*--- Type declarations ---*/ struct __pyx_obj_7variant_VariantCandidateGenerator; struct __pyx_obj_9fastafile_FastaFile; struct __pyx_obj_15samtoolsWrapper_AlignedRead; struct __pyx_obj_7cwindow_ReadArray; struct __pyx_obj_15samtoolsWrapper_IteratorRow; struct __pyx_obj_15samtoolsWrapper_Samfile; struct __pyx_obj_15samtoolsWrapper_IteratorRowAll; struct __pyx_obj_9fastafile_FastaIndex; struct __pyx_obj_7cwindow_bamReadBuffer; struct __pyx_obj_7variant_Variant; struct __pyx_opt_args_15samtoolsWrapper_7Samfile__open; struct __pyx_opt_args_15samtoolsWrapper_7Samfile__parseRegion; struct __pyx_t_15samtoolsWrapper_cAlignedRead; typedef struct __pyx_t_15samtoolsWrapper_cAlignedRead __pyx_t_15samtoolsWrapper_cAlignedRead; /* "samtoolsWrapper.pxd":254 * cdef int _isOpen( self ) * cdef _hasIndex( self ) * cpdef _open(self, mode, loadIndex=*) # <<<<<<<<<<<<<< * cdef char* getrname(self, int tid) * cdef _parseRegion(self, reference=*, start=*, end=*, region=*) */ struct __pyx_opt_args_15samtoolsWrapper_7Samfile__open { int __pyx_n; PyObject *loadIndex; }; /* "samtoolsWrapper.pxd":256 * cpdef _open(self, mode, loadIndex=*) * cdef char* getrname(self, int tid) * cdef _parseRegion(self, reference=*, start=*, end=*, region=*) # <<<<<<<<<<<<<< * cpdef IteratorRow fetch(self, char* reference, int start, int end) * cpdef IteratorRowAll fetchAllReads(self) */ struct __pyx_opt_args_15samtoolsWrapper_7Samfile__parseRegion { int __pyx_n; PyObject *reference; PyObject *start; PyObject *end; PyObject *region; }; /* "samtoolsWrapper.pxd":311 * ################################################################################################### * * ctypedef struct cAlignedRead: # <<<<<<<<<<<<<< * char* seq * char* qual */ struct __pyx_t_15samtoolsWrapper_cAlignedRead { char *seq; char *qual; short *cigarOps; short *hash; short mateChromID; short cigarLen; short chromID; short rlen; int pos; int end; int insertSize; int matePos; int bitFlag; char mapq; }; struct __pyx_t_9assembler_Node; typedef struct __pyx_t_9assembler_Node __pyx_t_9assembler_Node; struct __pyx_t_9assembler_NodeStack; typedef struct __pyx_t_9assembler_NodeStack __pyx_t_9assembler_NodeStack; struct __pyx_t_9assembler_Edge; typedef struct __pyx_t_9assembler_Edge __pyx_t_9assembler_Edge; struct __pyx_t_9assembler_EdgeStack; typedef struct __pyx_t_9assembler_EdgeStack __pyx_t_9assembler_EdgeStack; struct __pyx_t_9assembler_NodeDict; typedef struct __pyx_t_9assembler_NodeDict __pyx_t_9assembler_NodeDict; struct __pyx_t_9assembler_Path; typedef struct __pyx_t_9assembler_Path __pyx_t_9assembler_Path; struct __pyx_t_9assembler_PathStack; typedef struct __pyx_t_9assembler_PathStack __pyx_t_9assembler_PathStack; struct __pyx_t_9assembler_DeBruijnGraph; typedef struct __pyx_t_9assembler_DeBruijnGraph __pyx_t_9assembler_DeBruijnGraph; /* "assembler.pyx":73 * * # Represents a node in the graph * ctypedef struct Node: # <<<<<<<<<<<<<< * Edge* edges[4] * char* sequence */ struct __pyx_t_9assembler_Node { __pyx_t_9assembler_Edge *edges[4]; char *sequence; int colours; int position; int kmerSize; int nEdges; double weight; char dfsColour; }; /* "assembler.pyx":84 * * # Simple implementation of a stack, for storing nodes. * ctypedef struct NodeStack: # <<<<<<<<<<<<<< * Node** elements * int capacity */ struct __pyx_t_9assembler_NodeStack { __pyx_t_9assembler_Node **elements; int capacity; int top; }; /* "assembler.pyx":69 * * # Forward declaration of Edge struct, so it can be referred to in Node. * ctypedef struct Edge # <<<<<<<<<<<<<< * ctypedef struct EdgeStack * */ struct __pyx_t_9assembler_Edge { __pyx_t_9assembler_Node *startNode; __pyx_t_9assembler_Node *endNode; double weight; }; /* "assembler.pyx":70 * # Forward declaration of Edge struct, so it can be referred to in Node. * ctypedef struct Edge * ctypedef struct EdgeStack # <<<<<<<<<<<<<< * * # Represents a node in the graph */ struct __pyx_t_9assembler_EdgeStack { __pyx_t_9assembler_Edge **elements; int capacity; int top; }; /* "assembler.pyx":102 * * # A dictionary of Nodes * ctypedef struct NodeDict: # <<<<<<<<<<<<<< * Node*** buckets * int* bucketSize */ struct __pyx_t_9assembler_NodeDict { __pyx_t_9assembler_Node ***buckets; int *bucketSize; int nBuckets; }; /* "assembler.pyx":108 * * # Hold a path through the graph * ctypedef struct Path: # <<<<<<<<<<<<<< * NodeStack* nodes * int nNodes */ struct __pyx_t_9assembler_Path { __pyx_t_9assembler_NodeStack *nodes; int nNodes; int isBubble; double weight; }; /* "assembler.pyx":115 * * # A stack of paths * ctypedef struct PathStack: # <<<<<<<<<<<<<< * Path** elements * int capacity */ struct __pyx_t_9assembler_PathStack { __pyx_t_9assembler_Path **elements; int capacity; int top; }; /* "assembler.pyx":121 * * # A graph * ctypedef struct DeBruijnGraph: # <<<<<<<<<<<<<< * int kmerSize * NodeStack* allNodes */ struct __pyx_t_9assembler_DeBruijnGraph { int kmerSize; __pyx_t_9assembler_NodeStack *allNodes; __pyx_t_9assembler_NodeDict *nodes; }; /* "variant.pxd":42 * ################################################################################################### * * cdef class VariantCandidateGenerator: # <<<<<<<<<<<<<< * cdef int CIGAR_M * cdef int CIGAR_I */ struct __pyx_obj_7variant_VariantCandidateGenerator { PyObject_HEAD struct __pyx_vtabstruct_7variant_VariantCandidateGenerator *__pyx_vtab; int CIGAR_M; int CIGAR_I; int CIGAR_D; int CIGAR_N; int CIGAR_S; int CIGAR_H; int CIGAR_P; int minMapQual; int minBaseQual; int minFlank; int refId; int maxCoverage; int verbosity; int genSNPs; int genIndels; int maxReadLength; long rStart; long rEnd; long refSeqStart; long refSeqEnd; char *refSeq; PyObject *variantHeap; PyObject *pyRefSeq; PyObject *rname; struct __pyx_obj_9fastafile_FastaFile *refFile; PyObject *options; int qualBinSize; }; /* "fastafile.pxd":5 * cdef dict getRefs(self, int parseNCBI) * * cdef class FastaFile(object): # <<<<<<<<<<<<<< * cdef object theFile * cdef FastaIndex theIndex */ struct __pyx_obj_9fastafile_FastaFile { PyObject_HEAD struct __pyx_vtabstruct_9fastafile_FastaFile *__pyx_vtab; PyObject *theFile; struct __pyx_obj_9fastafile_FastaIndex *theIndex; PyObject *refs; PyObject *cache; PyObject *cacheRefName; PY_LONG_LONG cacheStartPos; PY_LONG_LONG cacheEndPos; }; /* "samtoolsWrapper.pxd":266 * ################################################################################################### * * cdef class AlignedRead: # <<<<<<<<<<<<<< * cdef bam1_t* _delegate * cdef int hashValue */ struct __pyx_obj_15samtoolsWrapper_AlignedRead { PyObject_HEAD struct __pyx_vtabstruct_15samtoolsWrapper_AlignedRead *__pyx_vtab; bam1_t *_delegate; int hashValue; int readEnd; char *_seq; char *_qual; }; /* "cwindow.pxd":14 * ################################################################################################### * * cdef class ReadArray: # <<<<<<<<<<<<<< * cdef cAlignedRead** array * cdef cAlignedRead** windowStart */ struct __pyx_obj_7cwindow_ReadArray { PyObject_HEAD struct __pyx_vtabstruct_7cwindow_ReadArray *__pyx_vtab; __pyx_t_15samtoolsWrapper_cAlignedRead **array; __pyx_t_15samtoolsWrapper_cAlignedRead **windowStart; __pyx_t_15samtoolsWrapper_cAlignedRead **windowEnd; int __pyx___size; int __pyx___capacity; int __pyx___longestRead; }; /* "samtoolsWrapper.pxd":225 * cdef class Samfile * * cdef class IteratorRow: # <<<<<<<<<<<<<< * cdef bam_fetch_iterator_t* bam_iter # iterator state object * cdef bam1_t* b */ struct __pyx_obj_15samtoolsWrapper_IteratorRow { PyObject_HEAD struct __pyx_vtabstruct_15samtoolsWrapper_IteratorRow *__pyx_vtab; bam_fetch_iterator_t *bam_iter; bam1_t *b; int useIndex; }; /* "samtoolsWrapper.pxd":223 * * ################################################################################################### * cdef class Samfile # <<<<<<<<<<<<<< * * cdef class IteratorRow: */ struct __pyx_obj_15samtoolsWrapper_Samfile { PyObject_HEAD struct __pyx_vtabstruct_15samtoolsWrapper_Samfile *__pyx_vtab; char *filename; samfile_t *samfile; bam_index_t *index; int isbam; PyObject *indexesByRegion; PyObject *lock; }; /* "samtoolsWrapper.pxd":233 * ################################################################################################### * * cdef class IteratorRowAll: # <<<<<<<<<<<<<< * cdef bam1_t* b * cdef samfile_t* fp */ struct __pyx_obj_15samtoolsWrapper_IteratorRowAll { PyObject_HEAD struct __pyx_vtabstruct_15samtoolsWrapper_IteratorRowAll *__pyx_vtab; bam1_t *b; samfile_t *fp; }; /* "fastafile.pxd":1 * cdef class FastaIndex: # <<<<<<<<<<<<<< * cdef object theFile * cdef dict getRefs(self, int parseNCBI) */ struct __pyx_obj_9fastafile_FastaIndex { PyObject_HEAD struct __pyx_vtabstruct_9fastafile_FastaIndex *__pyx_vtab; PyObject *theFile; }; /* "cwindow.pxd":29 * ################################################################################################### * * cdef class bamReadBuffer: # <<<<<<<<<<<<<< * cdef char* chrom * cdef int chromID */ struct __pyx_obj_7cwindow_bamReadBuffer { PyObject_HEAD struct __pyx_vtabstruct_7cwindow_bamReadBuffer *__pyx_vtab; char *chrom; int chromID; int *filteredReadCountsByType; int isSorted; int startBase; int endBase; int windowStartBase; int windowEndBase; int maxReads; int minMapQual; int verbosity; int minGoodBases; __pyx_t_15samtoolsWrapper_cAlignedRead *lastRead; PyObject *sample; struct __pyx_obj_7cwindow_ReadArray *reads; struct __pyx_obj_7cwindow_ReadArray *badReads; struct __pyx_obj_7cwindow_ReadArray *brokenMates; }; /* "variant.pxd":16 * ################################################################################################### * * cdef class Variant: # <<<<<<<<<<<<<< * cdef: * public bytes refName */ struct __pyx_obj_7variant_Variant { PyObject_HEAD struct __pyx_vtabstruct_7variant_Variant *__pyx_vtab; PyObject *refName; PyObject *added; PyObject *removed; PyObject *bamAdded; PyObject *bamRemoved; int refPos; int bamMinPos; int bamMaxPos; int minRefPos; int maxRefPos; int nSupportingReads; int varSource; int hashValue; int nAdded; int nRemoved; int varType; }; /* "cwindow.pxd":14 * ################################################################################################### * * cdef class ReadArray: # <<<<<<<<<<<<<< * cdef cAlignedRead** array * cdef cAlignedRead** windowStart */ struct __pyx_vtabstruct_7cwindow_ReadArray { int (*getSize)(struct __pyx_obj_7cwindow_ReadArray *); void (*append)(struct __pyx_obj_7cwindow_ReadArray *, __pyx_t_15samtoolsWrapper_cAlignedRead *); void (*setWindowPointers)(struct __pyx_obj_7cwindow_ReadArray *, int, int); void (*setWindowPointersBasedOnMatePos)(struct __pyx_obj_7cwindow_ReadArray *, int, int); int (*getLengthOfLongestRead)(struct __pyx_obj_7cwindow_ReadArray *); }; static struct __pyx_vtabstruct_7cwindow_ReadArray *__pyx_vtabptr_7cwindow_ReadArray; /* "cwindow.pxd":29 * ################################################################################################### * * cdef class bamReadBuffer: # <<<<<<<<<<<<<< * cdef char* chrom * cdef int chromID */ struct __pyx_vtabstruct_7cwindow_bamReadBuffer { void (*setWindowPointers)(struct __pyx_obj_7cwindow_bamReadBuffer *, int, int, int, int, char *, int); void (*recompressReadsInCurrentWindow)(struct __pyx_obj_7cwindow_bamReadBuffer *, int, int, char *, int, int); void (*addReadToBuffer)(struct __pyx_obj_7cwindow_bamReadBuffer *, __pyx_t_15samtoolsWrapper_cAlignedRead *); int (*countImproperPairs)(struct __pyx_obj_7cwindow_bamReadBuffer *); int (*countAlignmentGaps)(struct __pyx_obj_7cwindow_bamReadBuffer *); void (*sortReads)(struct __pyx_obj_7cwindow_bamReadBuffer *); void (*sortBrokenMates)(struct __pyx_obj_7cwindow_bamReadBuffer *); void (*logFilterSummary)(struct __pyx_obj_7cwindow_bamReadBuffer *); }; static struct __pyx_vtabstruct_7cwindow_bamReadBuffer *__pyx_vtabptr_7cwindow_bamReadBuffer; /* "fastafile.pxd":1 * cdef class FastaIndex: # <<<<<<<<<<<<<< * cdef object theFile * cdef dict getRefs(self, int parseNCBI) */ struct __pyx_vtabstruct_9fastafile_FastaIndex { PyObject *(*getRefs)(struct __pyx_obj_9fastafile_FastaIndex *, int); }; static struct __pyx_vtabstruct_9fastafile_FastaIndex *__pyx_vtabptr_9fastafile_FastaIndex; /* "samtoolsWrapper.pxd":223 * * ################################################################################################### * cdef class Samfile # <<<<<<<<<<<<<< * * cdef class IteratorRow: */ struct __pyx_vtabstruct_15samtoolsWrapper_Samfile { void (*clearHeader)(struct __pyx_obj_15samtoolsWrapper_Samfile *); void (*clearIndex)(struct __pyx_obj_15samtoolsWrapper_Samfile *); void (*createCache)(struct __pyx_obj_15samtoolsWrapper_Samfile *); void (*clearCache)(struct __pyx_obj_15samtoolsWrapper_Samfile *); int (*_isOpen)(struct __pyx_obj_15samtoolsWrapper_Samfile *); PyObject *(*_hasIndex)(struct __pyx_obj_15samtoolsWrapper_Samfile *); PyObject *(*_open)(struct __pyx_obj_15samtoolsWrapper_Samfile *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_15samtoolsWrapper_7Samfile__open *__pyx_optional_args); char *(*getrname)(struct __pyx_obj_15samtoolsWrapper_Samfile *, int); PyObject *(*_parseRegion)(struct __pyx_obj_15samtoolsWrapper_Samfile *, struct __pyx_opt_args_15samtoolsWrapper_7Samfile__parseRegion *__pyx_optional_args); struct __pyx_obj_15samtoolsWrapper_IteratorRow *(*fetch)(struct __pyx_obj_15samtoolsWrapper_Samfile *, char *, int, int, int __pyx_skip_dispatch); struct __pyx_obj_15samtoolsWrapper_IteratorRowAll *(*fetchAllReads)(struct __pyx_obj_15samtoolsWrapper_Samfile *, int __pyx_skip_dispatch); PyObject *(*close)(struct __pyx_obj_15samtoolsWrapper_Samfile *, int __pyx_skip_dispatch); void (*loadOffsetsForRegions)(struct __pyx_obj_15samtoolsWrapper_Samfile *, PyObject *); void (*openBAMFile)(struct __pyx_obj_15samtoolsWrapper_Samfile *, PyObject *); }; static struct __pyx_vtabstruct_15samtoolsWrapper_Samfile *__pyx_vtabptr_15samtoolsWrapper_Samfile; /* "fastafile.pxd":5 * cdef dict getRefs(self, int parseNCBI) * * cdef class FastaFile(object): # <<<<<<<<<<<<<< * cdef object theFile * cdef FastaIndex theIndex */ struct __pyx_vtabstruct_9fastafile_FastaFile { PyObject *(*getCharacter)(struct __pyx_obj_9fastafile_FastaFile *, PyObject *, PY_LONG_LONG); PyObject *(*getSequence)(struct __pyx_obj_9fastafile_FastaFile *, PyObject *, PY_LONG_LONG, PY_LONG_LONG); void (*setCacheSequence)(struct __pyx_obj_9fastafile_FastaFile *, PyObject *, PY_LONG_LONG, PY_LONG_LONG); }; static struct __pyx_vtabstruct_9fastafile_FastaFile *__pyx_vtabptr_9fastafile_FastaFile; /* "variant.pxd":42 * ################################################################################################### * * cdef class VariantCandidateGenerator: # <<<<<<<<<<<<<< * cdef int CIGAR_M * cdef int CIGAR_I */ struct __pyx_vtabstruct_7variant_VariantCandidateGenerator { void (*addVariantToList)(struct __pyx_obj_7variant_VariantCandidateGenerator *, struct __pyx_obj_7variant_Variant *); void (*getSnpCandidatesFromReadSegment)(struct __pyx_obj_7variant_VariantCandidateGenerator *, __pyx_t_15samtoolsWrapper_cAlignedRead *, char *, char *, int, int, int, int, int); void (*getVariantCandidatesFromSingleRead)(struct __pyx_obj_7variant_VariantCandidateGenerator *, __pyx_t_15samtoolsWrapper_cAlignedRead *); void (*addCandidatesFromReads)(struct __pyx_obj_7variant_VariantCandidateGenerator *, __pyx_t_15samtoolsWrapper_cAlignedRead **, __pyx_t_15samtoolsWrapper_cAlignedRead **); PyObject *(*getCandidates)(struct __pyx_obj_7variant_VariantCandidateGenerator *, int); PyObject *(*getListOfSnpPositions)(struct __pyx_obj_7variant_VariantCandidateGenerator *, struct __pyx_obj_15samtoolsWrapper_AlignedRead *); PyObject *(*getListOfIndelPositions)(struct __pyx_obj_7variant_VariantCandidateGenerator *, struct __pyx_obj_15samtoolsWrapper_AlignedRead *); }; static struct __pyx_vtabstruct_7variant_VariantCandidateGenerator *__pyx_vtabptr_7variant_VariantCandidateGenerator; /* "samtoolsWrapper.pxd":233 * ################################################################################################### * * cdef class IteratorRowAll: # <<<<<<<<<<<<<< * cdef bam1_t* b * cdef samfile_t* fp */ struct __pyx_vtabstruct_15samtoolsWrapper_IteratorRowAll { bam1_t *(*getCurrent)(struct __pyx_obj_15samtoolsWrapper_IteratorRowAll *); int (*cnext)(struct __pyx_obj_15samtoolsWrapper_IteratorRowAll *); }; static struct __pyx_vtabstruct_15samtoolsWrapper_IteratorRowAll *__pyx_vtabptr_15samtoolsWrapper_IteratorRowAll; /* "variant.pxd":16 * ################################################################################################### * * cdef class Variant: # <<<<<<<<<<<<<< * cdef: * public bytes refName */ struct __pyx_vtabstruct_7variant_Variant { double (*indelPrior)(struct __pyx_obj_7variant_Variant *, struct __pyx_obj_9fastafile_FastaFile *, int); double (*calculatePrior)(struct __pyx_obj_7variant_Variant *, struct __pyx_obj_9fastafile_FastaFile *); void (*addVariant)(struct __pyx_obj_7variant_Variant *, struct __pyx_obj_7variant_Variant *); int (*overlaps)(struct __pyx_obj_7variant_Variant *, struct __pyx_obj_7variant_Variant *); }; static struct __pyx_vtabstruct_7variant_Variant *__pyx_vtabptr_7variant_Variant; /* "samtoolsWrapper.pxd":266 * ################################################################################################### * * cdef class AlignedRead: # <<<<<<<<<<<<<< * cdef bam1_t* _delegate * cdef int hashValue */ struct __pyx_vtabstruct_15samtoolsWrapper_AlignedRead { PyObject *(*qname)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *, int __pyx_skip_dispatch); char *(*fastQName)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); char *(*seq)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); char *(*qual)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); PyObject *(*tags)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*flag)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*rname)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*getCigarLength)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*pos)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*end)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); PyObject *(*bin)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*getCigarOpCode)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *, int); int (*getCigarOpLength)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *, int); int (*rlen)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*mapq)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *, int __pyx_skip_dispatch); int (*mrnm)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*mpos)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*isize)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_paired)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_proper_pair)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_unmapped)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*mate_is_unmapped)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_reverse)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*mate_is_reverse)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_read1)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_read2)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_secondary)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_qcfail)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); int (*is_duplicate)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *); PyObject *(*opt)(struct __pyx_obj_15samtoolsWrapper_AlignedRead *, PyObject *); }; static struct __pyx_vtabstruct_15samtoolsWrapper_AlignedRead *__pyx_vtabptr_15samtoolsWrapper_AlignedRead; /* "samtoolsWrapper.pxd":225 * cdef class Samfile * * cdef class IteratorRow: # <<<<<<<<<<<<<< * cdef bam_fetch_iterator_t* bam_iter # iterator state object * cdef bam1_t* b */ struct __pyx_vtabstruct_15samtoolsWrapper_IteratorRow { int (*cnext)(struct __pyx_obj_15samtoolsWrapper_IteratorRow *); }; static struct __pyx_vtabstruct_15samtoolsWrapper_IteratorRow *__pyx_vtabptr_15samtoolsWrapper_IteratorRow; #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/ #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil) \ if (acquire_gil) { \ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ PyGILState_Release(__pyx_gilstate_save); \ } else { \ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil) \ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext() \ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif /* CYTHON_REFNANNY */ #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/ static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); Py_DECREF(j); return r; } #define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ __Pyx_GetItemInt_List_Fast(o, i) : \ __Pyx_GetItemInt_Generic(o, to_py_func(i))) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) { #if CYTHON_COMPILING_IN_CPYTHON if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, i); Py_INCREF(r); return r; } else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) { PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } #define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ __Pyx_GetItemInt_Tuple_Fast(o, i) : \ __Pyx_GetItemInt_Generic(o, to_py_func(i))) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) { #if CYTHON_COMPILING_IN_CPYTHON if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, i); Py_INCREF(r); return r; } else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) { PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } #define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ __Pyx_GetItemInt_Fast(o, i) : \ __Pyx_GetItemInt_Generic(o, to_py_func(i))) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) { #if CYTHON_COMPILING_IN_CPYTHON if (PyList_CheckExact(o)) { Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, n); Py_INCREF(r); return r; } } else if (PyTuple_CheckExact(o)) { Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, n); Py_INCREF(r); return r; } } else { /* inlined PySequence_GetItem() */ PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_item)) { if (unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (unlikely(l < 0)) return NULL; i += l; } return m->sq_item(o, i); } } #else if (PySequence_Check(o)) { return PySequence_GetItem(o, i); } #endif return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/ static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name); static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *); static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *); static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *); static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *); static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *); static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *); static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *); static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *); static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *); static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *); static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *); static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *); static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *); static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *); static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *); static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename); /*proto*/ static int __Pyx_check_binary_version(void); static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/ #if !defined(__Pyx_PyIdentifier_FromString) #if PY_MAJOR_VERSION < 3 #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) #else #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) #endif #endif static PyObject *__Pyx_ImportModule(const char *name); /*proto*/ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); /*proto*/ static void* __Pyx_GetVtable(PyObject *dict); /*proto*/ static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); /*proto*/ typedef struct { int code_line; PyCodeObject* code_object; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /*proto*/ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ /* Module declarations from 'samtoolsWrapper' */ static PyTypeObject *__pyx_ptype_15samtoolsWrapper_Samfile = 0; static PyTypeObject *__pyx_ptype_15samtoolsWrapper_IteratorRow = 0; static PyTypeObject *__pyx_ptype_15samtoolsWrapper_IteratorRowAll = 0; static PyTypeObject *__pyx_ptype_15samtoolsWrapper_AlignedRead = 0; static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsReverse(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsPaired(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsProperPair(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsDuplicate(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsUnmapped(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_MateIsUnmapped(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsQCFail(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsReadOne(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsSecondaryAlignment(__pyx_t_15samtoolsWrapper_cAlignedRead *); /*proto*/ /* Module declarations from 'cython' */ /* Module declarations from 'fastafile' */ static PyTypeObject *__pyx_ptype_9fastafile_FastaIndex = 0; static PyTypeObject *__pyx_ptype_9fastafile_FastaFile = 0; /* Module declarations from 'cwindow' */ static PyTypeObject *__pyx_ptype_7cwindow_ReadArray = 0; static PyTypeObject *__pyx_ptype_7cwindow_bamReadBuffer = 0; /* Module declarations from 'variant' */ static PyTypeObject *__pyx_ptype_7variant_Variant = 0; static PyTypeObject *__pyx_ptype_7variant_VariantCandidateGenerator = 0; static int *__pyx_vp_7variant_PLATYPUS_VAR = 0; #define __pyx_v_7variant_PLATYPUS_VAR (*__pyx_vp_7variant_PLATYPUS_VAR) static int *__pyx_vp_7variant_FILE_VAR = 0; #define __pyx_v_7variant_FILE_VAR (*__pyx_vp_7variant_FILE_VAR) static int *__pyx_vp_7variant_ASSEMBLER_VAR = 0; #define __pyx_v_7variant_ASSEMBLER_VAR (*__pyx_vp_7variant_ASSEMBLER_VAR) /* Module declarations from 'assembler' */ static int __pyx_v_9assembler_REF; static int __pyx_v_9assembler_READ; static int __pyx_v_9assembler_REF_AND_READ; static __pyx_t_9assembler_Path *__pyx_f_9assembler_createPath(int); /*proto*/ static void __pyx_f_9assembler_destroyPath(__pyx_t_9assembler_Path *); /*proto*/ static void __pyx_f_9assembler_addNodeToPath(__pyx_t_9assembler_Path *, __pyx_t_9assembler_Node *, double); /*proto*/ static __pyx_t_9assembler_Node *__pyx_f_9assembler_createNode(char *, int, int, int, double); /*proto*/ static void *__pyx_f_9assembler_destroyNode(__pyx_t_9assembler_Node *); /*proto*/ static CYTHON_INLINE int __pyx_f_9assembler_Node_Equal(__pyx_t_9assembler_Node *, __pyx_t_9assembler_Node *); /*proto*/ static CYTHON_INLINE void __pyx_f_9assembler_Node_AddEdge(__pyx_t_9assembler_Node *, __pyx_t_9assembler_Edge *); /*proto*/ static CYTHON_INLINE int __pyx_f_9assembler_nodePosComp(void *, void *); /*proto*/ static CYTHON_INLINE unsigned int __pyx_f_9assembler_hashKmer(char *, int); /*proto*/ static __pyx_t_9assembler_PathStack *__pyx_f_9assembler_createPathStack(int); /*proto*/ static void __pyx_f_9assembler_destroyPathStack(__pyx_t_9assembler_PathStack *); /*proto*/ static int __pyx_f_9assembler_PathStack_IsEmpty(__pyx_t_9assembler_PathStack *); /*proto*/ static int __pyx_f_9assembler_PathStack_IsFull(__pyx_t_9assembler_PathStack *); /*proto*/ static void __pyx_f_9assembler_PathStack_Push(__pyx_t_9assembler_PathStack *, __pyx_t_9assembler_Path *); /*proto*/ static __pyx_t_9assembler_Path *__pyx_f_9assembler_PathStack_Pop(__pyx_t_9assembler_PathStack *); /*proto*/ static __pyx_t_9assembler_NodeStack *__pyx_f_9assembler_createNodeStack(int); /*proto*/ static void __pyx_f_9assembler_destroyNodeStack(__pyx_t_9assembler_NodeStack *); /*proto*/ static int __pyx_f_9assembler_NodeStack_IsEmpty(__pyx_t_9assembler_NodeStack *); /*proto*/ static int __pyx_f_9assembler_NodeStack_IsFull(__pyx_t_9assembler_NodeStack *); /*proto*/ static void __pyx_f_9assembler_NodeStack_Push(__pyx_t_9assembler_NodeStack *, __pyx_t_9assembler_Node *); /*proto*/ static __pyx_t_9assembler_Node *__pyx_f_9assembler_NodeStack_Pop(__pyx_t_9assembler_NodeStack *); /*proto*/ static __pyx_t_9assembler_Edge *__pyx_f_9assembler_createEdge(__pyx_t_9assembler_Node *, __pyx_t_9assembler_Node *, double); /*proto*/ static void __pyx_f_9assembler_destroyEdge(__pyx_t_9assembler_Edge *); /*proto*/ static int __pyx_f_9assembler_EdgeStack_IsEmpty(__pyx_t_9assembler_EdgeStack *); /*proto*/ static int __pyx_f_9assembler_EdgeStack_IsFull(__pyx_t_9assembler_EdgeStack *); /*proto*/ static __pyx_t_9assembler_NodeDict *__pyx_f_9assembler_createNodeDict(int); /*proto*/ static void __pyx_f_9assembler_destroyNodeDict(__pyx_t_9assembler_NodeDict *); /*proto*/ static int __pyx_f_9assembler_NodeDict_FindOrInsert(__pyx_t_9assembler_NodeDict *, __pyx_t_9assembler_Node **, int, __pyx_t_9assembler_Node **); /*proto*/ static __pyx_t_9assembler_DeBruijnGraph *__pyx_f_9assembler_createDeBruijnGraph(int, int); /*proto*/ static void __pyx_f_9assembler_destroyDeBruijnGraph(__pyx_t_9assembler_DeBruijnGraph *); /*proto*/ static int __pyx_f_9assembler_DeBruijnGraph_InsertOrUpdateNode(__pyx_t_9assembler_DeBruijnGraph *, __pyx_t_9assembler_Node **); /*proto*/ static void __pyx_f_9assembler_DeBruijnGraph_AddEdge(__pyx_t_9assembler_DeBruijnGraph *, __pyx_t_9assembler_Node *, __pyx_t_9assembler_Node *, double); /*proto*/ static int __pyx_f_9assembler_dfsVisit(__pyx_t_9assembler_Node *, double); /*proto*/ static int __pyx_f_9assembler_detectCyclesInGraph_Recursive(__pyx_t_9assembler_DeBruijnGraph *, double); /*proto*/ static int __pyx_f_9assembler_checkPathForCycles(__pyx_t_9assembler_Path *); /*proto*/ static __pyx_t_9assembler_PathStack *__pyx_f_9assembler_getVariantPathsThroughGraphFromNode(__pyx_t_9assembler_DeBruijnGraph *, __pyx_t_9assembler_Path *, double); /*proto*/ static PyObject *__pyx_f_9assembler_findBubblesInGraph(__pyx_t_9assembler_DeBruijnGraph *, double, char *, char *, int, int, int, int, int); /*proto*/ static struct __pyx_obj_7variant_Variant *__pyx_f_9assembler_extractVarFromBubblePath(__pyx_t_9assembler_DeBruijnGraph *, __pyx_t_9assembler_Path *, char *, char *, int, int, int); /*proto*/ static void __pyx_f_9assembler_loadReferenceIntoGraph(__pyx_t_9assembler_DeBruijnGraph *, char *, int, int); /*proto*/ static void __pyx_f_9assembler_loadReadIntoGraph(__pyx_t_15samtoolsWrapper_cAlignedRead *, __pyx_t_9assembler_DeBruijnGraph *, int, int); /*proto*/ static void __pyx_f_9assembler_loadBAMDataIntoGraph(__pyx_t_9assembler_DeBruijnGraph *, PyObject *, int, int, int, int); /*proto*/ #define __Pyx_MODULE_NAME "assembler" int __pyx_module_is_main_assembler = 0; /* Implementation of 'assembler' */ static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin_StandardError; static PyObject *__pyx_builtin_sorted; static char __pyx_k_1[] = "Could not allocate path"; static char __pyx_k_3[] = "Null path"; static char __pyx_k_5[] = "Null Node"; static char __pyx_k_7[] = "Could not allocate node"; static char __pyx_k_9[] = "Node struct cannot have > 4 edges. Now we have %s. This will cause problems"; static char __pyx_k_10[] = "Error. Could not allocate path stack with capacity %s"; static char __pyx_k_11[] = "Error. Could not allocate path stack elements with capacity %s"; static char __pyx_k_12[] = "Could not re-allocate PathStack"; static char __pyx_k_14[] = "Error. Could not allocate node stack with capacity %s"; static char __pyx_k_15[] = "Error. Could not allocate node stack elements with capacity %s"; static char __pyx_k_16[] = "Could not re-allocate NodeStack"; static char __pyx_k_18[] = "Error. Could not allocate edge"; static char __pyx_k_20[] = "Error. Could not allocate edge stack with capacity %s"; static char __pyx_k_21[] = "Error. Could not allocate edge stack elements with capacity %s"; static char __pyx_k_22[] = "Could not re-allocate EdgeStack"; static char __pyx_k_23[] = "Error. Could not NodeDict"; static char __pyx_k_25[] = "Error. Could not NodeDict.buckets of size %s"; static char __pyx_k_26[] = "Error. Could not NodeDict.bucketSize of size %s"; static char __pyx_k_27[] = "Could not allocate hash table bucket with size %s"; static char __pyx_k_28[] = "Could not re-allocate bucket"; static char __pyx_k_29[] = "Could not allocate memory for DeBruijnGraph"; static char __pyx_k_31[] = "Error in assembler. Could not find matching end-node for edge. Something is very wrong"; static char __pyx_k_33[] = "Assembly Error!!"; static char __pyx_k_34[] = "nNodes = %s. nFilledBuckets = %s. mean entries/bucket = %s"; static char __pyx_k_35[] = "Could not allocate memory for string of size %s"; static char __pyx_k_36[] = "Logging path of %s nodes"; static char __pyx_k_37[] = "Pos = %s. Seq = %s. RefSeq = %c. Colours = %s. Node weight = %s"; static char __pyx_k_38[] = "Found complex variation that Platypus can't deal with yet at %s:%s-%s"; static char __pyx_k_39[] = "Could not allocate memory for charReadSeq of size %s"; static char __pyx_k_40[] = "Platypus assembler found candidate variant of size %s. %s:%s-%s %s --> %s"; static char __pyx_k_41[] = "Assembling region %s:%s-%s"; static char __pyx_k_42[] = "Could not assemble region %s:%s-%s without cycles. Max k-mer size tried = %s"; static char __pyx_k_43[] = "Found cycles in region %s:%s-%s with kmer size %s. Trying again with kmer size %s"; static char __pyx_k_44[] = "\nCython module used to interface to assembler routines.\n"; static char __pyx_k__Log[] = "Log"; static char __pyx_k__info[] = "info"; static char __pyx_k__debug[] = "debug"; static char __pyx_k__error[] = "error"; static char __pyx_k__heapq[] = "heapq"; static char __pyx_k__range[] = "range"; static char __pyx_k__logger[] = "logger"; static char __pyx_k__sorted[] = "sorted"; static char __pyx_k__logging[] = "logging"; static char __pyx_k__warning[] = "warning"; static char __pyx_k____main__[] = "__main__"; static char __pyx_k____test__[] = "__test__"; static char __pyx_k__minReads[] = "minReads"; static char __pyx_k__noCycles[] = "noCycles"; static char __pyx_k__getLogger[] = "getLogger"; static char __pyx_k__verbosity[] = "verbosity"; static char __pyx_k__minMapQual[] = "minMapQual"; static char __pyx_k__collections[] = "collections"; static char __pyx_k__defaultdict[] = "defaultdict"; static char __pyx_k__minBaseQual[] = "minBaseQual"; static char __pyx_k__StandardError[] = "StandardError"; static char __pyx_k__assembleBadReads[] = "assembleBadReads"; static char __pyx_k__assemblerKmerSize[] = "assemblerKmerSize"; static char __pyx_k__assemblyRegionSize[] = "assemblyRegionSize"; static char __pyx_k__assembleBrokenPairs[] = "assembleBrokenPairs"; static PyObject *__pyx_kp_s_1; static PyObject *__pyx_kp_s_10; static PyObject *__pyx_kp_s_11; static PyObject *__pyx_kp_s_12; static PyObject *__pyx_kp_s_14; static PyObject *__pyx_kp_s_15; static PyObject *__pyx_kp_s_16; static PyObject *__pyx_kp_s_18; static PyObject *__pyx_kp_s_20; static PyObject *__pyx_kp_s_21; static PyObject *__pyx_kp_s_22; static PyObject *__pyx_kp_s_23; static PyObject *__pyx_kp_s_25; static PyObject *__pyx_kp_s_26; static PyObject *__pyx_kp_s_27; static PyObject *__pyx_kp_s_28; static PyObject *__pyx_kp_s_29; static PyObject *__pyx_kp_s_3; static PyObject *__pyx_kp_s_31; static PyObject *__pyx_kp_s_33; static PyObject *__pyx_kp_s_34; static PyObject *__pyx_kp_s_35; static PyObject *__pyx_kp_s_36; static PyObject *__pyx_kp_s_37; static PyObject *__pyx_kp_s_38; static PyObject *__pyx_kp_s_39; static PyObject *__pyx_kp_s_40; static PyObject *__pyx_kp_s_41; static PyObject *__pyx_kp_s_42; static PyObject *__pyx_kp_s_43; static PyObject *__pyx_kp_s_5; static PyObject *__pyx_kp_s_7; static PyObject *__pyx_kp_s_9; static PyObject *__pyx_n_s__Log; static PyObject *__pyx_n_s__StandardError; static PyObject *__pyx_n_s____main__; static PyObject *__pyx_n_s____test__; static PyObject *__pyx_n_s__assembleBadReads; static PyObject *__pyx_n_s__assembleBrokenPairs; static PyObject *__pyx_n_s__assemblerKmerSize; static PyObject *__pyx_n_s__assemblyRegionSize; static PyObject *__pyx_n_s__collections; static PyObject *__pyx_n_s__debug; static PyObject *__pyx_n_s__defaultdict; static PyObject *__pyx_n_s__error; static PyObject *__pyx_n_s__getLogger; static PyObject *__pyx_n_s__heapq; static PyObject *__pyx_n_s__info; static PyObject *__pyx_n_s__logger; static PyObject *__pyx_n_s__logging; static PyObject *__pyx_n_s__minBaseQual; static PyObject *__pyx_n_s__minMapQual; static PyObject *__pyx_n_s__minReads; static PyObject *__pyx_n_s__noCycles; static PyObject *__pyx_n_s__range; static PyObject *__pyx_n_s__sorted; static PyObject *__pyx_n_s__verbosity; static PyObject *__pyx_n_s__warning; static PyObject *__pyx_int_0; static PyObject *__pyx_int_100; static PyObject *__pyx_k_tuple_2; static PyObject *__pyx_k_tuple_4; static PyObject *__pyx_k_tuple_6; static PyObject *__pyx_k_tuple_8; static PyObject *__pyx_k_tuple_13; static PyObject *__pyx_k_tuple_17; static PyObject *__pyx_k_tuple_19; static PyObject *__pyx_k_tuple_24; static PyObject *__pyx_k_tuple_30; static PyObject *__pyx_k_tuple_32; static PyObject *__pyx_k_tuple_45; /* "assembler.pyx":128 * ################################################################################################### * * cdef Path* createPath(int initialSize): # <<<<<<<<<<<<<< * """ * Create and return a Path struct. */ static __pyx_t_9assembler_Path *__pyx_f_9assembler_createPath(int __pyx_v_initialSize) { __pyx_t_9assembler_Path *__pyx_v_thePath; __pyx_t_9assembler_Path *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createPath", 0); /* "assembler.pyx":132 * Create and return a Path struct. * """ * cdef Path* thePath = (malloc(sizeof(Path))) # <<<<<<<<<<<<<< * * if thePath == NULL: */ __pyx_v_thePath = ((__pyx_t_9assembler_Path *)malloc((sizeof(__pyx_t_9assembler_Path)))); /* "assembler.pyx":134 * cdef Path* thePath = (malloc(sizeof(Path))) * * if thePath == NULL: # <<<<<<<<<<<<<< * logger.error("Could not allocate path") * */ __pyx_t_1 = (__pyx_v_thePath == NULL); if (__pyx_t_1) { /* "assembler.pyx":135 * * if thePath == NULL: * logger.error("Could not allocate path") # <<<<<<<<<<<<<< * * thePath.nodes = createNodeStack(initialSize) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":137 * logger.error("Could not allocate path") * * thePath.nodes = createNodeStack(initialSize) # <<<<<<<<<<<<<< * thePath.nNodes = 0 * thePath.isBubble = 0 */ __pyx_v_thePath->nodes = __pyx_f_9assembler_createNodeStack(__pyx_v_initialSize); /* "assembler.pyx":138 * * thePath.nodes = createNodeStack(initialSize) * thePath.nNodes = 0 # <<<<<<<<<<<<<< * thePath.isBubble = 0 * thePath.weight = 0.0 */ __pyx_v_thePath->nNodes = 0; /* "assembler.pyx":139 * thePath.nodes = createNodeStack(initialSize) * thePath.nNodes = 0 * thePath.isBubble = 0 # <<<<<<<<<<<<<< * thePath.weight = 0.0 * */ __pyx_v_thePath->isBubble = 0; /* "assembler.pyx":140 * thePath.nNodes = 0 * thePath.isBubble = 0 * thePath.weight = 0.0 # <<<<<<<<<<<<<< * * return thePath */ __pyx_v_thePath->weight = 0.0; /* "assembler.pyx":142 * thePath.weight = 0.0 * * return thePath # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_thePath; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("assembler.createPath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":146 * ################################################################################################### * * cdef void destroyPath(Path* thePath): # <<<<<<<<<<<<<< * """ * free up memory in Path struct. */ static void __pyx_f_9assembler_destroyPath(__pyx_t_9assembler_Path *__pyx_v_thePath) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("destroyPath", 0); /* "assembler.pyx":150 * free up memory in Path struct. * """ * destroyNodeStack(thePath.nodes) # <<<<<<<<<<<<<< * thePath.nodes = NULL * free(thePath) */ __pyx_f_9assembler_destroyNodeStack(__pyx_v_thePath->nodes); /* "assembler.pyx":151 * """ * destroyNodeStack(thePath.nodes) * thePath.nodes = NULL # <<<<<<<<<<<<<< * free(thePath) * thePath = NULL */ __pyx_v_thePath->nodes = NULL; /* "assembler.pyx":152 * destroyNodeStack(thePath.nodes) * thePath.nodes = NULL * free(thePath) # <<<<<<<<<<<<<< * thePath = NULL * */ free(__pyx_v_thePath); /* "assembler.pyx":153 * thePath.nodes = NULL * free(thePath) * thePath = NULL # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_thePath = NULL; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":157 * ################################################################################################### * * cdef void addNodeToPath(Path* thePath, Node* theNode, double weight): # <<<<<<<<<<<<<< * """ * Add a Node to the specified path. */ static void __pyx_f_9assembler_addNodeToPath(__pyx_t_9assembler_Path *__pyx_v_thePath, __pyx_t_9assembler_Node *__pyx_v_theNode, double __pyx_v_weight) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("addNodeToPath", 0); /* "assembler.pyx":161 * Add a Node to the specified path. * """ * if thePath == NULL: # <<<<<<<<<<<<<< * logger.error("Null path") * */ __pyx_t_1 = (__pyx_v_thePath == NULL); if (__pyx_t_1) { /* "assembler.pyx":162 * """ * if thePath == NULL: * logger.error("Null path") # <<<<<<<<<<<<<< * * if theNode == NULL: */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":164 * logger.error("Null path") * * if theNode == NULL: # <<<<<<<<<<<<<< * logger.error("Null Node") * */ __pyx_t_1 = (__pyx_v_theNode == NULL); if (__pyx_t_1) { /* "assembler.pyx":165 * * if theNode == NULL: * logger.error("Null Node") # <<<<<<<<<<<<<< * * NodeStack_Push(thePath.nodes, theNode) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L4; } __pyx_L4:; /* "assembler.pyx":167 * logger.error("Null Node") * * NodeStack_Push(thePath.nodes, theNode) # <<<<<<<<<<<<<< * thePath.nNodes += 1 * thePath.weight += weight */ __pyx_f_9assembler_NodeStack_Push(__pyx_v_thePath->nodes, __pyx_v_theNode); /* "assembler.pyx":168 * * NodeStack_Push(thePath.nodes, theNode) * thePath.nNodes += 1 # <<<<<<<<<<<<<< * thePath.weight += weight * */ __pyx_v_thePath->nNodes = (__pyx_v_thePath->nNodes + 1); /* "assembler.pyx":169 * NodeStack_Push(thePath.nodes, theNode) * thePath.nNodes += 1 * thePath.weight += weight # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_thePath->weight = (__pyx_v_thePath->weight + __pyx_v_weight); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("assembler.addNodeToPath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":173 * ################################################################################################### * * cdef Node* createNode(char* sequence, int colour, int position, int kmerSize, double weight): # <<<<<<<<<<<<<< * """ * Create and return a new node. */ static __pyx_t_9assembler_Node *__pyx_f_9assembler_createNode(char *__pyx_v_sequence, int __pyx_v_colour, int __pyx_v_position, int __pyx_v_kmerSize, double __pyx_v_weight) { __pyx_t_9assembler_Node *__pyx_v_theNode; __pyx_t_9assembler_Node *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createNode", 0); /* "assembler.pyx":177 * Create and return a new node. * """ * cdef Node* theNode = (malloc(sizeof(Node))) # <<<<<<<<<<<<<< * * if theNode == NULL: */ __pyx_v_theNode = ((__pyx_t_9assembler_Node *)malloc((sizeof(__pyx_t_9assembler_Node)))); /* "assembler.pyx":179 * cdef Node* theNode = (malloc(sizeof(Node))) * * if theNode == NULL: # <<<<<<<<<<<<<< * logger.error("Could not allocate node") * */ __pyx_t_1 = (__pyx_v_theNode == NULL); if (__pyx_t_1) { /* "assembler.pyx":180 * * if theNode == NULL: * logger.error("Could not allocate node") # <<<<<<<<<<<<<< * * # Need to allocate kmerSize + 1 to store the null terminating character */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":183 * * # Need to allocate kmerSize + 1 to store the null terminating character * theNode.edges[0] = NULL # <<<<<<<<<<<<<< * theNode.edges[1] = NULL * theNode.edges[2] = NULL */ (__pyx_v_theNode->edges[0]) = NULL; /* "assembler.pyx":184 * # Need to allocate kmerSize + 1 to store the null terminating character * theNode.edges[0] = NULL * theNode.edges[1] = NULL # <<<<<<<<<<<<<< * theNode.edges[2] = NULL * theNode.edges[3] = NULL */ (__pyx_v_theNode->edges[1]) = NULL; /* "assembler.pyx":185 * theNode.edges[0] = NULL * theNode.edges[1] = NULL * theNode.edges[2] = NULL # <<<<<<<<<<<<<< * theNode.edges[3] = NULL * */ (__pyx_v_theNode->edges[2]) = NULL; /* "assembler.pyx":186 * theNode.edges[1] = NULL * theNode.edges[2] = NULL * theNode.edges[3] = NULL # <<<<<<<<<<<<<< * * theNode.sequence = sequence */ (__pyx_v_theNode->edges[3]) = NULL; /* "assembler.pyx":188 * theNode.edges[3] = NULL * * theNode.sequence = sequence # <<<<<<<<<<<<<< * theNode.weight = weight * theNode.colours = colour */ __pyx_v_theNode->sequence = __pyx_v_sequence; /* "assembler.pyx":189 * * theNode.sequence = sequence * theNode.weight = weight # <<<<<<<<<<<<<< * theNode.colours = colour * theNode.dfsColour = 'N' */ __pyx_v_theNode->weight = __pyx_v_weight; /* "assembler.pyx":190 * theNode.sequence = sequence * theNode.weight = weight * theNode.colours = colour # <<<<<<<<<<<<<< * theNode.dfsColour = 'N' * theNode.kmerSize = kmerSize */ __pyx_v_theNode->colours = __pyx_v_colour; /* "assembler.pyx":191 * theNode.weight = weight * theNode.colours = colour * theNode.dfsColour = 'N' # <<<<<<<<<<<<<< * theNode.kmerSize = kmerSize * theNode.position = position */ __pyx_v_theNode->dfsColour = 'N'; /* "assembler.pyx":192 * theNode.colours = colour * theNode.dfsColour = 'N' * theNode.kmerSize = kmerSize # <<<<<<<<<<<<<< * theNode.position = position * theNode.nEdges = 0 */ __pyx_v_theNode->kmerSize = __pyx_v_kmerSize; /* "assembler.pyx":193 * theNode.dfsColour = 'N' * theNode.kmerSize = kmerSize * theNode.position = position # <<<<<<<<<<<<<< * theNode.nEdges = 0 * */ __pyx_v_theNode->position = __pyx_v_position; /* "assembler.pyx":194 * theNode.kmerSize = kmerSize * theNode.position = position * theNode.nEdges = 0 # <<<<<<<<<<<<<< * * return theNode */ __pyx_v_theNode->nEdges = 0; /* "assembler.pyx":196 * theNode.nEdges = 0 * * return theNode # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theNode; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("assembler.createNode", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":200 * ################################################################################################### * * cdef void* destroyNode(Node* theNode): # <<<<<<<<<<<<<< * """ * free all memory associated with a Node struct. The Node takes ownership */ static void *__pyx_f_9assembler_destroyNode(__pyx_t_9assembler_Node *__pyx_v_theNode) { int __pyx_v_i; void *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("destroyNode", 0); /* "assembler.pyx":206 * """ * # Edges belong to the node, so destroy these now. * cdef int i = 0 # <<<<<<<<<<<<<< * * for i in range(theNode.nEdges): */ __pyx_v_i = 0; /* "assembler.pyx":208 * cdef int i = 0 * * for i in range(theNode.nEdges): # <<<<<<<<<<<<<< * destroyEdge(theNode.edges[i]) * */ __pyx_t_1 = __pyx_v_theNode->nEdges; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":209 * * for i in range(theNode.nEdges): * destroyEdge(theNode.edges[i]) # <<<<<<<<<<<<<< * * free(theNode) */ __pyx_f_9assembler_destroyEdge((__pyx_v_theNode->edges[__pyx_v_i])); } /* "assembler.pyx":211 * destroyEdge(theNode.edges[i]) * * free(theNode) # <<<<<<<<<<<<<< * theNode = NULL * */ free(__pyx_v_theNode); /* "assembler.pyx":212 * * free(theNode) * theNode = NULL # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_theNode = NULL; __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":216 * ################################################################################################### * * cdef inline int Node_Equal(Node* thisNode, Node* otherNode): # <<<<<<<<<<<<<< * """ * Two nodes are equal if and only if their sequencese are equal. */ static CYTHON_INLINE int __pyx_f_9assembler_Node_Equal(__pyx_t_9assembler_Node *__pyx_v_thisNode, __pyx_t_9assembler_Node *__pyx_v_otherNode) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("Node_Equal", 0); /* "assembler.pyx":220 * Two nodes are equal if and only if their sequencese are equal. * """ * if thisNode.kmerSize != otherNode.kmerSize: # <<<<<<<<<<<<<< * return 0 * else: */ __pyx_t_1 = (__pyx_v_thisNode->kmerSize != __pyx_v_otherNode->kmerSize); if (__pyx_t_1) { /* "assembler.pyx":221 * """ * if thisNode.kmerSize != otherNode.kmerSize: * return 0 # <<<<<<<<<<<<<< * else: * return (strncmp(thisNode.sequence, otherNode.sequence, thisNode.kmerSize) == 0) */ __pyx_r = 0; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":223 * return 0 * else: * return (strncmp(thisNode.sequence, otherNode.sequence, thisNode.kmerSize) == 0) # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = (strncmp(__pyx_v_thisNode->sequence, __pyx_v_otherNode->sequence, __pyx_v_thisNode->kmerSize) == 0); goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":227 * ################################################################################################### * * cdef inline void Node_AddEdge(Node* theNode, Edge* theEdge): # <<<<<<<<<<<<<< * """ * Add the specified edge to the specified node. */ static CYTHON_INLINE void __pyx_f_9assembler_Node_AddEdge(__pyx_t_9assembler_Node *__pyx_v_theNode, __pyx_t_9assembler_Edge *__pyx_v_theEdge) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("Node_AddEdge", 0); /* "assembler.pyx":231 * Add the specified edge to the specified node. * """ * theNode.edges[theNode.nEdges] = theEdge # <<<<<<<<<<<<<< * theNode.nEdges += 1 * */ (__pyx_v_theNode->edges[__pyx_v_theNode->nEdges]) = __pyx_v_theEdge; /* "assembler.pyx":232 * """ * theNode.edges[theNode.nEdges] = theEdge * theNode.nEdges += 1 # <<<<<<<<<<<<<< * * if theNode.nEdges > 4: */ __pyx_v_theNode->nEdges = (__pyx_v_theNode->nEdges + 1); /* "assembler.pyx":234 * theNode.nEdges += 1 * * if theNode.nEdges > 4: # <<<<<<<<<<<<<< * logger.error("Node struct cannot have > 4 edges. Now we have %s. This will cause problems" %(theNode.nEdges)) * */ __pyx_t_1 = (__pyx_v_theNode->nEdges > 4); if (__pyx_t_1) { /* "assembler.pyx":235 * * if theNode.nEdges > 4: * logger.error("Node struct cannot have > 4 edges. Now we have %s. This will cause problems" %(theNode.nEdges)) # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_theNode->nEdges); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_9), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L3; } __pyx_L3:; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("assembler.Node_AddEdge", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":240 * * @cython.profile(False) * cdef inline char* Node_GetSuffix(Node* theNode): # <<<<<<<<<<<<<< * """ * Return the suffix string of this node. The suffix is simply the last kmerSize-1 */ static CYTHON_INLINE char *__pyx_f_9assembler_Node_GetSuffix(__pyx_t_9assembler_Node *__pyx_v_theNode) { char *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Node_GetSuffix", 0); /* "assembler.pyx":245 * elements of the node sequence. * """ * return theNode.sequence + 1 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = (__pyx_v_theNode->sequence + 1); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":250 * * @cython.profile(False) * cdef inline char* Node_GetPrefix(Node* theNode): # <<<<<<<<<<<<<< * """ * Return the suffix string of this node. The suffix is simply the first kmerSize-1 */ static CYTHON_INLINE char *__pyx_f_9assembler_Node_GetPrefix(__pyx_t_9assembler_Node *__pyx_v_theNode) { char *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Node_GetPrefix", 0); /* "assembler.pyx":255 * elements of the node sequence. * """ * return theNode.sequence # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theNode->sequence; goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":260 * * @cython.profile(False) * cdef inline int nodePosComp(void* x, void* y): # <<<<<<<<<<<<<< * """ * Comparison function for Node structs, for use in qsort, to sort Nodes by their */ static CYTHON_INLINE int __pyx_f_9assembler_nodePosComp(void *__pyx_v_x, void *__pyx_v_y) { __pyx_t_9assembler_Node **__pyx_v_nodeOne; __pyx_t_9assembler_Node **__pyx_v_nodeTwo; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("nodePosComp", 0); /* "assembler.pyx":265 * positions. * """ * cdef Node** nodeOne = (x) # <<<<<<<<<<<<<< * cdef Node** nodeTwo = (y) * */ __pyx_v_nodeOne = ((__pyx_t_9assembler_Node **)__pyx_v_x); /* "assembler.pyx":266 * """ * cdef Node** nodeOne = (x) * cdef Node** nodeTwo = (y) # <<<<<<<<<<<<<< * * # Sort by position */ __pyx_v_nodeTwo = ((__pyx_t_9assembler_Node **)__pyx_v_y); /* "assembler.pyx":269 * * # Sort by position * return nodeOne[0].position - nodeTwo[0].position # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = ((__pyx_v_nodeOne[0])->position - (__pyx_v_nodeTwo[0])->position); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":274 * * @cython.profile(False) * cdef inline unsigned int hashKmer(char* theKmer, int size): # <<<<<<<<<<<<<< * """ * Return a hash value for the specified kmer. */ static CYTHON_INLINE unsigned int __pyx_f_9assembler_hashKmer(char *__pyx_v_theKmer, int __pyx_v_size) { int __pyx_v_i; unsigned int __pyx_v_hashVal; unsigned int __pyx_r; __Pyx_RefNannyDeclarations long __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("hashKmer", 0); /* "assembler.pyx":278 * Return a hash value for the specified kmer. * """ * cdef int i = 0 # <<<<<<<<<<<<<< * cdef unsigned int hashVal = 0 * */ __pyx_v_i = 0; /* "assembler.pyx":279 * """ * cdef int i = 0 * cdef unsigned int hashVal = 0 # <<<<<<<<<<<<<< * * # 1) Sum integers formed by 4-character sub-strings. */ __pyx_v_hashVal = 0; /* "assembler.pyx":282 * * # 1) Sum integers formed by 4-character sub-strings. * for i in range(0, size-4, 4): # <<<<<<<<<<<<<< * hashVal += theKmer[i] * hashVal += (theKmer[i + 1] << 8) */ __pyx_t_1 = (__pyx_v_size - 4); for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=4) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":283 * # 1) Sum integers formed by 4-character sub-strings. * for i in range(0, size-4, 4): * hashVal += theKmer[i] # <<<<<<<<<<<<<< * hashVal += (theKmer[i + 1] << 8) * hashVal += (theKmer[i + 2] << 16) */ __pyx_v_hashVal = (__pyx_v_hashVal + (__pyx_v_theKmer[__pyx_v_i])); /* "assembler.pyx":284 * for i in range(0, size-4, 4): * hashVal += theKmer[i] * hashVal += (theKmer[i + 1] << 8) # <<<<<<<<<<<<<< * hashVal += (theKmer[i + 2] << 16) * hashVal += (theKmer[i + 3] << 24) */ __pyx_v_hashVal = (__pyx_v_hashVal + ((__pyx_v_theKmer[(__pyx_v_i + 1)]) << 8)); /* "assembler.pyx":285 * hashVal += theKmer[i] * hashVal += (theKmer[i + 1] << 8) * hashVal += (theKmer[i + 2] << 16) # <<<<<<<<<<<<<< * hashVal += (theKmer[i + 3] << 24) * */ __pyx_v_hashVal = (__pyx_v_hashVal + ((__pyx_v_theKmer[(__pyx_v_i + 2)]) << 16)); /* "assembler.pyx":286 * hashVal += (theKmer[i + 1] << 8) * hashVal += (theKmer[i + 2] << 16) * hashVal += (theKmer[i + 3] << 24) # <<<<<<<<<<<<<< * * # 2) multiply by 101 and add new value. From Paul Larson (see StackOverflow) */ __pyx_v_hashVal = (__pyx_v_hashVal + ((__pyx_v_theKmer[(__pyx_v_i + 3)]) << 24)); } /* "assembler.pyx":292 * # hashVal = hashVal * 101 + theKmer[i] * * return hashVal # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_hashVal; goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":296 * ################################################################################################### * * cdef PathStack* createPathStack(int capacity): # <<<<<<<<<<<<<< * """ * Create and return a stack for storing Paths. */ static __pyx_t_9assembler_PathStack *__pyx_f_9assembler_createPathStack(int __pyx_v_capacity) { __pyx_t_9assembler_PathStack *__pyx_v_theStack; __pyx_t_9assembler_PathStack *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createPathStack", 0); /* "assembler.pyx":300 * Create and return a stack for storing Paths. * """ * cdef PathStack* theStack = (malloc(sizeof(PathStack))) # <<<<<<<<<<<<<< * * if theStack == NULL: */ __pyx_v_theStack = ((__pyx_t_9assembler_PathStack *)malloc((sizeof(__pyx_t_9assembler_PathStack)))); /* "assembler.pyx":302 * cdef PathStack* theStack = (malloc(sizeof(PathStack))) * * if theStack == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not allocate path stack with capacity %s" %(capacity)) * */ __pyx_t_1 = (__pyx_v_theStack == NULL); if (__pyx_t_1) { /* "assembler.pyx":303 * * if theStack == NULL: * logger.error("Error. Could not allocate path stack with capacity %s" %(capacity)) # <<<<<<<<<<<<<< * * theStack.elements = (malloc(sizeof(Path*)*capacity)) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_capacity); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":305 * logger.error("Error. Could not allocate path stack with capacity %s" %(capacity)) * * theStack.elements = (malloc(sizeof(Path*)*capacity)) # <<<<<<<<<<<<<< * * if theStack.elements == NULL: */ __pyx_v_theStack->elements = ((__pyx_t_9assembler_Path **)malloc(((sizeof(__pyx_t_9assembler_Path *)) * __pyx_v_capacity))); /* "assembler.pyx":307 * theStack.elements = (malloc(sizeof(Path*)*capacity)) * * if theStack.elements == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not allocate path stack elements with capacity %s" %(capacity)) * */ __pyx_t_1 = (__pyx_v_theStack->elements == NULL); if (__pyx_t_1) { /* "assembler.pyx":308 * * if theStack.elements == NULL: * logger.error("Error. Could not allocate path stack elements with capacity %s" %(capacity)) # <<<<<<<<<<<<<< * * theStack.top = -1 # Empty */ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__error); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromLong(__pyx_v_capacity); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_11), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4; } __pyx_L4:; /* "assembler.pyx":310 * logger.error("Error. Could not allocate path stack elements with capacity %s" %(capacity)) * * theStack.top = -1 # Empty # <<<<<<<<<<<<<< * theStack.capacity = capacity * return theStack */ __pyx_v_theStack->top = -1; /* "assembler.pyx":311 * * theStack.top = -1 # Empty * theStack.capacity = capacity # <<<<<<<<<<<<<< * return theStack * */ __pyx_v_theStack->capacity = __pyx_v_capacity; /* "assembler.pyx":312 * theStack.top = -1 # Empty * theStack.capacity = capacity * return theStack # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theStack; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("assembler.createPathStack", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":316 * ################################################################################################### * * cdef void destroyPathStack(PathStack* theStack): # <<<<<<<<<<<<<< * """ * Clears up memory in stack. Does not destroy the */ static void __pyx_f_9assembler_destroyPathStack(__pyx_t_9assembler_PathStack *__pyx_v_theStack) { int __pyx_v_i; __Pyx_RefNannyDeclarations long __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("destroyPathStack", 0); /* "assembler.pyx":321 * Paths. * """ * cdef int i = 0 # <<<<<<<<<<<<<< * * for i in range(theStack.top + 1): */ __pyx_v_i = 0; /* "assembler.pyx":323 * cdef int i = 0 * * for i in range(theStack.top + 1): # <<<<<<<<<<<<<< * destroyPath(theStack.elements[i]) * */ __pyx_t_1 = (__pyx_v_theStack->top + 1); for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":324 * * for i in range(theStack.top + 1): * destroyPath(theStack.elements[i]) # <<<<<<<<<<<<<< * * free(theStack.elements) */ __pyx_f_9assembler_destroyPath((__pyx_v_theStack->elements[__pyx_v_i])); } /* "assembler.pyx":326 * destroyPath(theStack.elements[i]) * * free(theStack.elements) # <<<<<<<<<<<<<< * theStack.elements = NULL * free(theStack) */ free(__pyx_v_theStack->elements); /* "assembler.pyx":327 * * free(theStack.elements) * theStack.elements = NULL # <<<<<<<<<<<<<< * free(theStack) * theStack = NULL */ __pyx_v_theStack->elements = NULL; /* "assembler.pyx":328 * free(theStack.elements) * theStack.elements = NULL * free(theStack) # <<<<<<<<<<<<<< * theStack = NULL * */ free(__pyx_v_theStack); /* "assembler.pyx":329 * theStack.elements = NULL * free(theStack) * theStack = NULL # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_theStack = NULL; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":334 * * @cython.profile(False) * cdef int PathStack_IsEmpty(PathStack* theStack): # <<<<<<<<<<<<<< * """ * Return 1 if the stack is empty and 0 otherwise. */ static int __pyx_f_9assembler_PathStack_IsEmpty(__pyx_t_9assembler_PathStack *__pyx_v_theStack) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("PathStack_IsEmpty", 0); /* "assembler.pyx":338 * Return 1 if the stack is empty and 0 otherwise. * """ * if theStack.top == -1: # <<<<<<<<<<<<<< * return 1 * else: */ __pyx_t_1 = (__pyx_v_theStack->top == -1); if (__pyx_t_1) { /* "assembler.pyx":339 * """ * if theStack.top == -1: * return 1 # <<<<<<<<<<<<<< * else: * return 0 */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":341 * return 1 * else: * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":346 * * @cython.profile(False) * cdef int PathStack_IsFull(PathStack* theStack): # <<<<<<<<<<<<<< * """ * Return 1 if the stack is full and 0 otherwise. */ static int __pyx_f_9assembler_PathStack_IsFull(__pyx_t_9assembler_PathStack *__pyx_v_theStack) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("PathStack_IsFull", 0); /* "assembler.pyx":350 * Return 1 if the stack is full and 0 otherwise. * """ * if theStack.top + 1 == theStack.capacity: # <<<<<<<<<<<<<< * return 1 * else: */ __pyx_t_1 = ((__pyx_v_theStack->top + 1) == __pyx_v_theStack->capacity); if (__pyx_t_1) { /* "assembler.pyx":351 * """ * if theStack.top + 1 == theStack.capacity: * return 1 # <<<<<<<<<<<<<< * else: * return 0 */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":353 * return 1 * else: * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":357 * ################################################################################################### * * cdef void PathStack_Push(PathStack* theStack, Path* element): # <<<<<<<<<<<<<< * """ * Add a new element to the stack. Elements always go on the top, */ static void __pyx_f_9assembler_PathStack_Push(__pyx_t_9assembler_PathStack *__pyx_v_theStack, __pyx_t_9assembler_Path *__pyx_v_element) { __pyx_t_9assembler_Path **__pyx_v_temp; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PathStack_Push", 0); /* "assembler.pyx":362 * i.e. in the highest position. Realloc if necessary. * """ * cdef Path** temp = NULL # <<<<<<<<<<<<<< * * # Need to realloc */ __pyx_v_temp = NULL; /* "assembler.pyx":365 * * # Need to realloc * if PathStack_IsFull(theStack): # <<<<<<<<<<<<<< * temp = (realloc(theStack.elements, 2*sizeof(Path*)*theStack.capacity)) * */ __pyx_t_1 = __pyx_f_9assembler_PathStack_IsFull(__pyx_v_theStack); if (__pyx_t_1) { /* "assembler.pyx":366 * # Need to realloc * if PathStack_IsFull(theStack): * temp = (realloc(theStack.elements, 2*sizeof(Path*)*theStack.capacity)) # <<<<<<<<<<<<<< * * if temp == NULL: */ __pyx_v_temp = ((__pyx_t_9assembler_Path **)realloc(__pyx_v_theStack->elements, ((2 * (sizeof(__pyx_t_9assembler_Path *))) * __pyx_v_theStack->capacity))); /* "assembler.pyx":368 * temp = (realloc(theStack.elements, 2*sizeof(Path*)*theStack.capacity)) * * if temp == NULL: # <<<<<<<<<<<<<< * logger.error("Could not re-allocate PathStack") * else: */ __pyx_t_2 = (__pyx_v_temp == NULL); if (__pyx_t_2) { /* "assembler.pyx":369 * * if temp == NULL: * logger.error("Could not re-allocate PathStack") # <<<<<<<<<<<<<< * else: * theStack.elements = temp */ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__error); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4; } /*else*/ { /* "assembler.pyx":371 * logger.error("Could not re-allocate PathStack") * else: * theStack.elements = temp # <<<<<<<<<<<<<< * theStack.capacity *= 2 * */ __pyx_v_theStack->elements = __pyx_v_temp; /* "assembler.pyx":372 * else: * theStack.elements = temp * theStack.capacity *= 2 # <<<<<<<<<<<<<< * * theStack.top += 1 */ __pyx_v_theStack->capacity = (__pyx_v_theStack->capacity * 2); } __pyx_L4:; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":374 * theStack.capacity *= 2 * * theStack.top += 1 # <<<<<<<<<<<<<< * theStack.elements[theStack.top] = element * */ __pyx_v_theStack->top = (__pyx_v_theStack->top + 1); /* "assembler.pyx":375 * * theStack.top += 1 * theStack.elements[theStack.top] = element # <<<<<<<<<<<<<< * * ################################################################################################### */ (__pyx_v_theStack->elements[__pyx_v_theStack->top]) = __pyx_v_element; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("assembler.PathStack_Push", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":379 * ################################################################################################### * * cdef Path* PathStack_Pop(PathStack* theStack): # <<<<<<<<<<<<<< * """ * Pop and return the top element from the stack. */ static __pyx_t_9assembler_Path *__pyx_f_9assembler_PathStack_Pop(__pyx_t_9assembler_PathStack *__pyx_v_theStack) { __pyx_t_9assembler_Path *__pyx_v_thePath; __pyx_t_9assembler_Path *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("PathStack_Pop", 0); /* "assembler.pyx":383 * Pop and return the top element from the stack. * """ * cdef Path* thePath = NULL # <<<<<<<<<<<<<< * * if PathStack_IsEmpty(theStack): */ __pyx_v_thePath = NULL; /* "assembler.pyx":385 * cdef Path* thePath = NULL * * if PathStack_IsEmpty(theStack): # <<<<<<<<<<<<<< * return NULL * else: */ __pyx_t_1 = __pyx_f_9assembler_PathStack_IsEmpty(__pyx_v_theStack); if (__pyx_t_1) { /* "assembler.pyx":386 * * if PathStack_IsEmpty(theStack): * return NULL # <<<<<<<<<<<<<< * else: * thePath = theStack.elements[theStack.top] */ __pyx_r = NULL; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":388 * return NULL * else: * thePath = theStack.elements[theStack.top] # <<<<<<<<<<<<<< * theStack.top -= 1 * return thePath */ __pyx_v_thePath = (__pyx_v_theStack->elements[__pyx_v_theStack->top]); /* "assembler.pyx":389 * else: * thePath = theStack.elements[theStack.top] * theStack.top -= 1 # <<<<<<<<<<<<<< * return thePath * */ __pyx_v_theStack->top = (__pyx_v_theStack->top - 1); /* "assembler.pyx":390 * thePath = theStack.elements[theStack.top] * theStack.top -= 1 * return thePath # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_thePath; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":394 * ################################################################################################### * * cdef NodeStack* createNodeStack(int capacity): # <<<<<<<<<<<<<< * """ * Create and return a stack for storing nodes. */ static __pyx_t_9assembler_NodeStack *__pyx_f_9assembler_createNodeStack(int __pyx_v_capacity) { __pyx_t_9assembler_NodeStack *__pyx_v_theStack; __pyx_t_9assembler_NodeStack *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createNodeStack", 0); /* "assembler.pyx":398 * Create and return a stack for storing nodes. * """ * cdef NodeStack* theStack = (malloc(sizeof(NodeStack))) # <<<<<<<<<<<<<< * * if theStack == NULL: */ __pyx_v_theStack = ((__pyx_t_9assembler_NodeStack *)malloc((sizeof(__pyx_t_9assembler_NodeStack)))); /* "assembler.pyx":400 * cdef NodeStack* theStack = (malloc(sizeof(NodeStack))) * * if theStack == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not allocate node stack with capacity %s" %(capacity)) * */ __pyx_t_1 = (__pyx_v_theStack == NULL); if (__pyx_t_1) { /* "assembler.pyx":401 * * if theStack == NULL: * logger.error("Error. Could not allocate node stack with capacity %s" %(capacity)) # <<<<<<<<<<<<<< * * theStack.elements = (malloc(sizeof(Node*)*capacity)) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_capacity); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_14), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":403 * logger.error("Error. Could not allocate node stack with capacity %s" %(capacity)) * * theStack.elements = (malloc(sizeof(Node*)*capacity)) # <<<<<<<<<<<<<< * * if theStack.elements == NULL: */ __pyx_v_theStack->elements = ((__pyx_t_9assembler_Node **)malloc(((sizeof(__pyx_t_9assembler_Node *)) * __pyx_v_capacity))); /* "assembler.pyx":405 * theStack.elements = (malloc(sizeof(Node*)*capacity)) * * if theStack.elements == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not allocate node stack elements with capacity %s" %(capacity)) * */ __pyx_t_1 = (__pyx_v_theStack->elements == NULL); if (__pyx_t_1) { /* "assembler.pyx":406 * * if theStack.elements == NULL: * logger.error("Error. Could not allocate node stack elements with capacity %s" %(capacity)) # <<<<<<<<<<<<<< * * theStack.top = -1 # Empty */ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__error); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromLong(__pyx_v_capacity); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_15), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4; } __pyx_L4:; /* "assembler.pyx":408 * logger.error("Error. Could not allocate node stack elements with capacity %s" %(capacity)) * * theStack.top = -1 # Empty # <<<<<<<<<<<<<< * theStack.capacity = capacity * return theStack */ __pyx_v_theStack->top = -1; /* "assembler.pyx":409 * * theStack.top = -1 # Empty * theStack.capacity = capacity # <<<<<<<<<<<<<< * return theStack * */ __pyx_v_theStack->capacity = __pyx_v_capacity; /* "assembler.pyx":410 * theStack.top = -1 # Empty * theStack.capacity = capacity * return theStack # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theStack; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("assembler.createNodeStack", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":414 * ################################################################################################### * * cdef void destroyNodeStack(NodeStack* theStack): # <<<<<<<<<<<<<< * """ * Clears up memory in stack. Does not destroy the */ static void __pyx_f_9assembler_destroyNodeStack(__pyx_t_9assembler_NodeStack *__pyx_v_theStack) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("destroyNodeStack", 0); /* "assembler.pyx":419 * nodes. * """ * free(theStack.elements) # <<<<<<<<<<<<<< * theStack.elements = NULL * free(theStack) */ free(__pyx_v_theStack->elements); /* "assembler.pyx":420 * """ * free(theStack.elements) * theStack.elements = NULL # <<<<<<<<<<<<<< * free(theStack) * theStack = NULL */ __pyx_v_theStack->elements = NULL; /* "assembler.pyx":421 * free(theStack.elements) * theStack.elements = NULL * free(theStack) # <<<<<<<<<<<<<< * theStack = NULL * */ free(__pyx_v_theStack); /* "assembler.pyx":422 * theStack.elements = NULL * free(theStack) * theStack = NULL # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_theStack = NULL; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":427 * * @cython.profile(False) * cdef int NodeStack_IsEmpty(NodeStack* theStack): # <<<<<<<<<<<<<< * """ * Return 1 if the stack is empty and 0 otherwise. */ static int __pyx_f_9assembler_NodeStack_IsEmpty(__pyx_t_9assembler_NodeStack *__pyx_v_theStack) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("NodeStack_IsEmpty", 0); /* "assembler.pyx":431 * Return 1 if the stack is empty and 0 otherwise. * """ * if theStack.top == -1: # <<<<<<<<<<<<<< * return 1 * else: */ __pyx_t_1 = (__pyx_v_theStack->top == -1); if (__pyx_t_1) { /* "assembler.pyx":432 * """ * if theStack.top == -1: * return 1 # <<<<<<<<<<<<<< * else: * return 0 */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":434 * return 1 * else: * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":439 * * @cython.profile(False) * cdef int NodeStack_IsFull(NodeStack* theStack): # <<<<<<<<<<<<<< * """ * Return 1 if the stack is full and 0 otherwise. */ static int __pyx_f_9assembler_NodeStack_IsFull(__pyx_t_9assembler_NodeStack *__pyx_v_theStack) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("NodeStack_IsFull", 0); /* "assembler.pyx":443 * Return 1 if the stack is full and 0 otherwise. * """ * if theStack.top + 1 == theStack.capacity: # <<<<<<<<<<<<<< * return 1 * else: */ __pyx_t_1 = ((__pyx_v_theStack->top + 1) == __pyx_v_theStack->capacity); if (__pyx_t_1) { /* "assembler.pyx":444 * """ * if theStack.top + 1 == theStack.capacity: * return 1 # <<<<<<<<<<<<<< * else: * return 0 */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":446 * return 1 * else: * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":450 * ################################################################################################### * * cdef void NodeStack_Push(NodeStack* theStack, Node* element): # <<<<<<<<<<<<<< * """ * Add a new element to the stack. Elements always go on the top, */ static void __pyx_f_9assembler_NodeStack_Push(__pyx_t_9assembler_NodeStack *__pyx_v_theStack, __pyx_t_9assembler_Node *__pyx_v_element) { __pyx_t_9assembler_Node **__pyx_v_temp; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("NodeStack_Push", 0); /* "assembler.pyx":455 * i.e. in the highest position. Realloc if necessary. * """ * cdef Node** temp = NULL # <<<<<<<<<<<<<< * * # Need to realloc */ __pyx_v_temp = NULL; /* "assembler.pyx":458 * * # Need to realloc * if NodeStack_IsFull(theStack): # <<<<<<<<<<<<<< * temp = (realloc(theStack.elements, 2*sizeof(Node*)*theStack.capacity)) * */ __pyx_t_1 = __pyx_f_9assembler_NodeStack_IsFull(__pyx_v_theStack); if (__pyx_t_1) { /* "assembler.pyx":459 * # Need to realloc * if NodeStack_IsFull(theStack): * temp = (realloc(theStack.elements, 2*sizeof(Node*)*theStack.capacity)) # <<<<<<<<<<<<<< * * if temp == NULL: */ __pyx_v_temp = ((__pyx_t_9assembler_Node **)realloc(__pyx_v_theStack->elements, ((2 * (sizeof(__pyx_t_9assembler_Node *))) * __pyx_v_theStack->capacity))); /* "assembler.pyx":461 * temp = (realloc(theStack.elements, 2*sizeof(Node*)*theStack.capacity)) * * if temp == NULL: # <<<<<<<<<<<<<< * logger.error("Could not re-allocate NodeStack") * else: */ __pyx_t_2 = (__pyx_v_temp == NULL); if (__pyx_t_2) { /* "assembler.pyx":462 * * if temp == NULL: * logger.error("Could not re-allocate NodeStack") # <<<<<<<<<<<<<< * else: * theStack.elements = temp */ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__error); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_17), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4; } /*else*/ { /* "assembler.pyx":464 * logger.error("Could not re-allocate NodeStack") * else: * theStack.elements = temp # <<<<<<<<<<<<<< * theStack.capacity *= 2 * */ __pyx_v_theStack->elements = __pyx_v_temp; /* "assembler.pyx":465 * else: * theStack.elements = temp * theStack.capacity *= 2 # <<<<<<<<<<<<<< * * theStack.top += 1 */ __pyx_v_theStack->capacity = (__pyx_v_theStack->capacity * 2); } __pyx_L4:; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":467 * theStack.capacity *= 2 * * theStack.top += 1 # <<<<<<<<<<<<<< * theStack.elements[theStack.top] = element * */ __pyx_v_theStack->top = (__pyx_v_theStack->top + 1); /* "assembler.pyx":468 * * theStack.top += 1 * theStack.elements[theStack.top] = element # <<<<<<<<<<<<<< * * ################################################################################################### */ (__pyx_v_theStack->elements[__pyx_v_theStack->top]) = __pyx_v_element; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("assembler.NodeStack_Push", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":472 * ################################################################################################### * * cdef Node* NodeStack_Pop(NodeStack* theStack): # <<<<<<<<<<<<<< * """ * Pop and return the top element from the stack. */ static __pyx_t_9assembler_Node *__pyx_f_9assembler_NodeStack_Pop(__pyx_t_9assembler_NodeStack *__pyx_v_theStack) { __pyx_t_9assembler_Node *__pyx_v_theNode; __pyx_t_9assembler_Node *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("NodeStack_Pop", 0); /* "assembler.pyx":476 * Pop and return the top element from the stack. * """ * cdef Node* theNode = NULL # <<<<<<<<<<<<<< * * if NodeStack_IsEmpty(theStack): */ __pyx_v_theNode = NULL; /* "assembler.pyx":478 * cdef Node* theNode = NULL * * if NodeStack_IsEmpty(theStack): # <<<<<<<<<<<<<< * return NULL * else: */ __pyx_t_1 = __pyx_f_9assembler_NodeStack_IsEmpty(__pyx_v_theStack); if (__pyx_t_1) { /* "assembler.pyx":479 * * if NodeStack_IsEmpty(theStack): * return NULL # <<<<<<<<<<<<<< * else: * theNode = theStack.elements[theStack.top] */ __pyx_r = NULL; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":481 * return NULL * else: * theNode = theStack.elements[theStack.top] # <<<<<<<<<<<<<< * theStack.top -= 1 * return theNode */ __pyx_v_theNode = (__pyx_v_theStack->elements[__pyx_v_theStack->top]); /* "assembler.pyx":482 * else: * theNode = theStack.elements[theStack.top] * theStack.top -= 1 # <<<<<<<<<<<<<< * return theNode * */ __pyx_v_theStack->top = (__pyx_v_theStack->top - 1); /* "assembler.pyx":483 * theNode = theStack.elements[theStack.top] * theStack.top -= 1 * return theNode # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theNode; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":501 * ################################################################################################### * * cdef Edge* createEdge(Node* startNode, Node* endNode, double weight): # <<<<<<<<<<<<<< * """ * Create and return a new edge. */ static __pyx_t_9assembler_Edge *__pyx_f_9assembler_createEdge(__pyx_t_9assembler_Node *__pyx_v_startNode, __pyx_t_9assembler_Node *__pyx_v_endNode, double __pyx_v_weight) { __pyx_t_9assembler_Edge *__pyx_v_theEdge; __pyx_t_9assembler_Edge *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createEdge", 0); /* "assembler.pyx":505 * Create and return a new edge. * """ * cdef Edge* theEdge = (malloc(sizeof(Edge))) # <<<<<<<<<<<<<< * * if theEdge == NULL: */ __pyx_v_theEdge = ((__pyx_t_9assembler_Edge *)malloc((sizeof(__pyx_t_9assembler_Edge)))); /* "assembler.pyx":507 * cdef Edge* theEdge = (malloc(sizeof(Edge))) * * if theEdge == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not allocate edge") * */ __pyx_t_1 = (__pyx_v_theEdge == NULL); if (__pyx_t_1) { /* "assembler.pyx":508 * * if theEdge == NULL: * logger.error("Error. Could not allocate edge") # <<<<<<<<<<<<<< * * theEdge.startNode = startNode */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_19), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":510 * logger.error("Error. Could not allocate edge") * * theEdge.startNode = startNode # <<<<<<<<<<<<<< * theEdge.endNode = endNode * theEdge.weight = weight */ __pyx_v_theEdge->startNode = __pyx_v_startNode; /* "assembler.pyx":511 * * theEdge.startNode = startNode * theEdge.endNode = endNode # <<<<<<<<<<<<<< * theEdge.weight = weight * */ __pyx_v_theEdge->endNode = __pyx_v_endNode; /* "assembler.pyx":512 * theEdge.startNode = startNode * theEdge.endNode = endNode * theEdge.weight = weight # <<<<<<<<<<<<<< * * return theEdge */ __pyx_v_theEdge->weight = __pyx_v_weight; /* "assembler.pyx":514 * theEdge.weight = weight * * return theEdge # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theEdge; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("assembler.createEdge", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":518 * ################################################################################################### * * cdef void destroyEdge(Edge* theEdge): # <<<<<<<<<<<<<< * """ * free memory used by Edge struct. */ static void __pyx_f_9assembler_destroyEdge(__pyx_t_9assembler_Edge *__pyx_v_theEdge) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("destroyEdge", 0); /* "assembler.pyx":522 * free memory used by Edge struct. * """ * free(theEdge) # <<<<<<<<<<<<<< * theEdge = NULL * */ free(__pyx_v_theEdge); /* "assembler.pyx":523 * """ * free(theEdge) * theEdge = NULL # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_theEdge = NULL; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":527 * ################################################################################################### * * cdef EdgeStack* createEdgeStack(int capacity): # <<<<<<<<<<<<<< * """ * Create and return a stack for storing Edges. */ static __pyx_t_9assembler_EdgeStack *__pyx_f_9assembler_createEdgeStack(int __pyx_v_capacity) { __pyx_t_9assembler_EdgeStack *__pyx_v_theStack; __pyx_t_9assembler_EdgeStack *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createEdgeStack", 0); /* "assembler.pyx":531 * Create and return a stack for storing Edges. * """ * cdef EdgeStack* theStack = (malloc(sizeof(EdgeStack))) # <<<<<<<<<<<<<< * * if theStack == NULL: */ __pyx_v_theStack = ((__pyx_t_9assembler_EdgeStack *)malloc((sizeof(__pyx_t_9assembler_EdgeStack)))); /* "assembler.pyx":533 * cdef EdgeStack* theStack = (malloc(sizeof(EdgeStack))) * * if theStack == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not allocate edge stack with capacity %s" %(capacity)) * */ __pyx_t_1 = (__pyx_v_theStack == NULL); if (__pyx_t_1) { /* "assembler.pyx":534 * * if theStack == NULL: * logger.error("Error. Could not allocate edge stack with capacity %s" %(capacity)) # <<<<<<<<<<<<<< * * theStack.elements = (malloc(sizeof(Edge*)*capacity)) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_capacity); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_20), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":536 * logger.error("Error. Could not allocate edge stack with capacity %s" %(capacity)) * * theStack.elements = (malloc(sizeof(Edge*)*capacity)) # <<<<<<<<<<<<<< * * if theStack.elements == NULL: */ __pyx_v_theStack->elements = ((__pyx_t_9assembler_Edge **)malloc(((sizeof(__pyx_t_9assembler_Edge *)) * __pyx_v_capacity))); /* "assembler.pyx":538 * theStack.elements = (malloc(sizeof(Edge*)*capacity)) * * if theStack.elements == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not allocate edge stack elements with capacity %s" %(capacity)) * */ __pyx_t_1 = (__pyx_v_theStack->elements == NULL); if (__pyx_t_1) { /* "assembler.pyx":539 * * if theStack.elements == NULL: * logger.error("Error. Could not allocate edge stack elements with capacity %s" %(capacity)) # <<<<<<<<<<<<<< * * theStack.top = -1 # Empty */ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__error); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromLong(__pyx_v_capacity); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4; } __pyx_L4:; /* "assembler.pyx":541 * logger.error("Error. Could not allocate edge stack elements with capacity %s" %(capacity)) * * theStack.top = -1 # Empty # <<<<<<<<<<<<<< * theStack.capacity = capacity * return theStack */ __pyx_v_theStack->top = -1; /* "assembler.pyx":542 * * theStack.top = -1 # Empty * theStack.capacity = capacity # <<<<<<<<<<<<<< * return theStack * */ __pyx_v_theStack->capacity = __pyx_v_capacity; /* "assembler.pyx":543 * theStack.top = -1 # Empty * theStack.capacity = capacity * return theStack # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theStack; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("assembler.createEdgeStack", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":547 * ################################################################################################### * * cdef void destroyEdgeStack(EdgeStack* theStack): # <<<<<<<<<<<<<< * """ * Clears up memory in stack. Does not destroy the */ static void __pyx_f_9assembler_destroyEdgeStack(__pyx_t_9assembler_EdgeStack *__pyx_v_theStack) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("destroyEdgeStack", 0); /* "assembler.pyx":552 * Edges. * """ * free(theStack.elements) # <<<<<<<<<<<<<< * theStack.elements = NULL * free(theStack) */ free(__pyx_v_theStack->elements); /* "assembler.pyx":553 * """ * free(theStack.elements) * theStack.elements = NULL # <<<<<<<<<<<<<< * free(theStack) * theStack = NULL */ __pyx_v_theStack->elements = NULL; /* "assembler.pyx":554 * free(theStack.elements) * theStack.elements = NULL * free(theStack) # <<<<<<<<<<<<<< * theStack = NULL * */ free(__pyx_v_theStack); /* "assembler.pyx":555 * theStack.elements = NULL * free(theStack) * theStack = NULL # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_theStack = NULL; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":560 * * @cython.profile(False) * cdef int EdgeStack_IsEmpty(EdgeStack* theStack): # <<<<<<<<<<<<<< * """ * Return 1 if the stack is empty and 0 otherwise. */ static int __pyx_f_9assembler_EdgeStack_IsEmpty(__pyx_t_9assembler_EdgeStack *__pyx_v_theStack) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("EdgeStack_IsEmpty", 0); /* "assembler.pyx":564 * Return 1 if the stack is empty and 0 otherwise. * """ * if theStack.top == -1: # <<<<<<<<<<<<<< * return 1 * else: */ __pyx_t_1 = (__pyx_v_theStack->top == -1); if (__pyx_t_1) { /* "assembler.pyx":565 * """ * if theStack.top == -1: * return 1 # <<<<<<<<<<<<<< * else: * return 0 */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":567 * return 1 * else: * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":572 * * @cython.profile(False) * cdef int EdgeStack_IsFull(EdgeStack* theStack): # <<<<<<<<<<<<<< * """ * Return 1 if the stack is full and 0 otherwise. */ static int __pyx_f_9assembler_EdgeStack_IsFull(__pyx_t_9assembler_EdgeStack *__pyx_v_theStack) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("EdgeStack_IsFull", 0); /* "assembler.pyx":576 * Return 1 if the stack is full and 0 otherwise. * """ * if theStack.top == theStack.capacity - 1: # <<<<<<<<<<<<<< * return 1 * else: */ __pyx_t_1 = (__pyx_v_theStack->top == (__pyx_v_theStack->capacity - 1)); if (__pyx_t_1) { /* "assembler.pyx":577 * """ * if theStack.top == theStack.capacity - 1: * return 1 # <<<<<<<<<<<<<< * else: * return 0 */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":579 * return 1 * else: * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":583 * ################################################################################################### * * cdef void EdgeStack_Push(EdgeStack* theStack, Edge* element): # <<<<<<<<<<<<<< * """ * Add a new element to the stack. Elements always go on the top, */ static void __pyx_f_9assembler_EdgeStack_Push(__pyx_t_9assembler_EdgeStack *__pyx_v_theStack, __pyx_t_9assembler_Edge *__pyx_v_element) { __pyx_t_9assembler_Edge **__pyx_v_temp; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("EdgeStack_Push", 0); /* "assembler.pyx":588 * i.e. in the highest position. Realloc if necessary. * """ * cdef Edge** temp = NULL # <<<<<<<<<<<<<< * * # Need to realloc */ __pyx_v_temp = NULL; /* "assembler.pyx":591 * * # Need to realloc * if EdgeStack_IsFull(theStack): # <<<<<<<<<<<<<< * temp = (realloc(theStack.elements, 2*sizeof(Edge*)*theStack.capacity)) * */ __pyx_t_1 = __pyx_f_9assembler_EdgeStack_IsFull(__pyx_v_theStack); if (__pyx_t_1) { /* "assembler.pyx":592 * # Need to realloc * if EdgeStack_IsFull(theStack): * temp = (realloc(theStack.elements, 2*sizeof(Edge*)*theStack.capacity)) # <<<<<<<<<<<<<< * * if temp == NULL: */ __pyx_v_temp = ((__pyx_t_9assembler_Edge **)realloc(__pyx_v_theStack->elements, ((2 * (sizeof(__pyx_t_9assembler_Edge *))) * __pyx_v_theStack->capacity))); /* "assembler.pyx":594 * temp = (realloc(theStack.elements, 2*sizeof(Edge*)*theStack.capacity)) * * if temp == NULL: # <<<<<<<<<<<<<< * raise StandardError, "Could not re-allocate EdgeStack" * else: */ __pyx_t_2 = (__pyx_v_temp == NULL); if (__pyx_t_2) { /* "assembler.pyx":595 * * if temp == NULL: * raise StandardError, "Could not re-allocate EdgeStack" # <<<<<<<<<<<<<< * else: * theStack.elements = temp */ __Pyx_Raise(__pyx_builtin_StandardError, ((PyObject *)__pyx_kp_s_22), 0, 0); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L4; } /*else*/ { /* "assembler.pyx":597 * raise StandardError, "Could not re-allocate EdgeStack" * else: * theStack.elements = temp # <<<<<<<<<<<<<< * theStack.capacity *= 2 * */ __pyx_v_theStack->elements = __pyx_v_temp; /* "assembler.pyx":598 * else: * theStack.elements = temp * theStack.capacity *= 2 # <<<<<<<<<<<<<< * * theStack.top += 1 */ __pyx_v_theStack->capacity = (__pyx_v_theStack->capacity * 2); } __pyx_L4:; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":600 * theStack.capacity *= 2 * * theStack.top += 1 # <<<<<<<<<<<<<< * theStack.elements[theStack.top] = element * */ __pyx_v_theStack->top = (__pyx_v_theStack->top + 1); /* "assembler.pyx":601 * * theStack.top += 1 * theStack.elements[theStack.top] = element # <<<<<<<<<<<<<< * * ################################################################################################### */ (__pyx_v_theStack->elements[__pyx_v_theStack->top]) = __pyx_v_element; goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("assembler.EdgeStack_Push", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":605 * ################################################################################################### * * cdef Edge* EdgeStack_Pop(EdgeStack* theStack): # <<<<<<<<<<<<<< * """ * Pop and return the top element from the stack. */ static __pyx_t_9assembler_Edge *__pyx_f_9assembler_EdgeStack_Pop(__pyx_t_9assembler_EdgeStack *__pyx_v_theStack) { __pyx_t_9assembler_Edge *__pyx_v_theEdge; __pyx_t_9assembler_Edge *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("EdgeStack_Pop", 0); /* "assembler.pyx":609 * Pop and return the top element from the stack. * """ * cdef Edge* theEdge = NULL # <<<<<<<<<<<<<< * * if EdgeStack_IsEmpty(theStack): */ __pyx_v_theEdge = NULL; /* "assembler.pyx":611 * cdef Edge* theEdge = NULL * * if EdgeStack_IsEmpty(theStack): # <<<<<<<<<<<<<< * return NULL * else: */ __pyx_t_1 = __pyx_f_9assembler_EdgeStack_IsEmpty(__pyx_v_theStack); if (__pyx_t_1) { /* "assembler.pyx":612 * * if EdgeStack_IsEmpty(theStack): * return NULL # <<<<<<<<<<<<<< * else: * theEdge = theStack.elements[theStack.top] */ __pyx_r = NULL; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":614 * return NULL * else: * theEdge = theStack.elements[theStack.top] # <<<<<<<<<<<<<< * theStack.top -= 1 * return theEdge */ __pyx_v_theEdge = (__pyx_v_theStack->elements[__pyx_v_theStack->top]); /* "assembler.pyx":615 * else: * theEdge = theStack.elements[theStack.top] * theStack.top -= 1 # <<<<<<<<<<<<<< * return theEdge * */ __pyx_v_theStack->top = (__pyx_v_theStack->top - 1); /* "assembler.pyx":616 * theEdge = theStack.elements[theStack.top] * theStack.top -= 1 * return theEdge # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theEdge; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":620 * ################################################################################################### * * cdef NodeDict* createNodeDict(int nBuckets): # <<<<<<<<<<<<<< * """ * Create and return a dictionary of kmer/void pointers. */ static __pyx_t_9assembler_NodeDict *__pyx_f_9assembler_createNodeDict(int __pyx_v_nBuckets) { __pyx_t_9assembler_NodeDict *__pyx_v_theDict; int __pyx_v_i; __pyx_t_9assembler_NodeDict *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createNodeDict", 0); /* "assembler.pyx":624 * Create and return a dictionary of kmer/void pointers. * """ * cdef NodeDict* theDict = (malloc(sizeof(NodeDict))) # <<<<<<<<<<<<<< * * if theDict == NULL: */ __pyx_v_theDict = ((__pyx_t_9assembler_NodeDict *)malloc((sizeof(__pyx_t_9assembler_NodeDict)))); /* "assembler.pyx":626 * cdef NodeDict* theDict = (malloc(sizeof(NodeDict))) * * if theDict == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not NodeDict") * */ __pyx_t_1 = (__pyx_v_theDict == NULL); if (__pyx_t_1) { /* "assembler.pyx":627 * * if theDict == NULL: * logger.error("Error. Could not NodeDict") # <<<<<<<<<<<<<< * * theDict.buckets = (malloc(nBuckets*sizeof(Node**))) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":629 * logger.error("Error. Could not NodeDict") * * theDict.buckets = (malloc(nBuckets*sizeof(Node**))) # <<<<<<<<<<<<<< * * if theDict.buckets == NULL: */ __pyx_v_theDict->buckets = ((__pyx_t_9assembler_Node ***)malloc((__pyx_v_nBuckets * (sizeof(__pyx_t_9assembler_Node **))))); /* "assembler.pyx":631 * theDict.buckets = (malloc(nBuckets*sizeof(Node**))) * * if theDict.buckets == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not NodeDict.buckets of size %s" %(nBuckets)) * */ __pyx_t_1 = (__pyx_v_theDict->buckets == NULL); if (__pyx_t_1) { /* "assembler.pyx":632 * * if theDict.buckets == NULL: * logger.error("Error. Could not NodeDict.buckets of size %s" %(nBuckets)) # <<<<<<<<<<<<<< * * theDict.bucketSize = (malloc(nBuckets*sizeof(int))) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_nBuckets); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_25), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4; } __pyx_L4:; /* "assembler.pyx":634 * logger.error("Error. Could not NodeDict.buckets of size %s" %(nBuckets)) * * theDict.bucketSize = (malloc(nBuckets*sizeof(int))) # <<<<<<<<<<<<<< * * if theDict.bucketSize == NULL: */ __pyx_v_theDict->bucketSize = ((int *)malloc((__pyx_v_nBuckets * (sizeof(int))))); /* "assembler.pyx":636 * theDict.bucketSize = (malloc(nBuckets*sizeof(int))) * * if theDict.bucketSize == NULL: # <<<<<<<<<<<<<< * logger.error("Error. Could not NodeDict.bucketSize of size %s" %(nBuckets)) * */ __pyx_t_1 = (__pyx_v_theDict->bucketSize == NULL); if (__pyx_t_1) { /* "assembler.pyx":637 * * if theDict.bucketSize == NULL: * logger.error("Error. Could not NodeDict.bucketSize of size %s" %(nBuckets)) # <<<<<<<<<<<<<< * * theDict.nBuckets = nBuckets */ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__error); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromLong(__pyx_v_nBuckets); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_26), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5; } __pyx_L5:; /* "assembler.pyx":639 * logger.error("Error. Could not NodeDict.bucketSize of size %s" %(nBuckets)) * * theDict.nBuckets = nBuckets # <<<<<<<<<<<<<< * * cdef int i = 0 */ __pyx_v_theDict->nBuckets = __pyx_v_nBuckets; /* "assembler.pyx":641 * theDict.nBuckets = nBuckets * * cdef int i = 0 # <<<<<<<<<<<<<< * * for i in range(nBuckets): */ __pyx_v_i = 0; /* "assembler.pyx":643 * cdef int i = 0 * * for i in range(nBuckets): # <<<<<<<<<<<<<< * theDict.buckets[i] = NULL * theDict.bucketSize[i] = 0 */ __pyx_t_5 = __pyx_v_nBuckets; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "assembler.pyx":644 * * for i in range(nBuckets): * theDict.buckets[i] = NULL # <<<<<<<<<<<<<< * theDict.bucketSize[i] = 0 * */ (__pyx_v_theDict->buckets[__pyx_v_i]) = NULL; /* "assembler.pyx":645 * for i in range(nBuckets): * theDict.buckets[i] = NULL * theDict.bucketSize[i] = 0 # <<<<<<<<<<<<<< * * return theDict */ (__pyx_v_theDict->bucketSize[__pyx_v_i]) = 0; } /* "assembler.pyx":647 * theDict.bucketSize[i] = 0 * * return theDict # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theDict; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("assembler.createNodeDict", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":651 * ################################################################################################### * * cdef void destroyNodeDict(NodeDict* theDict): # <<<<<<<<<<<<<< * """ * free memory used by NodeDict. */ static void __pyx_f_9assembler_destroyNodeDict(__pyx_t_9assembler_NodeDict *__pyx_v_theDict) { int __pyx_v_i; CYTHON_UNUSED int __pyx_v_j; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("destroyNodeDict", 0); /* "assembler.pyx":655 * free memory used by NodeDict. * """ * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int j = 0 * */ __pyx_v_i = 0; /* "assembler.pyx":656 * """ * cdef int i = 0 * cdef int j = 0 # <<<<<<<<<<<<<< * * for i in range(theDict.nBuckets): */ __pyx_v_j = 0; /* "assembler.pyx":658 * cdef int j = 0 * * for i in range(theDict.nBuckets): # <<<<<<<<<<<<<< * free(theDict.buckets[i]) * */ __pyx_t_1 = __pyx_v_theDict->nBuckets; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":659 * * for i in range(theDict.nBuckets): * free(theDict.buckets[i]) # <<<<<<<<<<<<<< * * free(theDict.buckets) */ free((__pyx_v_theDict->buckets[__pyx_v_i])); } /* "assembler.pyx":661 * free(theDict.buckets[i]) * * free(theDict.buckets) # <<<<<<<<<<<<<< * free(theDict.bucketSize) * free(theDict) */ free(__pyx_v_theDict->buckets); /* "assembler.pyx":662 * * free(theDict.buckets) * free(theDict.bucketSize) # <<<<<<<<<<<<<< * free(theDict) * theDict = NULL */ free(__pyx_v_theDict->bucketSize); /* "assembler.pyx":663 * free(theDict.buckets) * free(theDict.bucketSize) * free(theDict) # <<<<<<<<<<<<<< * theDict = NULL * */ free(__pyx_v_theDict); /* "assembler.pyx":664 * free(theDict.bucketSize) * free(theDict) * theDict = NULL # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_theDict = NULL; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":668 * ################################################################################################### * * cdef int NodeDict_FindOrInsert(NodeDict* theDict, Node** theNode, int keyLen, Node** nodeForUpdating): # <<<<<<<<<<<<<< * """ * Either return the element which is associated with the specified key, or */ static int __pyx_f_9assembler_NodeDict_FindOrInsert(__pyx_t_9assembler_NodeDict *__pyx_v_theDict, __pyx_t_9assembler_Node **__pyx_v_theNode, int __pyx_v_keyLen, __pyx_t_9assembler_Node **__pyx_v_nodeForUpdating) { int __pyx_v_hashValue; int __pyx_v_bucketSize; int __pyx_v_i; int __pyx_v_initialBucketSize; __pyx_t_9assembler_Node *__pyx_v_testNode; __pyx_t_9assembler_Node *__pyx_v_newNode; int __pyx_v_oldBucketSize; int __pyx_v_newBucketSize; __pyx_t_9assembler_Node **__pyx_v_temp; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("NodeDict_FindOrInsert", 0); /* "assembler.pyx":674 * and 1 if it was. * """ * cdef int hashValue = hashKmer(theNode[0].sequence, keyLen) % theDict.nBuckets # <<<<<<<<<<<<<< * cdef int bucketSize = 0 * cdef int i = 0 */ __pyx_v_hashValue = (__pyx_f_9assembler_hashKmer((__pyx_v_theNode[0])->sequence, __pyx_v_keyLen) % __pyx_v_theDict->nBuckets); /* "assembler.pyx":675 * """ * cdef int hashValue = hashKmer(theNode[0].sequence, keyLen) % theDict.nBuckets * cdef int bucketSize = 0 # <<<<<<<<<<<<<< * cdef int i = 0 * cdef int initialBucketSize = 5 */ __pyx_v_bucketSize = 0; /* "assembler.pyx":676 * cdef int hashValue = hashKmer(theNode[0].sequence, keyLen) % theDict.nBuckets * cdef int bucketSize = 0 * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int initialBucketSize = 5 * cdef Node* testNode = NULL */ __pyx_v_i = 0; /* "assembler.pyx":677 * cdef int bucketSize = 0 * cdef int i = 0 * cdef int initialBucketSize = 5 # <<<<<<<<<<<<<< * cdef Node* testNode = NULL * cdef Node* newNode = NULL */ __pyx_v_initialBucketSize = 5; /* "assembler.pyx":678 * cdef int i = 0 * cdef int initialBucketSize = 5 * cdef Node* testNode = NULL # <<<<<<<<<<<<<< * cdef Node* newNode = NULL * */ __pyx_v_testNode = NULL; /* "assembler.pyx":679 * cdef int initialBucketSize = 5 * cdef Node* testNode = NULL * cdef Node* newNode = NULL # <<<<<<<<<<<<<< * * # Need to allocate new bucket */ __pyx_v_newNode = NULL; /* "assembler.pyx":682 * * # Need to allocate new bucket * if theDict.buckets[hashValue] == NULL: # <<<<<<<<<<<<<< * theDict.buckets[hashValue] = (malloc(initialBucketSize*sizeof(Node*))) * */ __pyx_t_1 = ((__pyx_v_theDict->buckets[__pyx_v_hashValue]) == NULL); if (__pyx_t_1) { /* "assembler.pyx":683 * # Need to allocate new bucket * if theDict.buckets[hashValue] == NULL: * theDict.buckets[hashValue] = (malloc(initialBucketSize*sizeof(Node*))) # <<<<<<<<<<<<<< * * if theDict.buckets[hashValue] == NULL: */ (__pyx_v_theDict->buckets[__pyx_v_hashValue]) = ((__pyx_t_9assembler_Node **)malloc((__pyx_v_initialBucketSize * (sizeof(__pyx_t_9assembler_Node *))))); /* "assembler.pyx":685 * theDict.buckets[hashValue] = (malloc(initialBucketSize*sizeof(Node*))) * * if theDict.buckets[hashValue] == NULL: # <<<<<<<<<<<<<< * logger.error("Could not allocate hash table bucket with size %s" %(initialBucketSize)) * */ __pyx_t_1 = ((__pyx_v_theDict->buckets[__pyx_v_hashValue]) == NULL); if (__pyx_t_1) { /* "assembler.pyx":686 * * if theDict.buckets[hashValue] == NULL: * logger.error("Could not allocate hash table bucket with size %s" %(initialBucketSize)) # <<<<<<<<<<<<<< * * # Always set to NULL first */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_initialBucketSize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_27), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4; } __pyx_L4:; /* "assembler.pyx":689 * * # Always set to NULL first * for i in range(initialBucketSize): # <<<<<<<<<<<<<< * theDict.buckets[hashValue][i] = NULL * */ __pyx_t_5 = __pyx_v_initialBucketSize; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "assembler.pyx":690 * # Always set to NULL first * for i in range(initialBucketSize): * theDict.buckets[hashValue][i] = NULL # <<<<<<<<<<<<<< * * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) */ ((__pyx_v_theDict->buckets[__pyx_v_hashValue])[__pyx_v_i]) = NULL; } /* "assembler.pyx":692 * theDict.buckets[hashValue][i] = NULL * * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) # <<<<<<<<<<<<<< * theDict.buckets[hashValue][0] = newNode * theDict.bucketSize[hashValue] = initialBucketSize */ __pyx_v_newNode = __pyx_f_9assembler_createNode((__pyx_v_theNode[0])->sequence, (__pyx_v_theNode[0])->colours, (__pyx_v_theNode[0])->position, (__pyx_v_theNode[0])->kmerSize, (__pyx_v_theNode[0])->weight); /* "assembler.pyx":693 * * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) * theDict.buckets[hashValue][0] = newNode # <<<<<<<<<<<<<< * theDict.bucketSize[hashValue] = initialBucketSize * theNode[0] = newNode */ ((__pyx_v_theDict->buckets[__pyx_v_hashValue])[0]) = __pyx_v_newNode; /* "assembler.pyx":694 * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) * theDict.buckets[hashValue][0] = newNode * theDict.bucketSize[hashValue] = initialBucketSize # <<<<<<<<<<<<<< * theNode[0] = newNode * return 0 */ (__pyx_v_theDict->bucketSize[__pyx_v_hashValue]) = __pyx_v_initialBucketSize; /* "assembler.pyx":695 * theDict.buckets[hashValue][0] = newNode * theDict.bucketSize[hashValue] = initialBucketSize * theNode[0] = newNode # <<<<<<<<<<<<<< * return 0 * */ (__pyx_v_theNode[0]) = __pyx_v_newNode; /* "assembler.pyx":696 * theDict.bucketSize[hashValue] = initialBucketSize * theNode[0] = newNode * return 0 # <<<<<<<<<<<<<< * * # Bucket is there. Check all elements in bucket for match. */ __pyx_r = 0; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":700 * # Bucket is there. Check all elements in bucket for match. * else: * bucketSize = theDict.bucketSize[hashValue] # <<<<<<<<<<<<<< * * for i in range(bucketSize): */ __pyx_v_bucketSize = (__pyx_v_theDict->bucketSize[__pyx_v_hashValue]); /* "assembler.pyx":702 * bucketSize = theDict.bucketSize[hashValue] * * for i in range(bucketSize): # <<<<<<<<<<<<<< * * # Found empty slot. Insert new element */ __pyx_t_5 = __pyx_v_bucketSize; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "assembler.pyx":705 * * # Found empty slot. Insert new element * if theDict.buckets[hashValue][i] == NULL: # <<<<<<<<<<<<<< * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) * theDict.buckets[hashValue][i] = newNode */ __pyx_t_1 = (((__pyx_v_theDict->buckets[__pyx_v_hashValue])[__pyx_v_i]) == NULL); if (__pyx_t_1) { /* "assembler.pyx":706 * # Found empty slot. Insert new element * if theDict.buckets[hashValue][i] == NULL: * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) # <<<<<<<<<<<<<< * theDict.buckets[hashValue][i] = newNode * theNode[0] = newNode */ __pyx_v_newNode = __pyx_f_9assembler_createNode((__pyx_v_theNode[0])->sequence, (__pyx_v_theNode[0])->colours, (__pyx_v_theNode[0])->position, (__pyx_v_theNode[0])->kmerSize, (__pyx_v_theNode[0])->weight); /* "assembler.pyx":707 * if theDict.buckets[hashValue][i] == NULL: * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) * theDict.buckets[hashValue][i] = newNode # <<<<<<<<<<<<<< * theNode[0] = newNode * return 0 */ ((__pyx_v_theDict->buckets[__pyx_v_hashValue])[__pyx_v_i]) = __pyx_v_newNode; /* "assembler.pyx":708 * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) * theDict.buckets[hashValue][i] = newNode * theNode[0] = newNode # <<<<<<<<<<<<<< * return 0 * */ (__pyx_v_theNode[0]) = __pyx_v_newNode; /* "assembler.pyx":709 * theDict.buckets[hashValue][i] = newNode * theNode[0] = newNode * return 0 # <<<<<<<<<<<<<< * * # Check for match */ __pyx_r = 0; goto __pyx_L0; goto __pyx_L9; } /*else*/ { /* "assembler.pyx":714 * else: * # Match. Return this element. * testNode = theDict.buckets[hashValue][i] # <<<<<<<<<<<<<< * if theNode[0] == testNode or strncmp(theNode[0].sequence, testNode.sequence, keyLen) == 0: * nodeForUpdating[0] = testNode */ __pyx_v_testNode = ((__pyx_v_theDict->buckets[__pyx_v_hashValue])[__pyx_v_i]); /* "assembler.pyx":715 * # Match. Return this element. * testNode = theDict.buckets[hashValue][i] * if theNode[0] == testNode or strncmp(theNode[0].sequence, testNode.sequence, keyLen) == 0: # <<<<<<<<<<<<<< * nodeForUpdating[0] = testNode * return 1 */ __pyx_t_1 = ((__pyx_v_theNode[0]) == __pyx_v_testNode); if (!__pyx_t_1) { __pyx_t_7 = (strncmp((__pyx_v_theNode[0])->sequence, __pyx_v_testNode->sequence, __pyx_v_keyLen) == 0); __pyx_t_8 = __pyx_t_7; } else { __pyx_t_8 = __pyx_t_1; } if (__pyx_t_8) { /* "assembler.pyx":716 * testNode = theDict.buckets[hashValue][i] * if theNode[0] == testNode or strncmp(theNode[0].sequence, testNode.sequence, keyLen) == 0: * nodeForUpdating[0] = testNode # <<<<<<<<<<<<<< * return 1 * */ (__pyx_v_nodeForUpdating[0]) = __pyx_v_testNode; /* "assembler.pyx":717 * if theNode[0] == testNode or strncmp(theNode[0].sequence, testNode.sequence, keyLen) == 0: * nodeForUpdating[0] = testNode * return 1 # <<<<<<<<<<<<<< * * # If we get here, then we found no empty slots, and no matches. So we need to */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L10; } __pyx_L10:; } __pyx_L9:; } } __pyx_L3:; /* "assembler.pyx":722 * # allocate more space in the relevant bucket and then insert the key/value pair * # in the next available space.. * cdef int oldBucketSize = theDict.bucketSize[hashValue] # <<<<<<<<<<<<<< * cdef int newBucketSize = 2*oldBucketSize * cdef Node** temp = (realloc(theDict.buckets[hashValue], sizeof(Node*)*newBucketSize)) */ __pyx_v_oldBucketSize = (__pyx_v_theDict->bucketSize[__pyx_v_hashValue]); /* "assembler.pyx":723 * # in the next available space.. * cdef int oldBucketSize = theDict.bucketSize[hashValue] * cdef int newBucketSize = 2*oldBucketSize # <<<<<<<<<<<<<< * cdef Node** temp = (realloc(theDict.buckets[hashValue], sizeof(Node*)*newBucketSize)) * */ __pyx_v_newBucketSize = (2 * __pyx_v_oldBucketSize); /* "assembler.pyx":724 * cdef int oldBucketSize = theDict.bucketSize[hashValue] * cdef int newBucketSize = 2*oldBucketSize * cdef Node** temp = (realloc(theDict.buckets[hashValue], sizeof(Node*)*newBucketSize)) # <<<<<<<<<<<<<< * * if temp == NULL: */ __pyx_v_temp = ((__pyx_t_9assembler_Node **)realloc((__pyx_v_theDict->buckets[__pyx_v_hashValue]), ((sizeof(__pyx_t_9assembler_Node *)) * __pyx_v_newBucketSize))); /* "assembler.pyx":726 * cdef Node** temp = (realloc(theDict.buckets[hashValue], sizeof(Node*)*newBucketSize)) * * if temp == NULL: # <<<<<<<<<<<<<< * raise StandardError, "Could not re-allocate bucket" * else: */ __pyx_t_8 = (__pyx_v_temp == NULL); if (__pyx_t_8) { /* "assembler.pyx":727 * * if temp == NULL: * raise StandardError, "Could not re-allocate bucket" # <<<<<<<<<<<<<< * else: * # Set new entries to NULL */ __Pyx_Raise(__pyx_builtin_StandardError, ((PyObject *)__pyx_kp_s_28), 0, 0); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L11; } /*else*/ { /* "assembler.pyx":730 * else: * # Set new entries to NULL * for i in range(oldBucketSize, newBucketSize): # <<<<<<<<<<<<<< * temp[i] = NULL * */ __pyx_t_5 = __pyx_v_newBucketSize; for (__pyx_t_6 = __pyx_v_oldBucketSize; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "assembler.pyx":731 * # Set new entries to NULL * for i in range(oldBucketSize, newBucketSize): * temp[i] = NULL # <<<<<<<<<<<<<< * * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) */ (__pyx_v_temp[__pyx_v_i]) = NULL; } /* "assembler.pyx":733 * temp[i] = NULL * * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) # <<<<<<<<<<<<<< * theDict.bucketSize[hashValue] = newBucketSize * theDict.buckets[hashValue] = temp */ __pyx_v_newNode = __pyx_f_9assembler_createNode((__pyx_v_theNode[0])->sequence, (__pyx_v_theNode[0])->colours, (__pyx_v_theNode[0])->position, (__pyx_v_theNode[0])->kmerSize, (__pyx_v_theNode[0])->weight); /* "assembler.pyx":734 * * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) * theDict.bucketSize[hashValue] = newBucketSize # <<<<<<<<<<<<<< * theDict.buckets[hashValue] = temp * theDict.buckets[hashValue][oldBucketSize] = newNode */ (__pyx_v_theDict->bucketSize[__pyx_v_hashValue]) = __pyx_v_newBucketSize; /* "assembler.pyx":735 * newNode = createNode(theNode[0].sequence, theNode[0].colours, theNode[0].position, theNode[0].kmerSize, theNode[0].weight) * theDict.bucketSize[hashValue] = newBucketSize * theDict.buckets[hashValue] = temp # <<<<<<<<<<<<<< * theDict.buckets[hashValue][oldBucketSize] = newNode * theNode[0] = newNode */ (__pyx_v_theDict->buckets[__pyx_v_hashValue]) = __pyx_v_temp; /* "assembler.pyx":736 * theDict.bucketSize[hashValue] = newBucketSize * theDict.buckets[hashValue] = temp * theDict.buckets[hashValue][oldBucketSize] = newNode # <<<<<<<<<<<<<< * theNode[0] = newNode * */ ((__pyx_v_theDict->buckets[__pyx_v_hashValue])[__pyx_v_oldBucketSize]) = __pyx_v_newNode; /* "assembler.pyx":737 * theDict.buckets[hashValue] = temp * theDict.buckets[hashValue][oldBucketSize] = newNode * theNode[0] = newNode # <<<<<<<<<<<<<< * * return 0 */ (__pyx_v_theNode[0]) = __pyx_v_newNode; } __pyx_L11:; /* "assembler.pyx":739 * theNode[0] = newNode * * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("assembler.NodeDict_FindOrInsert", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":743 * ################################################################################################### * * cdef DeBruijnGraph* createDeBruijnGraph(int kmerSize, int nBuckets): # <<<<<<<<<<<<<< * """ * Allocate memory for graph data. */ static __pyx_t_9assembler_DeBruijnGraph *__pyx_f_9assembler_createDeBruijnGraph(int __pyx_v_kmerSize, int __pyx_v_nBuckets) { __pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph; __pyx_t_9assembler_DeBruijnGraph *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createDeBruijnGraph", 0); /* "assembler.pyx":747 * Allocate memory for graph data. * """ * cdef DeBruijnGraph* theGraph = (malloc(sizeof(DeBruijnGraph))) # <<<<<<<<<<<<<< * * if theGraph == NULL: */ __pyx_v_theGraph = ((__pyx_t_9assembler_DeBruijnGraph *)malloc((sizeof(__pyx_t_9assembler_DeBruijnGraph)))); /* "assembler.pyx":749 * cdef DeBruijnGraph* theGraph = (malloc(sizeof(DeBruijnGraph))) * * if theGraph == NULL: # <<<<<<<<<<<<<< * logger.error("Could not allocate memory for DeBruijnGraph") * */ __pyx_t_1 = (__pyx_v_theGraph == NULL); if (__pyx_t_1) { /* "assembler.pyx":750 * * if theGraph == NULL: * logger.error("Could not allocate memory for DeBruijnGraph") # <<<<<<<<<<<<<< * * theGraph.kmerSize = kmerSize */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_30), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":752 * logger.error("Could not allocate memory for DeBruijnGraph") * * theGraph.kmerSize = kmerSize # <<<<<<<<<<<<<< * theGraph.allNodes = createNodeStack(nBuckets) * theGraph.nodes = createNodeDict(nBuckets) */ __pyx_v_theGraph->kmerSize = __pyx_v_kmerSize; /* "assembler.pyx":753 * * theGraph.kmerSize = kmerSize * theGraph.allNodes = createNodeStack(nBuckets) # <<<<<<<<<<<<<< * theGraph.nodes = createNodeDict(nBuckets) * */ __pyx_v_theGraph->allNodes = __pyx_f_9assembler_createNodeStack(__pyx_v_nBuckets); /* "assembler.pyx":754 * theGraph.kmerSize = kmerSize * theGraph.allNodes = createNodeStack(nBuckets) * theGraph.nodes = createNodeDict(nBuckets) # <<<<<<<<<<<<<< * * return theGraph */ __pyx_v_theGraph->nodes = __pyx_f_9assembler_createNodeDict(__pyx_v_nBuckets); /* "assembler.pyx":756 * theGraph.nodes = createNodeDict(nBuckets) * * return theGraph # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theGraph; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("assembler.createDeBruijnGraph", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":760 * ################################################################################################### * * cdef void destroyDeBruijnGraph(DeBruijnGraph* theGraph): # <<<<<<<<<<<<<< * """ * Free memory used by graph. */ static void __pyx_f_9assembler_destroyDeBruijnGraph(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph) { int __pyx_v_i; __Pyx_RefNannyDeclarations long __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("destroyDeBruijnGraph", 0); /* "assembler.pyx":764 * Free memory used by graph. * """ * cdef int i = 0 # <<<<<<<<<<<<<< * * # Destroy all nodes */ __pyx_v_i = 0; /* "assembler.pyx":767 * * # Destroy all nodes * for i in range(theGraph.allNodes.top + 1): # <<<<<<<<<<<<<< * destroyNode(theGraph.allNodes.elements[i]) * */ __pyx_t_1 = (__pyx_v_theGraph->allNodes->top + 1); for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":768 * # Destroy all nodes * for i in range(theGraph.allNodes.top + 1): * destroyNode(theGraph.allNodes.elements[i]) # <<<<<<<<<<<<<< * * # These only hold pointers to memory which will be */ __pyx_f_9assembler_destroyNode((__pyx_v_theGraph->allNodes->elements[__pyx_v_i])); } /* "assembler.pyx":772 * # These only hold pointers to memory which will be * # freed elsewhere. * destroyNodeStack(theGraph.allNodes) # <<<<<<<<<<<<<< * destroyNodeDict(theGraph.nodes) * free(theGraph) */ __pyx_f_9assembler_destroyNodeStack(__pyx_v_theGraph->allNodes); /* "assembler.pyx":773 * # freed elsewhere. * destroyNodeStack(theGraph.allNodes) * destroyNodeDict(theGraph.nodes) # <<<<<<<<<<<<<< * free(theGraph) * */ __pyx_f_9assembler_destroyNodeDict(__pyx_v_theGraph->nodes); /* "assembler.pyx":774 * destroyNodeStack(theGraph.allNodes) * destroyNodeDict(theGraph.nodes) * free(theGraph) # <<<<<<<<<<<<<< * * ################################################################################################### */ free(__pyx_v_theGraph); __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":778 * ################################################################################################### * * cdef int DeBruijnGraph_InsertOrUpdateNode(DeBruijnGraph* theGraph, Node** theNode): # <<<<<<<<<<<<<< * """ * Check if a node is already present. If it is, update it, otherwise */ static int __pyx_f_9assembler_DeBruijnGraph_InsertOrUpdateNode(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, __pyx_t_9assembler_Node **__pyx_v_theNode) { __pyx_t_9assembler_Node *__pyx_v_nodeForUpdating; int __pyx_v_foundNode; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("DeBruijnGraph_InsertOrUpdateNode", 0); /* "assembler.pyx":783 * insert it. Return 1 if the node was inserted and 0 if it was updated. * """ * cdef Node* nodeForUpdating = NULL # <<<<<<<<<<<<<< * cdef int foundNode = NodeDict_FindOrInsert(theGraph.nodes, theNode, theGraph.kmerSize, &nodeForUpdating) * */ __pyx_v_nodeForUpdating = NULL; /* "assembler.pyx":784 * """ * cdef Node* nodeForUpdating = NULL * cdef int foundNode = NodeDict_FindOrInsert(theGraph.nodes, theNode, theGraph.kmerSize, &nodeForUpdating) # <<<<<<<<<<<<<< * * # Need to create a new node, copying values from theNode */ __pyx_v_foundNode = __pyx_f_9assembler_NodeDict_FindOrInsert(__pyx_v_theGraph->nodes, __pyx_v_theNode, __pyx_v_theGraph->kmerSize, (&__pyx_v_nodeForUpdating)); /* "assembler.pyx":787 * * # Need to create a new node, copying values from theNode * if not foundNode: # <<<<<<<<<<<<<< * NodeStack_Push(theGraph.allNodes, theNode[0]) * return 1 */ __pyx_t_1 = (!__pyx_v_foundNode); if (__pyx_t_1) { /* "assembler.pyx":788 * # Need to create a new node, copying values from theNode * if not foundNode: * NodeStack_Push(theGraph.allNodes, theNode[0]) # <<<<<<<<<<<<<< * return 1 * */ __pyx_f_9assembler_NodeStack_Push(__pyx_v_theGraph->allNodes, (__pyx_v_theNode[0])); /* "assembler.pyx":789 * if not foundNode: * NodeStack_Push(theGraph.allNodes, theNode[0]) * return 1 # <<<<<<<<<<<<<< * * # Update existing node */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":794 * else: * # Update colours of nodes already in graph. * nodeForUpdating.colours |= theNode[0].colours # <<<<<<<<<<<<<< * nodeForUpdating.weight += theNode[0].weight * theNode[0] = nodeForUpdating */ __pyx_v_nodeForUpdating->colours = (__pyx_v_nodeForUpdating->colours | (__pyx_v_theNode[0])->colours); /* "assembler.pyx":795 * # Update colours of nodes already in graph. * nodeForUpdating.colours |= theNode[0].colours * nodeForUpdating.weight += theNode[0].weight # <<<<<<<<<<<<<< * theNode[0] = nodeForUpdating * return 0 */ __pyx_v_nodeForUpdating->weight = (__pyx_v_nodeForUpdating->weight + (__pyx_v_theNode[0])->weight); /* "assembler.pyx":796 * nodeForUpdating.colours |= theNode[0].colours * nodeForUpdating.weight += theNode[0].weight * theNode[0] = nodeForUpdating # <<<<<<<<<<<<<< * return 0 * */ (__pyx_v_theNode[0]) = __pyx_v_nodeForUpdating; /* "assembler.pyx":797 * nodeForUpdating.weight += theNode[0].weight * theNode[0] = nodeForUpdating * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; } __pyx_L3:; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":801 * ################################################################################################### * * cdef void DeBruijnGraph_AddEdge(DeBruijnGraph* theGraph, Node* startNode, Node* endNode, double weight): # <<<<<<<<<<<<<< * """ * """ */ static void __pyx_f_9assembler_DeBruijnGraph_AddEdge(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, __pyx_t_9assembler_Node *__pyx_v_startNode, __pyx_t_9assembler_Node *__pyx_v_endNode, double __pyx_v_weight) { CYTHON_UNUSED double __pyx_v_oldWeight; CYTHON_UNUSED int __pyx_v_startNodeWasInserted; CYTHON_UNUSED int __pyx_v_endNodeWasInserted; __pyx_t_9assembler_Edge *__pyx_v_newEdge; int __pyx_v_i; __Pyx_RefNannyDeclarations double __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("DeBruijnGraph_AddEdge", 0); /* "assembler.pyx":804 * """ * """ * cdef double oldWeight = startNode.weight # <<<<<<<<<<<<<< * cdef int startNodeWasInserted = DeBruijnGraph_InsertOrUpdateNode(theGraph, &startNode) * cdef int endNodeWasInserted = DeBruijnGraph_InsertOrUpdateNode(theGraph, &endNode) */ __pyx_t_1 = __pyx_v_startNode->weight; __pyx_v_oldWeight = __pyx_t_1; /* "assembler.pyx":805 * """ * cdef double oldWeight = startNode.weight * cdef int startNodeWasInserted = DeBruijnGraph_InsertOrUpdateNode(theGraph, &startNode) # <<<<<<<<<<<<<< * cdef int endNodeWasInserted = DeBruijnGraph_InsertOrUpdateNode(theGraph, &endNode) * cdef Edge* newEdge = NULL */ __pyx_v_startNodeWasInserted = __pyx_f_9assembler_DeBruijnGraph_InsertOrUpdateNode(__pyx_v_theGraph, (&__pyx_v_startNode)); /* "assembler.pyx":806 * cdef double oldWeight = startNode.weight * cdef int startNodeWasInserted = DeBruijnGraph_InsertOrUpdateNode(theGraph, &startNode) * cdef int endNodeWasInserted = DeBruijnGraph_InsertOrUpdateNode(theGraph, &endNode) # <<<<<<<<<<<<<< * cdef Edge* newEdge = NULL * */ __pyx_v_endNodeWasInserted = __pyx_f_9assembler_DeBruijnGraph_InsertOrUpdateNode(__pyx_v_theGraph, (&__pyx_v_endNode)); /* "assembler.pyx":807 * cdef int startNodeWasInserted = DeBruijnGraph_InsertOrUpdateNode(theGraph, &startNode) * cdef int endNodeWasInserted = DeBruijnGraph_InsertOrUpdateNode(theGraph, &endNode) * cdef Edge* newEdge = NULL # <<<<<<<<<<<<<< * * cdef int i = 0 */ __pyx_v_newEdge = NULL; /* "assembler.pyx":809 * cdef Edge* newEdge = NULL * * cdef int i = 0 # <<<<<<<<<<<<<< * * # Check all outgoing edges from startNode. If it has none, then make one for this edge. Otherwise, */ __pyx_v_i = 0; /* "assembler.pyx":813 * # Check all outgoing edges from startNode. If it has none, then make one for this edge. Otherwise, * # check all existing edges for a match, and update accordingly. * for i in range(4): # <<<<<<<<<<<<<< * if startNode.edges[i] == NULL: * newEdge = createEdge(startNode, endNode, weight) */ for (__pyx_t_2 = 0; __pyx_t_2 < 4; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":814 * # check all existing edges for a match, and update accordingly. * for i in range(4): * if startNode.edges[i] == NULL: # <<<<<<<<<<<<<< * newEdge = createEdge(startNode, endNode, weight) * Node_AddEdge(startNode, newEdge) */ __pyx_t_3 = ((__pyx_v_startNode->edges[__pyx_v_i]) == NULL); if (__pyx_t_3) { /* "assembler.pyx":815 * for i in range(4): * if startNode.edges[i] == NULL: * newEdge = createEdge(startNode, endNode, weight) # <<<<<<<<<<<<<< * Node_AddEdge(startNode, newEdge) * break */ __pyx_v_newEdge = __pyx_f_9assembler_createEdge(__pyx_v_startNode, __pyx_v_endNode, __pyx_v_weight); /* "assembler.pyx":816 * if startNode.edges[i] == NULL: * newEdge = createEdge(startNode, endNode, weight) * Node_AddEdge(startNode, newEdge) # <<<<<<<<<<<<<< * break * elif startNode.edges[i].endNode == endNode: */ __pyx_f_9assembler_Node_AddEdge(__pyx_v_startNode, __pyx_v_newEdge); /* "assembler.pyx":817 * newEdge = createEdge(startNode, endNode, weight) * Node_AddEdge(startNode, newEdge) * break # <<<<<<<<<<<<<< * elif startNode.edges[i].endNode == endNode: * startNode.edges[i].weight += weight */ goto __pyx_L4_break; goto __pyx_L5; } /* "assembler.pyx":818 * Node_AddEdge(startNode, newEdge) * break * elif startNode.edges[i].endNode == endNode: # <<<<<<<<<<<<<< * startNode.edges[i].weight += weight * break */ __pyx_t_3 = ((__pyx_v_startNode->edges[__pyx_v_i])->endNode == __pyx_v_endNode); if (__pyx_t_3) { /* "assembler.pyx":819 * break * elif startNode.edges[i].endNode == endNode: * startNode.edges[i].weight += weight # <<<<<<<<<<<<<< * break * else: */ __pyx_t_4 = __pyx_v_i; (__pyx_v_startNode->edges[__pyx_t_4])->weight = ((__pyx_v_startNode->edges[__pyx_t_4])->weight + __pyx_v_weight); /* "assembler.pyx":820 * elif startNode.edges[i].endNode == endNode: * startNode.edges[i].weight += weight * break # <<<<<<<<<<<<<< * else: * continue */ goto __pyx_L4_break; goto __pyx_L5; } /*else*/ { /* "assembler.pyx":822 * break * else: * continue # <<<<<<<<<<<<<< * else: * logger.error("Error in assembler. Could not find matching end-node for edge. Something is very wrong") */ goto __pyx_L3_continue; } __pyx_L5:; __pyx_L3_continue:; } /*else*/ { /* "assembler.pyx":824 * continue * else: * logger.error("Error in assembler. Could not find matching end-node for edge. Something is very wrong") # <<<<<<<<<<<<<< * raise StandardError, "Assembly Error!!" * */ __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__error); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_32), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "assembler.pyx":825 * else: * logger.error("Error in assembler. Could not find matching end-node for edge. Something is very wrong") * raise StandardError, "Assembly Error!!" # <<<<<<<<<<<<<< * * ################################################################################################### */ __Pyx_Raise(__pyx_builtin_StandardError, ((PyObject *)__pyx_kp_s_33), 0, 0); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L4_break:; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("assembler.DeBruijnGraph_AddEdge", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":829 * ################################################################################################### * * cdef int dfsVisit(Node* theNode, double minWeight): # <<<<<<<<<<<<<< * """ * """ */ static int __pyx_f_9assembler_dfsVisit(__pyx_t_9assembler_Node *__pyx_v_theNode, double __pyx_v_minWeight) { int __pyx_v_nEdges; int __pyx_v_i; __pyx_t_9assembler_Node *__pyx_v_nextNode; __pyx_t_9assembler_Edge *__pyx_v_edge; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; __pyx_t_9assembler_Node *__pyx_t_6; __Pyx_RefNannySetupContext("dfsVisit", 0); /* "assembler.pyx":832 * """ * """ * cdef int nEdges = theNode.nEdges # <<<<<<<<<<<<<< * cdef int i = 0 * cdef Node* nextNode = NULL */ __pyx_t_1 = __pyx_v_theNode->nEdges; __pyx_v_nEdges = __pyx_t_1; /* "assembler.pyx":833 * """ * cdef int nEdges = theNode.nEdges * cdef int i = 0 # <<<<<<<<<<<<<< * cdef Node* nextNode = NULL * cdef Edge* edge = NULL */ __pyx_v_i = 0; /* "assembler.pyx":834 * cdef int nEdges = theNode.nEdges * cdef int i = 0 * cdef Node* nextNode = NULL # <<<<<<<<<<<<<< * cdef Edge* edge = NULL * */ __pyx_v_nextNode = NULL; /* "assembler.pyx":835 * cdef int i = 0 * cdef Node* nextNode = NULL * cdef Edge* edge = NULL # <<<<<<<<<<<<<< * * theNode.dfsColour = 'g' */ __pyx_v_edge = NULL; /* "assembler.pyx":837 * cdef Edge* edge = NULL * * theNode.dfsColour = 'g' # <<<<<<<<<<<<<< * * for i in range(nEdges): */ __pyx_v_theNode->dfsColour = 'g'; /* "assembler.pyx":839 * theNode.dfsColour = 'g' * * for i in range(nEdges): # <<<<<<<<<<<<<< * edge = theNode.edges[i] * */ __pyx_t_1 = __pyx_v_nEdges; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":840 * * for i in range(nEdges): * edge = theNode.edges[i] # <<<<<<<<<<<<<< * * # Ignore low-weight edges that are only in reads */ __pyx_v_edge = (__pyx_v_theNode->edges[__pyx_v_i]); /* "assembler.pyx":843 * * # Ignore low-weight edges that are only in reads * if edge.endNode.colours == READ and edge.weight < minWeight: # <<<<<<<<<<<<<< * continue * */ __pyx_t_3 = (__pyx_v_edge->endNode->colours == __pyx_v_9assembler_READ); if (__pyx_t_3) { __pyx_t_4 = (__pyx_v_edge->weight < __pyx_v_minWeight); __pyx_t_5 = __pyx_t_4; } else { __pyx_t_5 = __pyx_t_3; } if (__pyx_t_5) { /* "assembler.pyx":844 * # Ignore low-weight edges that are only in reads * if edge.endNode.colours == READ and edge.weight < minWeight: * continue # <<<<<<<<<<<<<< * * nextNode = edge.endNode */ goto __pyx_L3_continue; goto __pyx_L5; } __pyx_L5:; /* "assembler.pyx":846 * continue * * nextNode = edge.endNode # <<<<<<<<<<<<<< * * if nextNode.dfsColour == 'w': */ __pyx_t_6 = __pyx_v_edge->endNode; __pyx_v_nextNode = __pyx_t_6; /* "assembler.pyx":848 * nextNode = edge.endNode * * if nextNode.dfsColour == 'w': # <<<<<<<<<<<<<< * * # Found cycle in this path */ __pyx_t_5 = (__pyx_v_nextNode->dfsColour == 'w'); if (__pyx_t_5) { /* "assembler.pyx":851 * * # Found cycle in this path * if dfsVisit(nextNode, minWeight) == 1: # <<<<<<<<<<<<<< * return 1 * # This path ok. Go to next edge */ __pyx_t_5 = (__pyx_f_9assembler_dfsVisit(__pyx_v_nextNode, __pyx_v_minWeight) == 1); if (__pyx_t_5) { /* "assembler.pyx":852 * # Found cycle in this path * if dfsVisit(nextNode, minWeight) == 1: * return 1 # <<<<<<<<<<<<<< * # This path ok. Go to next edge * else: */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L7; } /*else*/ { /* "assembler.pyx":855 * # This path ok. Go to next edge * else: * continue # <<<<<<<<<<<<<< * elif nextNode.dfsColour == 'g': * # Found cycle */ goto __pyx_L3_continue; } __pyx_L7:; goto __pyx_L6; } /* "assembler.pyx":856 * else: * continue * elif nextNode.dfsColour == 'g': # <<<<<<<<<<<<<< * # Found cycle * #logger.debug("Found cycle. From %s to %s" %(theNode.position, nextNode.position)) */ __pyx_t_5 = (__pyx_v_nextNode->dfsColour == 'g'); if (__pyx_t_5) { /* "assembler.pyx":859 * # Found cycle * #logger.debug("Found cycle. From %s to %s" %(theNode.position, nextNode.position)) * return 1 # <<<<<<<<<<<<<< * * # Black node. Already explored past this node. Go to next edge. */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L6; } /*else*/ { /* "assembler.pyx":863 * # Black node. Already explored past this node. Go to next edge. * else: * continue # <<<<<<<<<<<<<< * * # No cycles in any path reachable from this node. */ goto __pyx_L3_continue; } __pyx_L6:; __pyx_L3_continue:; } /* "assembler.pyx":866 * * # No cycles in any path reachable from this node. * theNode.dfsColour = 'b' # <<<<<<<<<<<<<< * return 0 * */ __pyx_v_theNode->dfsColour = 'b'; /* "assembler.pyx":867 * # No cycles in any path reachable from this node. * theNode.dfsColour = 'b' * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":871 * ################################################################################################### * * cdef int detectCyclesInGraph_Recursive(DeBruijnGraph* theGraph, double minWeight): # <<<<<<<<<<<<<< * """ * """ */ static int __pyx_f_9assembler_detectCyclesInGraph_Recursive(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, double __pyx_v_minWeight) { __pyx_t_9assembler_Node **__pyx_v_allNodes; __pyx_t_9assembler_Node *__pyx_v_thisNode; CYTHON_UNUSED __pyx_t_9assembler_Node *__pyx_v_nextNode; int __pyx_v_i; CYTHON_UNUSED int __pyx_v_j; int __pyx_v_nNodes; int __pyx_v_foundCycle; int __pyx_r; __Pyx_RefNannyDeclarations __pyx_t_9assembler_Node **__pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; __Pyx_RefNannySetupContext("detectCyclesInGraph_Recursive", 0); /* "assembler.pyx":874 * """ * """ * cdef Node** allNodes = theGraph.allNodes.elements # <<<<<<<<<<<<<< * cdef Node* thisNode = NULL * cdef Node* nextNode = NULL */ __pyx_t_1 = __pyx_v_theGraph->allNodes->elements; __pyx_v_allNodes = __pyx_t_1; /* "assembler.pyx":875 * """ * cdef Node** allNodes = theGraph.allNodes.elements * cdef Node* thisNode = NULL # <<<<<<<<<<<<<< * cdef Node* nextNode = NULL * cdef int i = 0 */ __pyx_v_thisNode = NULL; /* "assembler.pyx":876 * cdef Node** allNodes = theGraph.allNodes.elements * cdef Node* thisNode = NULL * cdef Node* nextNode = NULL # <<<<<<<<<<<<<< * cdef int i = 0 * cdef int j = 0 */ __pyx_v_nextNode = NULL; /* "assembler.pyx":877 * cdef Node* thisNode = NULL * cdef Node* nextNode = NULL * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int j = 0 * cdef int nNodes = theGraph.allNodes.top + 1 */ __pyx_v_i = 0; /* "assembler.pyx":878 * cdef Node* nextNode = NULL * cdef int i = 0 * cdef int j = 0 # <<<<<<<<<<<<<< * cdef int nNodes = theGraph.allNodes.top + 1 * cdef int foundCycle = 0 */ __pyx_v_j = 0; /* "assembler.pyx":879 * cdef int i = 0 * cdef int j = 0 * cdef int nNodes = theGraph.allNodes.top + 1 # <<<<<<<<<<<<<< * cdef int foundCycle = 0 * */ __pyx_v_nNodes = (__pyx_v_theGraph->allNodes->top + 1); /* "assembler.pyx":880 * cdef int j = 0 * cdef int nNodes = theGraph.allNodes.top + 1 * cdef int foundCycle = 0 # <<<<<<<<<<<<<< * * for i in range(nNodes): */ __pyx_v_foundCycle = 0; /* "assembler.pyx":882 * cdef int foundCycle = 0 * * for i in range(nNodes): # <<<<<<<<<<<<<< * thisNode = allNodes[i] * thisNode.dfsColour = 'w' */ __pyx_t_2 = __pyx_v_nNodes; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "assembler.pyx":883 * * for i in range(nNodes): * thisNode = allNodes[i] # <<<<<<<<<<<<<< * thisNode.dfsColour = 'w' * */ __pyx_v_thisNode = (__pyx_v_allNodes[__pyx_v_i]); /* "assembler.pyx":884 * for i in range(nNodes): * thisNode = allNodes[i] * thisNode.dfsColour = 'w' # <<<<<<<<<<<<<< * * for i in range(nNodes): */ __pyx_v_thisNode->dfsColour = 'w'; } /* "assembler.pyx":886 * thisNode.dfsColour = 'w' * * for i in range(nNodes): # <<<<<<<<<<<<<< * thisNode = allNodes[i] * */ __pyx_t_2 = __pyx_v_nNodes; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "assembler.pyx":887 * * for i in range(nNodes): * thisNode = allNodes[i] # <<<<<<<<<<<<<< * * if thisNode.dfsColour == 'w': */ __pyx_v_thisNode = (__pyx_v_allNodes[__pyx_v_i]); /* "assembler.pyx":889 * thisNode = allNodes[i] * * if thisNode.dfsColour == 'w': # <<<<<<<<<<<<<< * # Found cycle * foundCycle = dfsVisit(thisNode, minWeight) */ __pyx_t_4 = (__pyx_v_thisNode->dfsColour == 'w'); if (__pyx_t_4) { /* "assembler.pyx":891 * if thisNode.dfsColour == 'w': * # Found cycle * foundCycle = dfsVisit(thisNode, minWeight) # <<<<<<<<<<<<<< * * if foundCycle == 1: */ __pyx_v_foundCycle = __pyx_f_9assembler_dfsVisit(__pyx_v_thisNode, __pyx_v_minWeight); /* "assembler.pyx":893 * foundCycle = dfsVisit(thisNode, minWeight) * * if foundCycle == 1: # <<<<<<<<<<<<<< * return True * */ __pyx_t_4 = (__pyx_v_foundCycle == 1); if (__pyx_t_4) { /* "assembler.pyx":894 * * if foundCycle == 1: * return True # <<<<<<<<<<<<<< * * return False */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L8; } __pyx_L8:; goto __pyx_L7; } __pyx_L7:; } /* "assembler.pyx":896 * return True * * return False # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":900 * ################################################################################################### * * cdef int detectCyclesInGraph(DeBruijnGraph* theGraph, double minWeight): # <<<<<<<<<<<<<< * """ * """ */ static int __pyx_f_9assembler_detectCyclesInGraph(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, CYTHON_UNUSED double __pyx_v_minWeight) { __pyx_t_9assembler_Node *__pyx_v_thisNode; __pyx_t_9assembler_Node *__pyx_v_nextNode; __pyx_t_9assembler_Edge *__pyx_v_edge; int __pyx_v_i; int __pyx_v_j; int __pyx_v_nEdges; int __pyx_v_nNodes; __pyx_t_9assembler_Node **__pyx_v_allNodes; int __pyx_v_nFilledBuckets; int __pyx_v_nEntriesThisBucket; __pyx_t_9assembler_Node *__pyx_v_sourceNode; __pyx_t_9assembler_Node *__pyx_v_endNode; __pyx_t_9assembler_NodeStack *__pyx_v_theStack; CYTHON_UNUSED int __pyx_v_reachedEnd; int __pyx_r; __Pyx_RefNannyDeclarations __pyx_t_9assembler_Node **__pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; __pyx_t_9assembler_Node *__pyx_t_12; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("detectCyclesInGraph", 0); /* "assembler.pyx":906 * cdef Node* nextNode * cdef Edge* edge * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int j = 0 * cdef int nEdges = 0 */ __pyx_v_i = 0; /* "assembler.pyx":907 * cdef Edge* edge * cdef int i = 0 * cdef int j = 0 # <<<<<<<<<<<<<< * cdef int nEdges = 0 * cdef int nNodes = theGraph.allNodes.top + 1 */ __pyx_v_j = 0; /* "assembler.pyx":908 * cdef int i = 0 * cdef int j = 0 * cdef int nEdges = 0 # <<<<<<<<<<<<<< * cdef int nNodes = theGraph.allNodes.top + 1 * cdef Node** allNodes = theGraph.allNodes.elements */ __pyx_v_nEdges = 0; /* "assembler.pyx":909 * cdef int j = 0 * cdef int nEdges = 0 * cdef int nNodes = theGraph.allNodes.top + 1 # <<<<<<<<<<<<<< * cdef Node** allNodes = theGraph.allNodes.elements * */ __pyx_v_nNodes = (__pyx_v_theGraph->allNodes->top + 1); /* "assembler.pyx":910 * cdef int nEdges = 0 * cdef int nNodes = theGraph.allNodes.top + 1 * cdef Node** allNodes = theGraph.allNodes.elements # <<<<<<<<<<<<<< * * cdef int nFilledBuckets = 0 */ __pyx_t_1 = __pyx_v_theGraph->allNodes->elements; __pyx_v_allNodes = __pyx_t_1; /* "assembler.pyx":912 * cdef Node** allNodes = theGraph.allNodes.elements * * cdef int nFilledBuckets = 0 # <<<<<<<<<<<<<< * cdef int nEntriesThisBucket = 0 * */ __pyx_v_nFilledBuckets = 0; /* "assembler.pyx":913 * * cdef int nFilledBuckets = 0 * cdef int nEntriesThisBucket = 0 # <<<<<<<<<<<<<< * * for i in range(theGraph.nodes.nBuckets): */ __pyx_v_nEntriesThisBucket = 0; /* "assembler.pyx":915 * cdef int nEntriesThisBucket = 0 * * for i in range(theGraph.nodes.nBuckets): # <<<<<<<<<<<<<< * if theGraph.nodes.buckets[i] != NULL: * nFilledBuckets += 1 */ __pyx_t_2 = __pyx_v_theGraph->nodes->nBuckets; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "assembler.pyx":916 * * for i in range(theGraph.nodes.nBuckets): * if theGraph.nodes.buckets[i] != NULL: # <<<<<<<<<<<<<< * nFilledBuckets += 1 * for j in range(theGraph.nodes.bucketSize[i]): */ __pyx_t_4 = ((__pyx_v_theGraph->nodes->buckets[__pyx_v_i]) != NULL); if (__pyx_t_4) { /* "assembler.pyx":917 * for i in range(theGraph.nodes.nBuckets): * if theGraph.nodes.buckets[i] != NULL: * nFilledBuckets += 1 # <<<<<<<<<<<<<< * for j in range(theGraph.nodes.bucketSize[i]): * if theGraph.nodes.buckets[i][j] != NULL: */ __pyx_v_nFilledBuckets = (__pyx_v_nFilledBuckets + 1); /* "assembler.pyx":918 * if theGraph.nodes.buckets[i] != NULL: * nFilledBuckets += 1 * for j in range(theGraph.nodes.bucketSize[i]): # <<<<<<<<<<<<<< * if theGraph.nodes.buckets[i][j] != NULL: * nEntriesThisBucket += 1 */ __pyx_t_5 = (__pyx_v_theGraph->nodes->bucketSize[__pyx_v_i]); for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_j = __pyx_t_6; /* "assembler.pyx":919 * nFilledBuckets += 1 * for j in range(theGraph.nodes.bucketSize[i]): * if theGraph.nodes.buckets[i][j] != NULL: # <<<<<<<<<<<<<< * nEntriesThisBucket += 1 * else: */ __pyx_t_4 = (((__pyx_v_theGraph->nodes->buckets[__pyx_v_i])[__pyx_v_j]) != NULL); if (__pyx_t_4) { /* "assembler.pyx":920 * for j in range(theGraph.nodes.bucketSize[i]): * if theGraph.nodes.buckets[i][j] != NULL: * nEntriesThisBucket += 1 # <<<<<<<<<<<<<< * else: * break */ __pyx_v_nEntriesThisBucket = (__pyx_v_nEntriesThisBucket + 1); goto __pyx_L8; } /*else*/ { /* "assembler.pyx":922 * nEntriesThisBucket += 1 * else: * break # <<<<<<<<<<<<<< * * logger.debug("nNodes = %s. nFilledBuckets = %s. mean entries/bucket = %s" %(nNodes, nFilledBuckets, float(nEntriesThisBucket)/nFilledBuckets)) */ goto __pyx_L7_break; } __pyx_L8:; } __pyx_L7_break:; goto __pyx_L5; } __pyx_L5:; } /* "assembler.pyx":924 * break * * logger.debug("nNodes = %s. nFilledBuckets = %s. mean entries/bucket = %s" %(nNodes, nFilledBuckets, float(nEntriesThisBucket)/nFilledBuckets)) # <<<<<<<<<<<<<< * qsort(allNodes, nNodes, sizeof(Node*), nodePosComp) * */ __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__debug); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromLong(__pyx_v_nNodes); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = PyInt_FromLong(__pyx_v_nFilledBuckets); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyFloat_FromDouble((((double)__pyx_v_nEntriesThisBucket) / ((double)__pyx_v_nFilledBuckets))); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_7 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_34), ((PyObject *)__pyx_t_11)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_10)); __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_t_10)); __Pyx_GIVEREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; __pyx_t_10 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; /* "assembler.pyx":925 * * logger.debug("nNodes = %s. nFilledBuckets = %s. mean entries/bucket = %s" %(nNodes, nFilledBuckets, float(nEntriesThisBucket)/nFilledBuckets)) * qsort(allNodes, nNodes, sizeof(Node*), nodePosComp) # <<<<<<<<<<<<<< * * for i in range(nNodes): */ qsort(__pyx_v_allNodes, __pyx_v_nNodes, (sizeof(__pyx_t_9assembler_Node *)), __pyx_f_9assembler_nodePosComp); /* "assembler.pyx":927 * qsort(allNodes, nNodes, sizeof(Node*), nodePosComp) * * for i in range(nNodes): # <<<<<<<<<<<<<< * thisNode = allNodes[i] * thisNode.dfsColour = 'w' */ __pyx_t_2 = __pyx_v_nNodes; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "assembler.pyx":928 * * for i in range(nNodes): * thisNode = allNodes[i] # <<<<<<<<<<<<<< * thisNode.dfsColour = 'w' * */ __pyx_v_thisNode = (__pyx_v_allNodes[__pyx_v_i]); /* "assembler.pyx":929 * for i in range(nNodes): * thisNode = allNodes[i] * thisNode.dfsColour = 'w' # <<<<<<<<<<<<<< * * cdef Node* sourceNode = allNodes[0] */ __pyx_v_thisNode->dfsColour = 'w'; } /* "assembler.pyx":931 * thisNode.dfsColour = 'w' * * cdef Node* sourceNode = allNodes[0] # <<<<<<<<<<<<<< * cdef Node* endNode = allNodes[nNodes-1] * cdef NodeStack* theStack = createNodeStack(nNodes) */ __pyx_v_sourceNode = (__pyx_v_allNodes[0]); /* "assembler.pyx":932 * * cdef Node* sourceNode = allNodes[0] * cdef Node* endNode = allNodes[nNodes-1] # <<<<<<<<<<<<<< * cdef NodeStack* theStack = createNodeStack(nNodes) * cdef int reachedEnd = False */ __pyx_v_endNode = (__pyx_v_allNodes[(__pyx_v_nNodes - 1)]); /* "assembler.pyx":933 * cdef Node* sourceNode = allNodes[0] * cdef Node* endNode = allNodes[nNodes-1] * cdef NodeStack* theStack = createNodeStack(nNodes) # <<<<<<<<<<<<<< * cdef int reachedEnd = False * */ __pyx_v_theStack = __pyx_f_9assembler_createNodeStack(__pyx_v_nNodes); /* "assembler.pyx":934 * cdef Node* endNode = allNodes[nNodes-1] * cdef NodeStack* theStack = createNodeStack(nNodes) * cdef int reachedEnd = False # <<<<<<<<<<<<<< * * NodeStack_Push(theStack, sourceNode) */ __pyx_v_reachedEnd = 0; /* "assembler.pyx":936 * cdef int reachedEnd = False * * NodeStack_Push(theStack, sourceNode) # <<<<<<<<<<<<<< * * while not NodeStack_IsEmpty(theStack): */ __pyx_f_9assembler_NodeStack_Push(__pyx_v_theStack, __pyx_v_sourceNode); /* "assembler.pyx":938 * NodeStack_Push(theStack, sourceNode) * * while not NodeStack_IsEmpty(theStack): # <<<<<<<<<<<<<< * * thisNode = NodeStack_Pop(theStack) */ while (1) { __pyx_t_4 = (!__pyx_f_9assembler_NodeStack_IsEmpty(__pyx_v_theStack)); if (!__pyx_t_4) break; /* "assembler.pyx":940 * while not NodeStack_IsEmpty(theStack): * * thisNode = NodeStack_Pop(theStack) # <<<<<<<<<<<<<< * * if thisNode.dfsColour == 'w': */ __pyx_v_thisNode = __pyx_f_9assembler_NodeStack_Pop(__pyx_v_theStack); /* "assembler.pyx":942 * thisNode = NodeStack_Pop(theStack) * * if thisNode.dfsColour == 'w': # <<<<<<<<<<<<<< * thisNode.dfsColour = 'g' * elif thisNode.dfsColour == 'g': */ __pyx_t_4 = (__pyx_v_thisNode->dfsColour == 'w'); if (__pyx_t_4) { /* "assembler.pyx":943 * * if thisNode.dfsColour == 'w': * thisNode.dfsColour = 'g' # <<<<<<<<<<<<<< * elif thisNode.dfsColour == 'g': * thisNode.dfsColour == 'b' */ __pyx_v_thisNode->dfsColour = 'g'; goto __pyx_L13; } /* "assembler.pyx":944 * if thisNode.dfsColour == 'w': * thisNode.dfsColour = 'g' * elif thisNode.dfsColour == 'g': # <<<<<<<<<<<<<< * thisNode.dfsColour == 'b' * else: */ __pyx_t_4 = (__pyx_v_thisNode->dfsColour == 'g'); if (__pyx_t_4) { /* "assembler.pyx":945 * thisNode.dfsColour = 'g' * elif thisNode.dfsColour == 'g': * thisNode.dfsColour == 'b' # <<<<<<<<<<<<<< * else: * pass */ (__pyx_v_thisNode->dfsColour == 'b'); goto __pyx_L13; } /*else*/ { } __pyx_L13:; /* "assembler.pyx":950 * * * nEdges = thisNode.nEdges # <<<<<<<<<<<<<< * * for i in range(nEdges): */ __pyx_t_2 = __pyx_v_thisNode->nEdges; __pyx_v_nEdges = __pyx_t_2; /* "assembler.pyx":952 * nEdges = thisNode.nEdges * * for i in range(nEdges): # <<<<<<<<<<<<<< * edge = thisNode.edges[i] * nextNode = edge.endNode */ __pyx_t_2 = __pyx_v_nEdges; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "assembler.pyx":953 * * for i in range(nEdges): * edge = thisNode.edges[i] # <<<<<<<<<<<<<< * nextNode = edge.endNode * */ __pyx_v_edge = (__pyx_v_thisNode->edges[__pyx_v_i]); /* "assembler.pyx":954 * for i in range(nEdges): * edge = thisNode.edges[i] * nextNode = edge.endNode # <<<<<<<<<<<<<< * * # TODO: temp hack. Replace with Nodes_Equal later */ __pyx_t_12 = __pyx_v_edge->endNode; __pyx_v_nextNode = __pyx_t_12; /* "assembler.pyx":957 * * # TODO: temp hack. Replace with Nodes_Equal later * if Node_Equal(nextNode, endNode): # <<<<<<<<<<<<<< * reachedEnd = True * */ __pyx_t_5 = __pyx_f_9assembler_Node_Equal(__pyx_v_nextNode, __pyx_v_endNode); if (__pyx_t_5) { /* "assembler.pyx":958 * # TODO: temp hack. Replace with Nodes_Equal later * if Node_Equal(nextNode, endNode): * reachedEnd = True # <<<<<<<<<<<<<< * * if nextNode.dfsColour == 'w': */ __pyx_v_reachedEnd = 1; goto __pyx_L16; } __pyx_L16:; /* "assembler.pyx":960 * reachedEnd = True * * if nextNode.dfsColour == 'w': # <<<<<<<<<<<<<< * NodeStack_Push(theStack, nextNode) * */ __pyx_t_4 = (__pyx_v_nextNode->dfsColour == 'w'); if (__pyx_t_4) { /* "assembler.pyx":961 * * if nextNode.dfsColour == 'w': * NodeStack_Push(theStack, nextNode) # <<<<<<<<<<<<<< * * # Found a cycle */ __pyx_f_9assembler_NodeStack_Push(__pyx_v_theStack, __pyx_v_nextNode); goto __pyx_L17; } /* "assembler.pyx":964 * * # Found a cycle * elif nextNode.dfsColour == 'g': # <<<<<<<<<<<<<< * destroyNodeStack(theStack) * return True */ __pyx_t_4 = (__pyx_v_nextNode->dfsColour == 'g'); if (__pyx_t_4) { /* "assembler.pyx":965 * # Found a cycle * elif nextNode.dfsColour == 'g': * destroyNodeStack(theStack) # <<<<<<<<<<<<<< * return True * */ __pyx_f_9assembler_destroyNodeStack(__pyx_v_theStack); /* "assembler.pyx":966 * elif nextNode.dfsColour == 'g': * destroyNodeStack(theStack) * return True # <<<<<<<<<<<<<< * * else: */ __pyx_r = 1; goto __pyx_L0; goto __pyx_L17; } /*else*/ { } __pyx_L17:; } } /* "assembler.pyx":971 * pass * * destroyNodeStack(theStack) # <<<<<<<<<<<<<< * return False * */ __pyx_f_9assembler_destroyNodeStack(__pyx_v_theStack); /* "assembler.pyx":972 * * destroyNodeStack(theStack) * return False # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_WriteUnraisable("assembler.detectCyclesInGraph", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":976 * ################################################################################################### * * cdef char* createSequenceFromPath(Path* thePath): # <<<<<<<<<<<<<< * """ * Create and return a string representation of the sequence of a specific path */ static char *__pyx_f_9assembler_createSequenceFromPath(__pyx_t_9assembler_Path *__pyx_v_thePath) { int __pyx_v_nNodes; char *__pyx_v_theString; int __pyx_v_i; char *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("createSequenceFromPath", 0); /* "assembler.pyx":981 * through the graph. * """ * cdef int nNodes = thePath.nNodes # <<<<<<<<<<<<<< * cdef char* theString = (malloc( (nNodes+1)*sizeof(char))) * */ __pyx_t_1 = __pyx_v_thePath->nNodes; __pyx_v_nNodes = __pyx_t_1; /* "assembler.pyx":982 * """ * cdef int nNodes = thePath.nNodes * cdef char* theString = (malloc( (nNodes+1)*sizeof(char))) # <<<<<<<<<<<<<< * * if theString == NULL: */ __pyx_v_theString = ((char *)malloc(((__pyx_v_nNodes + 1) * (sizeof(char))))); /* "assembler.pyx":984 * cdef char* theString = (malloc( (nNodes+1)*sizeof(char))) * * if theString == NULL: # <<<<<<<<<<<<<< * logger.error("Could not allocate memory for string of size %s" %(nNodes+1)) * */ __pyx_t_2 = (__pyx_v_theString == NULL); if (__pyx_t_2) { /* "assembler.pyx":985 * * if theString == NULL: * logger.error("Could not allocate memory for string of size %s" %(nNodes+1)) # <<<<<<<<<<<<<< * * cdef int i = 0 */ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__error); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromLong((__pyx_v_nNodes + 1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_35), __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_5)); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_5)); __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":987 * logger.error("Could not allocate memory for string of size %s" %(nNodes+1)) * * cdef int i = 0 # <<<<<<<<<<<<<< * * for i in range(nNodes): */ __pyx_v_i = 0; /* "assembler.pyx":989 * cdef int i = 0 * * for i in range(nNodes): # <<<<<<<<<<<<<< * theString[i] = thePath.nodes.elements[i].sequence[0] * */ __pyx_t_1 = __pyx_v_nNodes; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_1; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "assembler.pyx":990 * * for i in range(nNodes): * theString[i] = thePath.nodes.elements[i].sequence[0] # <<<<<<<<<<<<<< * * theString[nNodes] = 0 */ (__pyx_v_theString[__pyx_v_i]) = ((__pyx_v_thePath->nodes->elements[__pyx_v_i])->sequence[0]); } /* "assembler.pyx":992 * theString[i] = thePath.nodes.elements[i].sequence[0] * * theString[nNodes] = 0 # <<<<<<<<<<<<<< * return theString * */ (__pyx_v_theString[__pyx_v_nNodes]) = 0; /* "assembler.pyx":993 * * theString[nNodes] = 0 * return theString # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_theString; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("assembler.createSequenceFromPath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":997 * ################################################################################################### * * cdef int checkPathForCycles(Path* thePath): # <<<<<<<<<<<<<< * """ * Check if this path contains a cycle. */ static int __pyx_f_9assembler_checkPathForCycles(__pyx_t_9assembler_Path *__pyx_v_thePath) { int __pyx_v_nNodes; int __pyx_v_i; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; __Pyx_RefNannySetupContext("checkPathForCycles", 0); /* "assembler.pyx":1001 * Check if this path contains a cycle. * """ * cdef int nNodes = thePath.nNodes # <<<<<<<<<<<<<< * cdef int i = 0 * */ __pyx_t_1 = __pyx_v_thePath->nNodes; __pyx_v_nNodes = __pyx_t_1; /* "assembler.pyx":1002 * """ * cdef int nNodes = thePath.nNodes * cdef int i = 0 # <<<<<<<<<<<<<< * * #logger.debug("Checking path with %s nodes for cycles" %(nNodes)) */ __pyx_v_i = 0; /* "assembler.pyx":1007 * * # Set all dfs colours to white * for i in range(nNodes): # <<<<<<<<<<<<<< * thePath.nodes.elements[i].dfsColour = 'w' * */ __pyx_t_1 = __pyx_v_nNodes; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":1008 * # Set all dfs colours to white * for i in range(nNodes): * thePath.nodes.elements[i].dfsColour = 'w' # <<<<<<<<<<<<<< * * # Check all nodes in order. If we see the same node twice, then */ (__pyx_v_thePath->nodes->elements[__pyx_v_i])->dfsColour = 'w'; } /* "assembler.pyx":1013 * # there is a cycle. If we get to the end without seeing any nodes twice, * # then no cycle. * for i in range(nNodes): # <<<<<<<<<<<<<< * if thePath.nodes.elements[i].dfsColour == 'w': * thePath.nodes.elements[i].dfsColour = 'g' */ __pyx_t_1 = __pyx_v_nNodes; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":1014 * # then no cycle. * for i in range(nNodes): * if thePath.nodes.elements[i].dfsColour == 'w': # <<<<<<<<<<<<<< * thePath.nodes.elements[i].dfsColour = 'g' * else: */ __pyx_t_3 = ((__pyx_v_thePath->nodes->elements[__pyx_v_i])->dfsColour == 'w'); if (__pyx_t_3) { /* "assembler.pyx":1015 * for i in range(nNodes): * if thePath.nodes.elements[i].dfsColour == 'w': * thePath.nodes.elements[i].dfsColour = 'g' # <<<<<<<<<<<<<< * else: * #logger.debug("Found cycle") */ (__pyx_v_thePath->nodes->elements[__pyx_v_i])->dfsColour = 'g'; goto __pyx_L7; } /*else*/ { /* "assembler.pyx":1018 * else: * #logger.debug("Found cycle") * return 1 # <<<<<<<<<<<<<< * * #logger.debug("No cycles") */ __pyx_r = 1; goto __pyx_L0; } __pyx_L7:; } /* "assembler.pyx":1021 * * #logger.debug("No cycles") * return 0 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = 0; goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":1025 * ################################################################################################### * * cdef PathStack* getVariantPathsThroughGraphFromNode(DeBruijnGraph* theGraph, Path* thePath, double minWeight): # <<<<<<<<<<<<<< * """ * Check all valid paths through the graph starting at the last node in "thePath". If any path */ static __pyx_t_9assembler_PathStack *__pyx_f_9assembler_getVariantPathsThroughGraphFromNode(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, __pyx_t_9assembler_Path *__pyx_v_thePath, double __pyx_v_minWeight) { __pyx_t_9assembler_PathStack *__pyx_v_thePathStack; __pyx_t_9assembler_PathStack *__pyx_v_finishedPaths; __pyx_t_9assembler_Path *__pyx_v_pathSoFar; __pyx_t_9assembler_Node *__pyx_v_endSoFar; __pyx_t_9assembler_Node *__pyx_v_newEnd; __pyx_t_9assembler_Edge *__pyx_v_theEdge; int __pyx_v_nEdgesThisNode; int __pyx_v_i; int __pyx_v_j; int __pyx_v_hasCycle; __pyx_t_9assembler_Path *__pyx_v_newPath; __pyx_t_9assembler_PathStack *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; __pyx_t_9assembler_Node *__pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; double __pyx_t_10; __Pyx_RefNannySetupContext("getVariantPathsThroughGraphFromNode", 0); /* "assembler.pyx":1031 * path never returns to the reference, but is sufficiently long, then add this to the list. * """ * cdef PathStack* thePathStack = createPathStack(10) # <<<<<<<<<<<<<< * cdef PathStack* finishedPaths = createPathStack(10) * cdef Path* pathSoFar = NULL */ __pyx_v_thePathStack = __pyx_f_9assembler_createPathStack(10); /* "assembler.pyx":1032 * """ * cdef PathStack* thePathStack = createPathStack(10) * cdef PathStack* finishedPaths = createPathStack(10) # <<<<<<<<<<<<<< * cdef Path* pathSoFar = NULL * cdef Node* endSoFar = NULL */ __pyx_v_finishedPaths = __pyx_f_9assembler_createPathStack(10); /* "assembler.pyx":1033 * cdef PathStack* thePathStack = createPathStack(10) * cdef PathStack* finishedPaths = createPathStack(10) * cdef Path* pathSoFar = NULL # <<<<<<<<<<<<<< * cdef Node* endSoFar = NULL * cdef Node* newEnd = NULL */ __pyx_v_pathSoFar = NULL; /* "assembler.pyx":1034 * cdef PathStack* finishedPaths = createPathStack(10) * cdef Path* pathSoFar = NULL * cdef Node* endSoFar = NULL # <<<<<<<<<<<<<< * cdef Node* newEnd = NULL * cdef Edge* theEdge = NULL */ __pyx_v_endSoFar = NULL; /* "assembler.pyx":1035 * cdef Path* pathSoFar = NULL * cdef Node* endSoFar = NULL * cdef Node* newEnd = NULL # <<<<<<<<<<<<<< * cdef Edge* theEdge = NULL * cdef int nEdgesThisNode = 0 */ __pyx_v_newEnd = NULL; /* "assembler.pyx":1036 * cdef Node* endSoFar = NULL * cdef Node* newEnd = NULL * cdef Edge* theEdge = NULL # <<<<<<<<<<<<<< * cdef int nEdgesThisNode = 0 * cdef int i = 0 */ __pyx_v_theEdge = NULL; /* "assembler.pyx":1037 * cdef Node* newEnd = NULL * cdef Edge* theEdge = NULL * cdef int nEdgesThisNode = 0 # <<<<<<<<<<<<<< * cdef int i = 0 * cdef int j = 0 */ __pyx_v_nEdgesThisNode = 0; /* "assembler.pyx":1038 * cdef Edge* theEdge = NULL * cdef int nEdgesThisNode = 0 * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int j = 0 * cdef int hasCycle = 0 */ __pyx_v_i = 0; /* "assembler.pyx":1039 * cdef int nEdgesThisNode = 0 * cdef int i = 0 * cdef int j = 0 # <<<<<<<<<<<<<< * cdef int hasCycle = 0 * */ __pyx_v_j = 0; /* "assembler.pyx":1040 * cdef int i = 0 * cdef int j = 0 * cdef int hasCycle = 0 # <<<<<<<<<<<<<< * * PathStack_Push(thePathStack, thePath) */ __pyx_v_hasCycle = 0; /* "assembler.pyx":1042 * cdef int hasCycle = 0 * * PathStack_Push(thePathStack, thePath) # <<<<<<<<<<<<<< * * while not PathStack_IsEmpty(thePathStack): */ __pyx_f_9assembler_PathStack_Push(__pyx_v_thePathStack, __pyx_v_thePath); /* "assembler.pyx":1044 * PathStack_Push(thePathStack, thePath) * * while not PathStack_IsEmpty(thePathStack): # <<<<<<<<<<<<<< * * pathSoFar = PathStack_Pop(thePathStack) */ while (1) { __pyx_t_1 = (!__pyx_f_9assembler_PathStack_IsEmpty(__pyx_v_thePathStack)); if (!__pyx_t_1) break; /* "assembler.pyx":1046 * while not PathStack_IsEmpty(thePathStack): * * pathSoFar = PathStack_Pop(thePathStack) # <<<<<<<<<<<<<< * endSoFar = pathSoFar.nodes.elements[pathSoFar.nNodes-1] * */ __pyx_v_pathSoFar = __pyx_f_9assembler_PathStack_Pop(__pyx_v_thePathStack); /* "assembler.pyx":1047 * * pathSoFar = PathStack_Pop(thePathStack) * endSoFar = pathSoFar.nodes.elements[pathSoFar.nNodes-1] # <<<<<<<<<<<<<< * * # TODO: Replace with maxHaplotypes?? */ __pyx_v_endSoFar = (__pyx_v_pathSoFar->nodes->elements[(__pyx_v_pathSoFar->nNodes - 1)]); /* "assembler.pyx":1050 * * # TODO: Replace with maxHaplotypes?? * if thePathStack.top + 1 > 20 or finishedPaths.top + 1 > 20: # <<<<<<<<<<<<<< * #logger.info("Too many paths %s (%s) from this node. Giving up" %(thePathStack.top, finishedPaths.top)) * destroyPath(pathSoFar) */ __pyx_t_1 = ((__pyx_v_thePathStack->top + 1) > 20); if (!__pyx_t_1) { __pyx_t_2 = ((__pyx_v_finishedPaths->top + 1) > 20); __pyx_t_3 = __pyx_t_2; } else { __pyx_t_3 = __pyx_t_1; } if (__pyx_t_3) { /* "assembler.pyx":1052 * if thePathStack.top + 1 > 20 or finishedPaths.top + 1 > 20: * #logger.info("Too many paths %s (%s) from this node. Giving up" %(thePathStack.top, finishedPaths.top)) * destroyPath(pathSoFar) # <<<<<<<<<<<<<< * destroyPathStack(thePathStack) * destroyPathStack(finishedPaths) */ __pyx_f_9assembler_destroyPath(__pyx_v_pathSoFar); /* "assembler.pyx":1053 * #logger.info("Too many paths %s (%s) from this node. Giving up" %(thePathStack.top, finishedPaths.top)) * destroyPath(pathSoFar) * destroyPathStack(thePathStack) # <<<<<<<<<<<<<< * destroyPathStack(finishedPaths) * return NULL */ __pyx_f_9assembler_destroyPathStack(__pyx_v_thePathStack); /* "assembler.pyx":1054 * destroyPath(pathSoFar) * destroyPathStack(thePathStack) * destroyPathStack(finishedPaths) # <<<<<<<<<<<<<< * return NULL * */ __pyx_f_9assembler_destroyPathStack(__pyx_v_finishedPaths); /* "assembler.pyx":1055 * destroyPathStack(thePathStack) * destroyPathStack(finishedPaths) * return NULL # <<<<<<<<<<<<<< * * # At the moment, don't allow any cycles. */ __pyx_r = NULL; goto __pyx_L0; goto __pyx_L5; } __pyx_L5:; /* "assembler.pyx":1058 * * # At the moment, don't allow any cycles. * hasCycle = checkPathForCycles(pathSoFar) # <<<<<<<<<<<<<< * * if hasCycle: */ __pyx_v_hasCycle = __pyx_f_9assembler_checkPathForCycles(__pyx_v_pathSoFar); /* "assembler.pyx":1060 * hasCycle = checkPathForCycles(pathSoFar) * * if hasCycle: # <<<<<<<<<<<<<< * destroyPath(pathSoFar) * */ if (__pyx_v_hasCycle) { /* "assembler.pyx":1061 * * if hasCycle: * destroyPath(pathSoFar) # <<<<<<<<<<<<<< * * # Got back to ref, this path is done with. This is a bubble. */ __pyx_f_9assembler_destroyPath(__pyx_v_pathSoFar); goto __pyx_L6; } /* "assembler.pyx":1064 * * # Got back to ref, this path is done with. This is a bubble. * elif endSoFar.colours == REF_AND_READ: # <<<<<<<<<<<<<< * pathSoFar.isBubble = 1 * PathStack_Push(finishedPaths, pathSoFar) */ __pyx_t_3 = (__pyx_v_endSoFar->colours == __pyx_v_9assembler_REF_AND_READ); if (__pyx_t_3) { /* "assembler.pyx":1065 * # Got back to ref, this path is done with. This is a bubble. * elif endSoFar.colours == REF_AND_READ: * pathSoFar.isBubble = 1 # <<<<<<<<<<<<<< * PathStack_Push(finishedPaths, pathSoFar) * */ __pyx_v_pathSoFar->isBubble = 1; /* "assembler.pyx":1066 * elif endSoFar.colours == REF_AND_READ: * pathSoFar.isBubble = 1 * PathStack_Push(finishedPaths, pathSoFar) # <<<<<<<<<<<<<< * * # No reads here. Not quite sure how this could happen. Went from ref and read to only */ __pyx_f_9assembler_PathStack_Push(__pyx_v_finishedPaths, __pyx_v_pathSoFar); goto __pyx_L6; } /* "assembler.pyx":1070 * # No reads here. Not quite sure how this could happen. Went from ref and read to only * # ref. * elif endSoFar.colours == REF: # <<<<<<<<<<<<<< * destroyPath(pathSoFar) * */ __pyx_t_3 = (__pyx_v_endSoFar->colours == __pyx_v_9assembler_REF); if (__pyx_t_3) { /* "assembler.pyx":1071 * # ref. * elif endSoFar.colours == REF: * destroyPath(pathSoFar) # <<<<<<<<<<<<<< * * # Keep extending path */ __pyx_f_9assembler_destroyPath(__pyx_v_pathSoFar); goto __pyx_L6; } /*else*/ { /* "assembler.pyx":1089 * * #else: * nEdgesThisNode = endSoFar.nEdges # <<<<<<<<<<<<<< * * for i in range(nEdgesThisNode): */ __pyx_t_4 = __pyx_v_endSoFar->nEdges; __pyx_v_nEdgesThisNode = __pyx_t_4; /* "assembler.pyx":1091 * nEdgesThisNode = endSoFar.nEdges * * for i in range(nEdgesThisNode): # <<<<<<<<<<<<<< * theEdge = endSoFar.edges[i] * newEnd = theEdge.endNode */ __pyx_t_4 = __pyx_v_nEdgesThisNode; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; /* "assembler.pyx":1092 * * for i in range(nEdgesThisNode): * theEdge = endSoFar.edges[i] # <<<<<<<<<<<<<< * newEnd = theEdge.endNode * */ __pyx_v_theEdge = (__pyx_v_endSoFar->edges[__pyx_v_i]); /* "assembler.pyx":1093 * for i in range(nEdgesThisNode): * theEdge = endSoFar.edges[i] * newEnd = theEdge.endNode # <<<<<<<<<<<<<< * * if theEdge.weight >= minWeight or newEnd.colours == REF_AND_READ or newEnd.colours == REF: */ __pyx_t_6 = __pyx_v_theEdge->endNode; __pyx_v_newEnd = __pyx_t_6; /* "assembler.pyx":1095 * newEnd = theEdge.endNode * * if theEdge.weight >= minWeight or newEnd.colours == REF_AND_READ or newEnd.colours == REF: # <<<<<<<<<<<<<< * newPath = createPath(theGraph.kmerSize) * */ __pyx_t_3 = (__pyx_v_theEdge->weight >= __pyx_v_minWeight); if (!__pyx_t_3) { __pyx_t_1 = (__pyx_v_newEnd->colours == __pyx_v_9assembler_REF_AND_READ); if (!__pyx_t_1) { __pyx_t_2 = (__pyx_v_newEnd->colours == __pyx_v_9assembler_REF); __pyx_t_7 = __pyx_t_2; } else { __pyx_t_7 = __pyx_t_1; } __pyx_t_1 = __pyx_t_7; } else { __pyx_t_1 = __pyx_t_3; } if (__pyx_t_1) { /* "assembler.pyx":1096 * * if theEdge.weight >= minWeight or newEnd.colours == REF_AND_READ or newEnd.colours == REF: * newPath = createPath(theGraph.kmerSize) # <<<<<<<<<<<<<< * * # Copy old path */ __pyx_v_newPath = __pyx_f_9assembler_createPath(__pyx_v_theGraph->kmerSize); /* "assembler.pyx":1099 * * # Copy old path * for j in range(pathSoFar.nNodes): # <<<<<<<<<<<<<< * addNodeToPath(newPath, pathSoFar.nodes.elements[j], 0.0) * */ __pyx_t_8 = __pyx_v_pathSoFar->nNodes; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_j = __pyx_t_9; /* "assembler.pyx":1100 * # Copy old path * for j in range(pathSoFar.nNodes): * addNodeToPath(newPath, pathSoFar.nodes.elements[j], 0.0) # <<<<<<<<<<<<<< * * # Weight for this path is weight of existing path + weight of new edge */ __pyx_f_9assembler_addNodeToPath(__pyx_v_newPath, (__pyx_v_pathSoFar->nodes->elements[__pyx_v_j]), 0.0); } /* "assembler.pyx":1103 * * # Weight for this path is weight of existing path + weight of new edge * newPath.weight = pathSoFar.weight # <<<<<<<<<<<<<< * addNodeToPath(newPath, newEnd, theEdge.weight) * PathStack_Push(thePathStack, newPath) */ __pyx_t_10 = __pyx_v_pathSoFar->weight; __pyx_v_newPath->weight = __pyx_t_10; /* "assembler.pyx":1104 * # Weight for this path is weight of existing path + weight of new edge * newPath.weight = pathSoFar.weight * addNodeToPath(newPath, newEnd, theEdge.weight) # <<<<<<<<<<<<<< * PathStack_Push(thePathStack, newPath) * */ __pyx_f_9assembler_addNodeToPath(__pyx_v_newPath, __pyx_v_newEnd, __pyx_v_theEdge->weight); /* "assembler.pyx":1105 * newPath.weight = pathSoFar.weight * addNodeToPath(newPath, newEnd, theEdge.weight) * PathStack_Push(thePathStack, newPath) # <<<<<<<<<<<<<< * * destroyPath(pathSoFar) */ __pyx_f_9assembler_PathStack_Push(__pyx_v_thePathStack, __pyx_v_newPath); goto __pyx_L9; } __pyx_L9:; } /* "assembler.pyx":1107 * PathStack_Push(thePathStack, newPath) * * destroyPath(pathSoFar) # <<<<<<<<<<<<<< * * destroyPathStack(thePathStack) */ __pyx_f_9assembler_destroyPath(__pyx_v_pathSoFar); } __pyx_L6:; } /* "assembler.pyx":1109 * destroyPath(pathSoFar) * * destroyPathStack(thePathStack) # <<<<<<<<<<<<<< * return finishedPaths * */ __pyx_f_9assembler_destroyPathStack(__pyx_v_thePathStack); /* "assembler.pyx":1110 * * destroyPathStack(thePathStack) * return finishedPaths # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_finishedPaths; goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":1114 * ################################################################################################### * * cdef list findBubblesInGraph(DeBruijnGraph* theGraph, double minWeight, char* refSeq, char* chrom, int refStart, int refEnd, int assemStart, int assemEnd, int verbosity): # <<<<<<<<<<<<<< * """ * Find and return all bubbles in the graph. */ static PyObject *__pyx_f_9assembler_findBubblesInGraph(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, double __pyx_v_minWeight, char *__pyx_v_refSeq, char *__pyx_v_chrom, int __pyx_v_refStart, int __pyx_v_refEnd, int __pyx_v_assemStart, int __pyx_v_assemEnd, int __pyx_v_verbosity) { int __pyx_v_nNodes; int __pyx_v_nEdgesThisNode; int __pyx_v_nBubblePaths; CYTHON_UNUSED int __pyx_v_nNodesThisPath; int __pyx_v_i; int __pyx_v_j; __pyx_t_9assembler_Edge *__pyx_v_theEdge; __pyx_t_9assembler_Node **__pyx_v_allNodes; __pyx_t_9assembler_Node *__pyx_v_theNode; __pyx_t_9assembler_PathStack *__pyx_v_bubblePathsThisNode; __pyx_t_9assembler_Path *__pyx_v_thePath; __pyx_t_9assembler_Path *__pyx_v_theBubblePath; PyObject *__pyx_v_variants = 0; struct __pyx_obj_7variant_Variant *__pyx_v_theVar = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __pyx_t_9assembler_Node **__pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("findBubblesInGraph", 0); /* "assembler.pyx":1123 * 4) Keep a stack of the current path * """ * cdef int nNodes = theGraph.allNodes.top + 1 # <<<<<<<<<<<<<< * cdef int nEdgesThisNode = 0 * cdef int nBubblePaths = 0 */ __pyx_v_nNodes = (__pyx_v_theGraph->allNodes->top + 1); /* "assembler.pyx":1124 * """ * cdef int nNodes = theGraph.allNodes.top + 1 * cdef int nEdgesThisNode = 0 # <<<<<<<<<<<<<< * cdef int nBubblePaths = 0 * cdef int nNodesThisPath = 0 */ __pyx_v_nEdgesThisNode = 0; /* "assembler.pyx":1125 * cdef int nNodes = theGraph.allNodes.top + 1 * cdef int nEdgesThisNode = 0 * cdef int nBubblePaths = 0 # <<<<<<<<<<<<<< * cdef int nNodesThisPath = 0 * cdef int i = 0 */ __pyx_v_nBubblePaths = 0; /* "assembler.pyx":1126 * cdef int nEdgesThisNode = 0 * cdef int nBubblePaths = 0 * cdef int nNodesThisPath = 0 # <<<<<<<<<<<<<< * cdef int i = 0 * cdef int j = 0 */ __pyx_v_nNodesThisPath = 0; /* "assembler.pyx":1127 * cdef int nBubblePaths = 0 * cdef int nNodesThisPath = 0 * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int j = 0 * cdef Edge* theEdge = NULL */ __pyx_v_i = 0; /* "assembler.pyx":1128 * cdef int nNodesThisPath = 0 * cdef int i = 0 * cdef int j = 0 # <<<<<<<<<<<<<< * cdef Edge* theEdge = NULL * cdef Node** allNodes = theGraph.allNodes.elements */ __pyx_v_j = 0; /* "assembler.pyx":1129 * cdef int i = 0 * cdef int j = 0 * cdef Edge* theEdge = NULL # <<<<<<<<<<<<<< * cdef Node** allNodes = theGraph.allNodes.elements * cdef Node* theNode = NULL */ __pyx_v_theEdge = NULL; /* "assembler.pyx":1130 * cdef int j = 0 * cdef Edge* theEdge = NULL * cdef Node** allNodes = theGraph.allNodes.elements # <<<<<<<<<<<<<< * cdef Node* theNode = NULL * cdef PathStack* bubblePathsThisNode = NULL */ __pyx_t_1 = __pyx_v_theGraph->allNodes->elements; __pyx_v_allNodes = __pyx_t_1; /* "assembler.pyx":1131 * cdef Edge* theEdge = NULL * cdef Node** allNodes = theGraph.allNodes.elements * cdef Node* theNode = NULL # <<<<<<<<<<<<<< * cdef PathStack* bubblePathsThisNode = NULL * cdef Path* thePath = NULL */ __pyx_v_theNode = NULL; /* "assembler.pyx":1132 * cdef Node** allNodes = theGraph.allNodes.elements * cdef Node* theNode = NULL * cdef PathStack* bubblePathsThisNode = NULL # <<<<<<<<<<<<<< * cdef Path* thePath = NULL * cdef Path* theBubblePath = NULL */ __pyx_v_bubblePathsThisNode = NULL; /* "assembler.pyx":1133 * cdef Node* theNode = NULL * cdef PathStack* bubblePathsThisNode = NULL * cdef Path* thePath = NULL # <<<<<<<<<<<<<< * cdef Path* theBubblePath = NULL * cdef list variants = [] */ __pyx_v_thePath = NULL; /* "assembler.pyx":1134 * cdef PathStack* bubblePathsThisNode = NULL * cdef Path* thePath = NULL * cdef Path* theBubblePath = NULL # <<<<<<<<<<<<<< * cdef list variants = [] * cdef Variant theVar */ __pyx_v_theBubblePath = NULL; /* "assembler.pyx":1135 * cdef Path* thePath = NULL * cdef Path* theBubblePath = NULL * cdef list variants = [] # <<<<<<<<<<<<<< * cdef Variant theVar * */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_v_variants = __pyx_t_2; __pyx_t_2 = 0; /* "assembler.pyx":1138 * cdef Variant theVar * * for i in range(nNodes): # <<<<<<<<<<<<<< * theNode = allNodes[i] * */ __pyx_t_3 = __pyx_v_nNodes; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; /* "assembler.pyx":1139 * * for i in range(nNodes): * theNode = allNodes[i] # <<<<<<<<<<<<<< * * # First node which is ref only */ __pyx_v_theNode = (__pyx_v_allNodes[__pyx_v_i]); /* "assembler.pyx":1142 * * # First node which is ref only * if theNode.colours == REF_AND_READ and theNode.position >= assemStart and theNode.position < assemEnd: # <<<<<<<<<<<<<< * nEdgesThisNode = theNode.nEdges * */ __pyx_t_5 = (__pyx_v_theNode->colours == __pyx_v_9assembler_REF_AND_READ); if (__pyx_t_5) { __pyx_t_6 = (__pyx_v_theNode->position >= __pyx_v_assemStart); if (__pyx_t_6) { __pyx_t_7 = (__pyx_v_theNode->position < __pyx_v_assemEnd); __pyx_t_8 = __pyx_t_7; } else { __pyx_t_8 = __pyx_t_6; } __pyx_t_6 = __pyx_t_8; } else { __pyx_t_6 = __pyx_t_5; } if (__pyx_t_6) { /* "assembler.pyx":1143 * # First node which is ref only * if theNode.colours == REF_AND_READ and theNode.position >= assemStart and theNode.position < assemEnd: * nEdgesThisNode = theNode.nEdges # <<<<<<<<<<<<<< * * for j in range(nEdgesThisNode): */ __pyx_t_9 = __pyx_v_theNode->nEdges; __pyx_v_nEdgesThisNode = __pyx_t_9; /* "assembler.pyx":1145 * nEdgesThisNode = theNode.nEdges * * for j in range(nEdgesThisNode): # <<<<<<<<<<<<<< * #logger.debug("Node %s has %s edges" %(i, nEdgesThisNode)) * theEdge = theNode.edges[j] */ __pyx_t_9 = __pyx_v_nEdgesThisNode; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_j = __pyx_t_10; /* "assembler.pyx":1147 * for j in range(nEdgesThisNode): * #logger.debug("Node %s has %s edges" %(i, nEdgesThisNode)) * theEdge = theNode.edges[j] # <<<<<<<<<<<<<< * * # New kmer in reads. Start path using a depth-first */ __pyx_v_theEdge = (__pyx_v_theNode->edges[__pyx_v_j]); /* "assembler.pyx":1151 * # New kmer in reads. Start path using a depth-first * # search from this node. Include first node in path. * if theEdge.endNode.colours == READ: # <<<<<<<<<<<<<< * * thePath = createPath(theGraph.kmerSize) */ __pyx_t_6 = (__pyx_v_theEdge->endNode->colours == __pyx_v_9assembler_READ); if (__pyx_t_6) { /* "assembler.pyx":1153 * if theEdge.endNode.colours == READ: * * thePath = createPath(theGraph.kmerSize) # <<<<<<<<<<<<<< * addNodeToPath(thePath, theNode, 0.0) * addNodeToPath(thePath, theEdge.endNode, 0.0) */ __pyx_v_thePath = __pyx_f_9assembler_createPath(__pyx_v_theGraph->kmerSize); /* "assembler.pyx":1154 * * thePath = createPath(theGraph.kmerSize) * addNodeToPath(thePath, theNode, 0.0) # <<<<<<<<<<<<<< * addNodeToPath(thePath, theEdge.endNode, 0.0) * bubblePathsThisNode = getVariantPathsThroughGraphFromNode(theGraph, thePath, minWeight) */ __pyx_f_9assembler_addNodeToPath(__pyx_v_thePath, __pyx_v_theNode, 0.0); /* "assembler.pyx":1155 * thePath = createPath(theGraph.kmerSize) * addNodeToPath(thePath, theNode, 0.0) * addNodeToPath(thePath, theEdge.endNode, 0.0) # <<<<<<<<<<<<<< * bubblePathsThisNode = getVariantPathsThroughGraphFromNode(theGraph, thePath, minWeight) * */ __pyx_f_9assembler_addNodeToPath(__pyx_v_thePath, __pyx_v_theEdge->endNode, 0.0); /* "assembler.pyx":1156 * addNodeToPath(thePath, theNode, 0.0) * addNodeToPath(thePath, theEdge.endNode, 0.0) * bubblePathsThisNode = getVariantPathsThroughGraphFromNode(theGraph, thePath, minWeight) # <<<<<<<<<<<<<< * * if bubblePathsThisNode != NULL: */ __pyx_v_bubblePathsThisNode = __pyx_f_9assembler_getVariantPathsThroughGraphFromNode(__pyx_v_theGraph, __pyx_v_thePath, __pyx_v_minWeight); /* "assembler.pyx":1158 * bubblePathsThisNode = getVariantPathsThroughGraphFromNode(theGraph, thePath, minWeight) * * if bubblePathsThisNode != NULL: # <<<<<<<<<<<<<< * nBubblePaths = bubblePathsThisNode.top + 1 * */ __pyx_t_6 = (__pyx_v_bubblePathsThisNode != NULL); if (__pyx_t_6) { /* "assembler.pyx":1159 * * if bubblePathsThisNode != NULL: * nBubblePaths = bubblePathsThisNode.top + 1 # <<<<<<<<<<<<<< * * #logger.debug("There are %s bubble paths from node %s and edge %s in region %s:%s-%s" %(nBubblePaths, i, j, chrom, assemStart, assemEnd)) */ __pyx_v_nBubblePaths = (__pyx_v_bubblePathsThisNode->top + 1); /* "assembler.pyx":1163 * #logger.debug("There are %s bubble paths from node %s and edge %s in region %s:%s-%s" %(nBubblePaths, i, j, chrom, assemStart, assemEnd)) * * for j in range(nBubblePaths): # <<<<<<<<<<<<<< * theBubblePath = bubblePathsThisNode.elements[j] * theVar = extractVarFromBubblePath(theGraph, theBubblePath, refSeq, chrom, refStart, refEnd, verbosity) */ __pyx_t_11 = __pyx_v_nBubblePaths; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_j = __pyx_t_12; /* "assembler.pyx":1164 * * for j in range(nBubblePaths): * theBubblePath = bubblePathsThisNode.elements[j] # <<<<<<<<<<<<<< * theVar = extractVarFromBubblePath(theGraph, theBubblePath, refSeq, chrom, refStart, refEnd, verbosity) * */ __pyx_v_theBubblePath = (__pyx_v_bubblePathsThisNode->elements[__pyx_v_j]); /* "assembler.pyx":1165 * for j in range(nBubblePaths): * theBubblePath = bubblePathsThisNode.elements[j] * theVar = extractVarFromBubblePath(theGraph, theBubblePath, refSeq, chrom, refStart, refEnd, verbosity) # <<<<<<<<<<<<<< * * #if verbosity >= 3: */ __pyx_t_2 = ((PyObject *)__pyx_f_9assembler_extractVarFromBubblePath(__pyx_v_theGraph, __pyx_v_theBubblePath, __pyx_v_refSeq, __pyx_v_chrom, __pyx_v_refStart, __pyx_v_refEnd, __pyx_v_verbosity)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF(((PyObject *)__pyx_v_theVar)); __pyx_v_theVar = ((struct __pyx_obj_7variant_Variant *)__pyx_t_2); __pyx_t_2 = 0; /* "assembler.pyx":1170 * # logger.debug("Assembler found variant %s. Path has %s nodes, with total weight %s. Weight per node = %s" %(theVar, thePath.nNodes, thePath.weight, thePath.weight/thePath.nNodes)) * * if theVar is not None: # <<<<<<<<<<<<<< * variants.append(theVar) * */ __pyx_t_6 = (((PyObject *)__pyx_v_theVar) != Py_None); if (__pyx_t_6) { /* "assembler.pyx":1171 * * if theVar is not None: * variants.append(theVar) # <<<<<<<<<<<<<< * * destroyPathStack(bubblePathsThisNode) */ __pyx_t_13 = PyList_Append(__pyx_v_variants, ((PyObject *)__pyx_v_theVar)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L12; } __pyx_L12:; } /* "assembler.pyx":1173 * variants.append(theVar) * * destroyPathStack(bubblePathsThisNode) # <<<<<<<<<<<<<< * * return variants */ __pyx_f_9assembler_destroyPathStack(__pyx_v_bubblePathsThisNode); goto __pyx_L9; } __pyx_L9:; goto __pyx_L8; } __pyx_L8:; } goto __pyx_L5; } __pyx_L5:; } /* "assembler.pyx":1175 * destroyPathStack(bubblePathsThisNode) * * return variants # <<<<<<<<<<<<<< * * ################################################################################################### */ __Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_variants)); __pyx_r = __pyx_v_variants; goto __pyx_L0; __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("assembler.findBubblesInGraph", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_variants); __Pyx_XDECREF((PyObject *)__pyx_v_theVar); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":1179 * ################################################################################################### * * cdef void logPath(Path* thePath, char* refSeq, int refStart): # <<<<<<<<<<<<<< * """ * Log a path through the graph. */ static void __pyx_f_9assembler_logPath(__pyx_t_9assembler_Path *__pyx_v_thePath, char *__pyx_v_refSeq, int __pyx_v_refStart) { int __pyx_v_i; int __pyx_v_startPos; __pyx_t_9assembler_Node *__pyx_v_theNode; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("logPath", 0); /* "assembler.pyx":1183 * Log a path through the graph. * """ * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int startPos = thePath.nodes.elements[0].position * cdef Node* theNode */ __pyx_v_i = 0; /* "assembler.pyx":1184 * """ * cdef int i = 0 * cdef int startPos = thePath.nodes.elements[0].position # <<<<<<<<<<<<<< * cdef Node* theNode * logger.debug("Logging path of %s nodes" %(thePath.nNodes)) */ __pyx_t_1 = (__pyx_v_thePath->nodes->elements[0])->position; __pyx_v_startPos = __pyx_t_1; /* "assembler.pyx":1186 * cdef int startPos = thePath.nodes.elements[0].position * cdef Node* theNode * logger.debug("Logging path of %s nodes" %(thePath.nNodes)) # <<<<<<<<<<<<<< * * for i in range(thePath.nNodes): */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_thePath->nNodes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_36), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "assembler.pyx":1188 * logger.debug("Logging path of %s nodes" %(thePath.nNodes)) * * for i in range(thePath.nNodes): # <<<<<<<<<<<<<< * theNode = thePath.nodes.elements[i] * logger.debug("Pos = %s. Seq = %s. RefSeq = %c. Colours = %s. Node weight = %s" %(theNode.position, theNode.sequence[0: theNode.kmerSize], refSeq[startPos + i - refStart], theNode.colours, theNode.weight)) */ __pyx_t_1 = __pyx_v_thePath->nNodes; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_1; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; /* "assembler.pyx":1189 * * for i in range(thePath.nNodes): * theNode = thePath.nodes.elements[i] # <<<<<<<<<<<<<< * logger.debug("Pos = %s. Seq = %s. RefSeq = %c. Colours = %s. Node weight = %s" %(theNode.position, theNode.sequence[0: theNode.kmerSize], refSeq[startPos + i - refStart], theNode.colours, theNode.weight)) * */ __pyx_v_theNode = (__pyx_v_thePath->nodes->elements[__pyx_v_i]); /* "assembler.pyx":1190 * for i in range(thePath.nNodes): * theNode = thePath.nodes.elements[i] * logger.debug("Pos = %s. Seq = %s. RefSeq = %c. Colours = %s. Node weight = %s" %(theNode.position, theNode.sequence[0: theNode.kmerSize], refSeq[startPos + i - refStart], theNode.colours, theNode.weight)) # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__debug); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromLong(__pyx_v_theNode->position); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyBytes_FromStringAndSize(((const char*)__pyx_v_theNode->sequence) + 0, __pyx_v_theNode->kmerSize - 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __pyx_t_6 = PyInt_FromLong((__pyx_v_refSeq[((__pyx_v_startPos + __pyx_v_i) - __pyx_v_refStart)])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyInt_FromLong(__pyx_v_theNode->colours); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyFloat_FromDouble(__pyx_v_theNode->weight); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyTuple_New(5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 1, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_37), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_8)); __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_8)); __Pyx_GIVEREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; __pyx_t_8 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_WriteUnraisable("assembler.logPath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":1194 * ################################################################################################### * * cdef Variant extractVarFromBubblePath(DeBruijnGraph* theGraph, Path* bubblePath, char* refSeq, char* chrom, int refStart, int refEnd, int verbosity): # <<<<<<<<<<<<<< * """ * Construct and return a representation of the variant implied by this bubble in the graph. */ static struct __pyx_obj_7variant_Variant *__pyx_f_9assembler_extractVarFromBubblePath(CYTHON_UNUSED __pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, __pyx_t_9assembler_Path *__pyx_v_bubblePath, char *__pyx_v_refSeq, char *__pyx_v_chrom, int __pyx_v_refStart, CYTHON_UNUSED int __pyx_v_refEnd, int __pyx_v_verbosity) { int __pyx_v_nNodesThisPath; __pyx_t_9assembler_Node *__pyx_v_bubbleStart; __pyx_t_9assembler_Node *__pyx_v_bubbleEnd; int __pyx_v_bubbleStartPos; int __pyx_v_bubbleEndPos; char *__pyx_v_charReadSeq; int __pyx_v_i; PyObject *__pyx_v_thisRefSeq = 0; PyObject *__pyx_v_thisReadSeq = 0; CYTHON_UNUSED int __pyx_v_varLen; int __pyx_v_varStartPos; struct __pyx_obj_7variant_Variant *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; Py_ssize_t __pyx_t_10; int __pyx_t_11; int __pyx_t_12; Py_ssize_t __pyx_t_13; PyObject *__pyx_t_14 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("extractVarFromBubblePath", 0); /* "assembler.pyx":1198 * Construct and return a representation of the variant implied by this bubble in the graph. * """ * cdef int nNodesThisPath = bubblePath.nodes.top + 1 # <<<<<<<<<<<<<< * cdef Node* bubbleStart = bubblePath.nodes.elements[0] * cdef Node* bubbleEnd = bubblePath.nodes.elements[nNodesThisPath-1] */ __pyx_v_nNodesThisPath = (__pyx_v_bubblePath->nodes->top + 1); /* "assembler.pyx":1199 * """ * cdef int nNodesThisPath = bubblePath.nodes.top + 1 * cdef Node* bubbleStart = bubblePath.nodes.elements[0] # <<<<<<<<<<<<<< * cdef Node* bubbleEnd = bubblePath.nodes.elements[nNodesThisPath-1] * cdef Node* theNode */ __pyx_v_bubbleStart = (__pyx_v_bubblePath->nodes->elements[0]); /* "assembler.pyx":1200 * cdef int nNodesThisPath = bubblePath.nodes.top + 1 * cdef Node* bubbleStart = bubblePath.nodes.elements[0] * cdef Node* bubbleEnd = bubblePath.nodes.elements[nNodesThisPath-1] # <<<<<<<<<<<<<< * cdef Node* theNode * cdef int bubbleStartPos = 0 */ __pyx_v_bubbleEnd = (__pyx_v_bubblePath->nodes->elements[(__pyx_v_nNodesThisPath - 1)]); /* "assembler.pyx":1202 * cdef Node* bubbleEnd = bubblePath.nodes.elements[nNodesThisPath-1] * cdef Node* theNode * cdef int bubbleStartPos = 0 # <<<<<<<<<<<<<< * cdef int bubbleEndPos = 0 * */ __pyx_v_bubbleStartPos = 0; /* "assembler.pyx":1203 * cdef Node* theNode * cdef int bubbleStartPos = 0 * cdef int bubbleEndPos = 0 # <<<<<<<<<<<<<< * * # Bubble comes back to reference, so take start and end points on reference */ __pyx_v_bubbleEndPos = 0; /* "assembler.pyx":1207 * # Bubble comes back to reference, so take start and end points on reference * # from start and end nodes in bubble * if bubblePath.isBubble: # <<<<<<<<<<<<<< * bubbleStartPos = bubbleStart.position * bubbleEndPos = bubbleEnd.position */ if (__pyx_v_bubblePath->isBubble) { /* "assembler.pyx":1208 * # from start and end nodes in bubble * if bubblePath.isBubble: * bubbleStartPos = bubbleStart.position # <<<<<<<<<<<<<< * bubbleEndPos = bubbleEnd.position * */ __pyx_t_1 = __pyx_v_bubbleStart->position; __pyx_v_bubbleStartPos = __pyx_t_1; /* "assembler.pyx":1209 * if bubblePath.isBubble: * bubbleStartPos = bubbleStart.position * bubbleEndPos = bubbleEnd.position # <<<<<<<<<<<<<< * * if bubbleEndPos < bubbleStartPos: */ __pyx_t_1 = __pyx_v_bubbleEnd->position; __pyx_v_bubbleEndPos = __pyx_t_1; /* "assembler.pyx":1211 * bubbleEndPos = bubbleEnd.position * * if bubbleEndPos < bubbleStartPos: # <<<<<<<<<<<<<< * #if verbosity >= 3: * #logger.debug("Found wonky candidate with end pos < start pos. (%s --> %s)" %(bubbleStartPos, bubbleEndPos)) */ __pyx_t_2 = (__pyx_v_bubbleEndPos < __pyx_v_bubbleStartPos); if (__pyx_t_2) { /* "assembler.pyx":1215 * #logger.debug("Found wonky candidate with end pos < start pos. (%s --> %s)" %(bubbleStartPos, bubbleEndPos)) * #logPath(bubblePath, refSeq, refStart) * bubbleEndPos = bubbleStartPos + bubblePath.nNodes - 1 # <<<<<<<<<<<<<< * return None * */ __pyx_v_bubbleEndPos = ((__pyx_v_bubbleStartPos + __pyx_v_bubblePath->nNodes) - 1); /* "assembler.pyx":1216 * #logPath(bubblePath, refSeq, refStart) * bubbleEndPos = bubbleStartPos + bubblePath.nNodes - 1 * return None # <<<<<<<<<<<<<< * * #logger.debug("Assembled path with %s nodes. Start = %s. End = %s" %(bubblePath.nNodes, bubbleStart.position, bubbleEnd.position)) */ __Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(Py_None); __pyx_r = ((struct __pyx_obj_7variant_Variant *)Py_None); goto __pyx_L0; goto __pyx_L4; } __pyx_L4:; goto __pyx_L3; } /*else*/ { /* "assembler.pyx":1224 * # start point in ref as insertion point. * else: * bubbleStartPos = bubbleStart.position # <<<<<<<<<<<<<< * bubbleEndPos = bubbleStartPos * */ __pyx_t_1 = __pyx_v_bubbleStart->position; __pyx_v_bubbleStartPos = __pyx_t_1; /* "assembler.pyx":1225 * else: * bubbleStartPos = bubbleStart.position * bubbleEndPos = bubbleStartPos # <<<<<<<<<<<<<< * * # TODO: We should be able to deal with these now. Just add nNodes to bubble */ __pyx_v_bubbleEndPos = __pyx_v_bubbleStartPos; } __pyx_L3:; /* "assembler.pyx":1228 * * # TODO: We should be able to deal with these now. Just add nNodes to bubble * if bubbleEndPos < bubbleStartPos: # <<<<<<<<<<<<<< * logger.warning("Found complex variation that Platypus can't deal with yet at %s:%s-%s" %(chrom, min(bubbleStartPos,bubbleEndPos), max(bubbleStartPos,bubbleEndPos))) * return None */ __pyx_t_2 = (__pyx_v_bubbleEndPos < __pyx_v_bubbleStartPos); if (__pyx_t_2) { /* "assembler.pyx":1229 * # TODO: We should be able to deal with these now. Just add nNodes to bubble * if bubbleEndPos < bubbleStartPos: * logger.warning("Found complex variation that Platypus can't deal with yet at %s:%s-%s" %(chrom, min(bubbleStartPos,bubbleEndPos), max(bubbleStartPos,bubbleEndPos))) # <<<<<<<<<<<<<< * return None * */ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__warning); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyBytes_FromString(__pyx_v_chrom); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __pyx_t_1 = __pyx_v_bubbleEndPos; __pyx_t_5 = __pyx_v_bubbleStartPos; if ((__pyx_t_1 < __pyx_t_5)) { __pyx_t_6 = __pyx_t_1; } else { __pyx_t_6 = __pyx_t_5; } __pyx_t_7 = PyInt_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __pyx_v_bubbleEndPos; __pyx_t_1 = __pyx_v_bubbleStartPos; if ((__pyx_t_6 > __pyx_t_1)) { __pyx_t_5 = __pyx_t_6; } else { __pyx_t_5 = __pyx_t_1; } __pyx_t_8 = PyInt_FromLong(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_38), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_8)); __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_8)); __Pyx_GIVEREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "assembler.pyx":1230 * if bubbleEndPos < bubbleStartPos: * logger.warning("Found complex variation that Platypus can't deal with yet at %s:%s-%s" %(chrom, min(bubbleStartPos,bubbleEndPos), max(bubbleStartPos,bubbleEndPos))) * return None # <<<<<<<<<<<<<< * * cdef char* charReadSeq = (malloc(sizeof(char)*(nNodesThisPath+1))) */ __Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(Py_None); __pyx_r = ((struct __pyx_obj_7variant_Variant *)Py_None); goto __pyx_L0; goto __pyx_L5; } __pyx_L5:; /* "assembler.pyx":1232 * return None * * cdef char* charReadSeq = (malloc(sizeof(char)*(nNodesThisPath+1))) # <<<<<<<<<<<<<< * * if charReadSeq == NULL: */ __pyx_v_charReadSeq = ((char *)malloc(((sizeof(char)) * (__pyx_v_nNodesThisPath + 1)))); /* "assembler.pyx":1234 * cdef char* charReadSeq = (malloc(sizeof(char)*(nNodesThisPath+1))) * * if charReadSeq == NULL: # <<<<<<<<<<<<<< * logger.error("Could not allocate memory for charReadSeq of size %s" %(nNodesThisPath+1)) * */ __pyx_t_2 = (__pyx_v_charReadSeq == NULL); if (__pyx_t_2) { /* "assembler.pyx":1235 * * if charReadSeq == NULL: * logger.error("Could not allocate memory for charReadSeq of size %s" %(nNodesThisPath+1)) # <<<<<<<<<<<<<< * * cdef int i = 0 */ __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__error); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromLong((__pyx_v_nNodesThisPath + 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_39), __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L6; } __pyx_L6:; /* "assembler.pyx":1237 * logger.error("Could not allocate memory for charReadSeq of size %s" %(nNodesThisPath+1)) * * cdef int i = 0 # <<<<<<<<<<<<<< * * # Create sequence of variant. Remember to add null terminating element */ __pyx_v_i = 0; /* "assembler.pyx":1240 * * # Create sequence of variant. Remember to add null terminating element * for i in range(nNodesThisPath): # <<<<<<<<<<<<<< * charReadSeq[i] = bubblePath.nodes.elements[i].sequence[0] * */ __pyx_t_5 = __pyx_v_nNodesThisPath; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; /* "assembler.pyx":1241 * # Create sequence of variant. Remember to add null terminating element * for i in range(nNodesThisPath): * charReadSeq[i] = bubblePath.nodes.elements[i].sequence[0] # <<<<<<<<<<<<<< * * charReadSeq[nNodesThisPath] = 0 */ (__pyx_v_charReadSeq[__pyx_v_i]) = ((__pyx_v_bubblePath->nodes->elements[__pyx_v_i])->sequence[0]); } /* "assembler.pyx":1243 * charReadSeq[i] = bubblePath.nodes.elements[i].sequence[0] * * charReadSeq[nNodesThisPath] = 0 # <<<<<<<<<<<<<< * * cdef bytes thisRefSeq = refSeq[bubbleStartPos - refStart: bubbleEndPos - refStart + 1] */ (__pyx_v_charReadSeq[__pyx_v_nNodesThisPath]) = 0; /* "assembler.pyx":1245 * charReadSeq[nNodesThisPath] = 0 * * cdef bytes thisRefSeq = refSeq[bubbleStartPos - refStart: bubbleEndPos - refStart + 1] # <<<<<<<<<<<<<< * cdef bytes thisReadSeq = charReadSeq * */ __pyx_t_4 = PyBytes_FromStringAndSize(((const char*)__pyx_v_refSeq) + (__pyx_v_bubbleStartPos - __pyx_v_refStart), ((__pyx_v_bubbleEndPos - __pyx_v_refStart) + 1) - (__pyx_v_bubbleStartPos - __pyx_v_refStart)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __pyx_v_thisRefSeq = __pyx_t_4; __pyx_t_4 = 0; /* "assembler.pyx":1246 * * cdef bytes thisRefSeq = refSeq[bubbleStartPos - refStart: bubbleEndPos - refStart + 1] * cdef bytes thisReadSeq = charReadSeq # <<<<<<<<<<<<<< * * # The bytes variable holds a copy, so free the original. */ __pyx_t_4 = PyBytes_FromString(__pyx_v_charReadSeq); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __pyx_v_thisReadSeq = __pyx_t_4; __pyx_t_4 = 0; /* "assembler.pyx":1249 * * # The bytes variable holds a copy, so free the original. * free(charReadSeq) # <<<<<<<<<<<<<< * * # Push as far to left as possible */ free(__pyx_v_charReadSeq); /* "assembler.pyx":1252 * * # Push as far to left as possible * while len(thisReadSeq) > 0 and len(thisRefSeq) > 0: # <<<<<<<<<<<<<< * * if thisRefSeq[-1] == thisReadSeq[-1]: */ while (1) { if (unlikely(((PyObject *)__pyx_v_thisReadSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisReadSeq)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = (__pyx_t_10 > 0); if (__pyx_t_2) { if (unlikely(((PyObject *)__pyx_v_thisRefSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisRefSeq)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_11 = (__pyx_t_10 > 0); __pyx_t_12 = __pyx_t_11; } else { __pyx_t_12 = __pyx_t_2; } if (!__pyx_t_12) break; /* "assembler.pyx":1254 * while len(thisReadSeq) > 0 and len(thisRefSeq) > 0: * * if thisRefSeq[-1] == thisReadSeq[-1]: # <<<<<<<<<<<<<< * thisRefSeq = thisRefSeq[:-1] * thisReadSeq = thisReadSeq[:-1] */ __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_thisRefSeq), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_GetItemInt(((PyObject *)__pyx_v_thisReadSeq), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyObject_RichCompare(__pyx_t_4, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (__pyx_t_12) { /* "assembler.pyx":1255 * * if thisRefSeq[-1] == thisReadSeq[-1]: * thisRefSeq = thisRefSeq[:-1] # <<<<<<<<<<<<<< * thisReadSeq = thisReadSeq[:-1] * else: */ __pyx_t_9 = __Pyx_PySequence_GetSlice(((PyObject *)__pyx_v_thisRefSeq), 0, -1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_9)); __Pyx_DECREF(((PyObject *)__pyx_v_thisRefSeq)); __pyx_v_thisRefSeq = __pyx_t_9; __pyx_t_9 = 0; /* "assembler.pyx":1256 * if thisRefSeq[-1] == thisReadSeq[-1]: * thisRefSeq = thisRefSeq[:-1] * thisReadSeq = thisReadSeq[:-1] # <<<<<<<<<<<<<< * else: * break */ __pyx_t_9 = __Pyx_PySequence_GetSlice(((PyObject *)__pyx_v_thisReadSeq), 0, -1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_9)); __Pyx_DECREF(((PyObject *)__pyx_v_thisReadSeq)); __pyx_v_thisReadSeq = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L11; } /*else*/ { /* "assembler.pyx":1258 * thisReadSeq = thisReadSeq[:-1] * else: * break # <<<<<<<<<<<<<< * * # Trim leading reference sequence */ goto __pyx_L10_break; } __pyx_L11:; } __pyx_L10_break:; /* "assembler.pyx":1261 * * # Trim leading reference sequence * while len(thisReadSeq) > 0 and len(thisRefSeq) > 0: # <<<<<<<<<<<<<< * * if thisRefSeq[0] == thisReadSeq[0]: */ while (1) { if (unlikely(((PyObject *)__pyx_v_thisReadSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisReadSeq)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_12 = (__pyx_t_10 > 0); if (__pyx_t_12) { if (unlikely(((PyObject *)__pyx_v_thisRefSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisRefSeq)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = (__pyx_t_10 > 0); __pyx_t_11 = __pyx_t_2; } else { __pyx_t_11 = __pyx_t_12; } if (!__pyx_t_11) break; /* "assembler.pyx":1263 * while len(thisReadSeq) > 0 and len(thisRefSeq) > 0: * * if thisRefSeq[0] == thisReadSeq[0]: # <<<<<<<<<<<<<< * bubbleStartPos += 1 * thisRefSeq = thisRefSeq[1:] */ __pyx_t_9 = __Pyx_GetItemInt(((PyObject *)__pyx_v_thisRefSeq), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_GetItemInt(((PyObject *)__pyx_v_thisReadSeq), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyObject_RichCompare(__pyx_t_9, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_11) { /* "assembler.pyx":1264 * * if thisRefSeq[0] == thisReadSeq[0]: * bubbleStartPos += 1 # <<<<<<<<<<<<<< * thisRefSeq = thisRefSeq[1:] * thisReadSeq = thisReadSeq[1:] */ __pyx_v_bubbleStartPos = (__pyx_v_bubbleStartPos + 1); /* "assembler.pyx":1265 * if thisRefSeq[0] == thisReadSeq[0]: * bubbleStartPos += 1 * thisRefSeq = thisRefSeq[1:] # <<<<<<<<<<<<<< * thisReadSeq = thisReadSeq[1:] * else: */ __pyx_t_4 = __Pyx_PySequence_GetSlice(((PyObject *)__pyx_v_thisRefSeq), 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(((PyObject *)__pyx_v_thisRefSeq)); __pyx_v_thisRefSeq = __pyx_t_4; __pyx_t_4 = 0; /* "assembler.pyx":1266 * bubbleStartPos += 1 * thisRefSeq = thisRefSeq[1:] * thisReadSeq = thisReadSeq[1:] # <<<<<<<<<<<<<< * else: * break */ __pyx_t_4 = __Pyx_PySequence_GetSlice(((PyObject *)__pyx_v_thisReadSeq), 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(((PyObject *)__pyx_v_thisReadSeq)); __pyx_v_thisReadSeq = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L14; } /*else*/ { /* "assembler.pyx":1268 * thisReadSeq = thisReadSeq[1:] * else: * break # <<<<<<<<<<<<<< * * #if verbosity >= 3: */ goto __pyx_L13_break; } __pyx_L14:; } __pyx_L13_break:; /* "assembler.pyx":1273 * # logger.debug("After trimming, candidate variant is %s:%s-%s %s --> %s" %(chrom, bubbleStartPos, bubbleEndPos, thisRefSeq, thisReadSeq)) * * if verbosity >= 3 and abs(len(thisRefSeq) - len(thisReadSeq)) > 100: # <<<<<<<<<<<<<< * logger.info("Platypus assembler found candidate variant of size %s. %s:%s-%s %s --> %s" %(len(thisReadSeq) - len(thisRefSeq), chrom, bubbleStartPos, bubbleEndPos, thisRefSeq, thisReadSeq)) * */ __pyx_t_11 = (__pyx_v_verbosity >= 3); if (__pyx_t_11) { if (unlikely(((PyObject *)__pyx_v_thisRefSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisRefSeq)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(((PyObject *)__pyx_v_thisReadSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_13 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisReadSeq)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = PyInt_FromSsize_t((__pyx_t_10 - __pyx_t_13)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = PyNumber_Absolute(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_int_100, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_12; } else { __pyx_t_2 = __pyx_t_11; } if (__pyx_t_2) { /* "assembler.pyx":1274 * * if verbosity >= 3 and abs(len(thisRefSeq) - len(thisReadSeq)) > 100: * logger.info("Platypus assembler found candidate variant of size %s. %s:%s-%s %s --> %s" %(len(thisReadSeq) - len(thisRefSeq), chrom, bubbleStartPos, bubbleEndPos, thisRefSeq, thisReadSeq)) # <<<<<<<<<<<<<< * * cdef int varLen = len(thisReadSeq) - len(thisRefSeq) */ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(((PyObject *)__pyx_v_thisReadSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_13 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisReadSeq)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(((PyObject *)__pyx_v_thisRefSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisRefSeq)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = PyInt_FromSsize_t((__pyx_t_13 - __pyx_t_10)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PyBytes_FromString(__pyx_v_chrom); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_9)); __pyx_t_7 = PyInt_FromLong(__pyx_v_bubbleStartPos); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyInt_FromLong(__pyx_v_bubbleEndPos); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_14 = PyTuple_New(6); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 1, ((PyObject *)__pyx_t_9)); __Pyx_GIVEREF(((PyObject *)__pyx_t_9)); PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_thisRefSeq)); PyTuple_SET_ITEM(__pyx_t_14, 4, ((PyObject *)__pyx_v_thisRefSeq)); __Pyx_GIVEREF(((PyObject *)__pyx_v_thisRefSeq)); __Pyx_INCREF(((PyObject *)__pyx_v_thisReadSeq)); PyTuple_SET_ITEM(__pyx_t_14, 5, ((PyObject *)__pyx_v_thisReadSeq)); __Pyx_GIVEREF(((PyObject *)__pyx_v_thisReadSeq)); __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_7 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_40), ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L15; } __pyx_L15:; /* "assembler.pyx":1276 * logger.info("Platypus assembler found candidate variant of size %s. %s:%s-%s %s --> %s" %(len(thisReadSeq) - len(thisRefSeq), chrom, bubbleStartPos, bubbleEndPos, thisRefSeq, thisReadSeq)) * * cdef int varLen = len(thisReadSeq) - len(thisRefSeq) # <<<<<<<<<<<<<< * cdef int varStartPos = bubbleStartPos * */ if (unlikely(((PyObject *)__pyx_v_thisReadSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisReadSeq)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(((PyObject *)__pyx_v_thisRefSeq) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_13 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_thisRefSeq)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_varLen = (__pyx_t_10 - __pyx_t_13); /* "assembler.pyx":1277 * * cdef int varLen = len(thisReadSeq) - len(thisRefSeq) * cdef int varStartPos = bubbleStartPos # <<<<<<<<<<<<<< * * #if varLen == 0: */ __pyx_v_varStartPos = __pyx_v_bubbleStartPos; /* "assembler.pyx":1289 * # logger.debug("Assembler found large variant %s:%s, %s --> %s. Length = %s" %(chrom, varStartPos, thisRefSeq, thisReadSeq, abs(len(thisRefSeq) - len(thisReadSeq)))) * * return Variant(chrom, varStartPos, thisRefSeq, thisReadSeq, 0, ASSEMBLER_VAR) # <<<<<<<<<<<<<< * * #################################################################################################### */ __Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_3 = PyBytes_FromString(__pyx_v_chrom); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __pyx_t_14 = PyInt_FromLong(__pyx_v_varStartPos); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); __pyx_t_8 = PyInt_FromLong(__pyx_v_7variant_ASSEMBLER_VAR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyTuple_New(6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); __Pyx_INCREF(((PyObject *)__pyx_v_thisRefSeq)); PyTuple_SET_ITEM(__pyx_t_7, 2, ((PyObject *)__pyx_v_thisRefSeq)); __Pyx_GIVEREF(((PyObject *)__pyx_v_thisRefSeq)); __Pyx_INCREF(((PyObject *)__pyx_v_thisReadSeq)); PyTuple_SET_ITEM(__pyx_t_7, 3, ((PyObject *)__pyx_v_thisReadSeq)); __Pyx_GIVEREF(((PyObject *)__pyx_v_thisReadSeq)); __Pyx_INCREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 5, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_3 = 0; __pyx_t_14 = 0; __pyx_t_8 = 0; __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7variant_Variant)), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; __pyx_r = ((struct __pyx_obj_7variant_Variant *)__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L0; __pyx_r = ((struct __pyx_obj_7variant_Variant *)Py_None); __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("assembler.extractVarFromBubblePath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_thisRefSeq); __Pyx_XDECREF(__pyx_v_thisReadSeq); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":1293 * #################################################################################################### * * cdef void loadReferenceIntoGraph(DeBruijnGraph* theGraph, char* refSeq, int refStart, int kmerSize): # <<<<<<<<<<<<<< * """ * Load k-mers from the specified reference sequence into the */ static void __pyx_f_9assembler_loadReferenceIntoGraph(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, char *__pyx_v_refSeq, int __pyx_v_refStart, int __pyx_v_kmerSize) { int __pyx_v_i; int __pyx_v_lenRef; __pyx_t_9assembler_Node __pyx_v_tempStartNode; __pyx_t_9assembler_Node __pyx_v_tempEndNode; __Pyx_RefNannyDeclarations long __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("loadReferenceIntoGraph", 0); /* "assembler.pyx":1298 * graph. * """ * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int lenRef = strlen(refSeq) * cdef Node tempStartNode */ __pyx_v_i = 0; /* "assembler.pyx":1299 * """ * cdef int i = 0 * cdef int lenRef = strlen(refSeq) # <<<<<<<<<<<<<< * cdef Node tempStartNode * cdef Node tempEndNode */ __pyx_v_lenRef = strlen(__pyx_v_refSeq); /* "assembler.pyx":1303 * cdef Node tempEndNode * * for i in range( (lenRef-kmerSize) - 1): # <<<<<<<<<<<<<< * * tempStartNode.sequence = refSeq + i */ __pyx_t_1 = ((__pyx_v_lenRef - __pyx_v_kmerSize) - 1); for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":1305 * for i in range( (lenRef-kmerSize) - 1): * * tempStartNode.sequence = refSeq + i # <<<<<<<<<<<<<< * tempStartNode.kmerSize = kmerSize * tempStartNode.colours = REF */ __pyx_v_tempStartNode.sequence = (__pyx_v_refSeq + __pyx_v_i); /* "assembler.pyx":1306 * * tempStartNode.sequence = refSeq + i * tempStartNode.kmerSize = kmerSize # <<<<<<<<<<<<<< * tempStartNode.colours = REF * tempStartNode.position = refStart + i */ __pyx_v_tempStartNode.kmerSize = __pyx_v_kmerSize; /* "assembler.pyx":1307 * tempStartNode.sequence = refSeq + i * tempStartNode.kmerSize = kmerSize * tempStartNode.colours = REF # <<<<<<<<<<<<<< * tempStartNode.position = refStart + i * tempStartNode.weight = 1 */ __pyx_v_tempStartNode.colours = __pyx_v_9assembler_REF; /* "assembler.pyx":1308 * tempStartNode.kmerSize = kmerSize * tempStartNode.colours = REF * tempStartNode.position = refStart + i # <<<<<<<<<<<<<< * tempStartNode.weight = 1 * */ __pyx_v_tempStartNode.position = (__pyx_v_refStart + __pyx_v_i); /* "assembler.pyx":1309 * tempStartNode.colours = REF * tempStartNode.position = refStart + i * tempStartNode.weight = 1 # <<<<<<<<<<<<<< * * tempEndNode.sequence = refSeq + i + 1 */ __pyx_v_tempStartNode.weight = 1.0; /* "assembler.pyx":1311 * tempStartNode.weight = 1 * * tempEndNode.sequence = refSeq + i + 1 # <<<<<<<<<<<<<< * tempEndNode.kmerSize = kmerSize * tempEndNode.colours = REF */ __pyx_v_tempEndNode.sequence = ((__pyx_v_refSeq + __pyx_v_i) + 1); /* "assembler.pyx":1312 * * tempEndNode.sequence = refSeq + i + 1 * tempEndNode.kmerSize = kmerSize # <<<<<<<<<<<<<< * tempEndNode.colours = REF * tempEndNode.position = refStart + i + 1 */ __pyx_v_tempEndNode.kmerSize = __pyx_v_kmerSize; /* "assembler.pyx":1313 * tempEndNode.sequence = refSeq + i + 1 * tempEndNode.kmerSize = kmerSize * tempEndNode.colours = REF # <<<<<<<<<<<<<< * tempEndNode.position = refStart + i + 1 * tempEndNode.weight = 1 */ __pyx_v_tempEndNode.colours = __pyx_v_9assembler_REF; /* "assembler.pyx":1314 * tempEndNode.kmerSize = kmerSize * tempEndNode.colours = REF * tempEndNode.position = refStart + i + 1 # <<<<<<<<<<<<<< * tempEndNode.weight = 1 * */ __pyx_v_tempEndNode.position = ((__pyx_v_refStart + __pyx_v_i) + 1); /* "assembler.pyx":1315 * tempEndNode.colours = REF * tempEndNode.position = refStart + i + 1 * tempEndNode.weight = 1 # <<<<<<<<<<<<<< * * DeBruijnGraph_AddEdge(theGraph, &tempStartNode, &tempEndNode, 1) */ __pyx_v_tempEndNode.weight = 1.0; /* "assembler.pyx":1317 * tempEndNode.weight = 1 * * DeBruijnGraph_AddEdge(theGraph, &tempStartNode, &tempEndNode, 1) # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_f_9assembler_DeBruijnGraph_AddEdge(__pyx_v_theGraph, (&__pyx_v_tempStartNode), (&__pyx_v_tempEndNode), 1.0); } __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":1321 * ################################################################################################### * * cdef char* createReverseComplementSequence(char* theSeq, int seqLen): # <<<<<<<<<<<<<< * """ * Create and return a string containing the reverse complement of the specified */ static char *__pyx_f_9assembler_createReverseComplementSequence(char *__pyx_v_theSeq, int __pyx_v_seqLen) { char *__pyx_v_newSeq; int __pyx_v_i; char *__pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; __Pyx_RefNannySetupContext("createReverseComplementSequence", 0); /* "assembler.pyx":1326 * sequence. * """ * cdef char* newSeq = (malloc(sizeof(char)*(seqLen+1))) # <<<<<<<<<<<<<< * cdef int i = 0 * */ __pyx_v_newSeq = ((char *)malloc(((sizeof(char)) * (__pyx_v_seqLen + 1)))); /* "assembler.pyx":1327 * """ * cdef char* newSeq = (malloc(sizeof(char)*(seqLen+1))) * cdef int i = 0 # <<<<<<<<<<<<<< * * for i in range(seqLen): */ __pyx_v_i = 0; /* "assembler.pyx":1329 * cdef int i = 0 * * for i in range(seqLen): # <<<<<<<<<<<<<< * if theSeq[i] == 'A': * newSeq[seqLen - i - 1] = 'T' */ __pyx_t_1 = __pyx_v_seqLen; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "assembler.pyx":1330 * * for i in range(seqLen): * if theSeq[i] == 'A': # <<<<<<<<<<<<<< * newSeq[seqLen - i - 1] = 'T' * elif theSeq[i] == 'T': */ __pyx_t_3 = ((__pyx_v_theSeq[__pyx_v_i]) == 'A'); if (__pyx_t_3) { /* "assembler.pyx":1331 * for i in range(seqLen): * if theSeq[i] == 'A': * newSeq[seqLen - i - 1] = 'T' # <<<<<<<<<<<<<< * elif theSeq[i] == 'T': * newSeq[seqLen - i - 1] = 'A' */ (__pyx_v_newSeq[((__pyx_v_seqLen - __pyx_v_i) - 1)]) = 'T'; goto __pyx_L5; } /* "assembler.pyx":1332 * if theSeq[i] == 'A': * newSeq[seqLen - i - 1] = 'T' * elif theSeq[i] == 'T': # <<<<<<<<<<<<<< * newSeq[seqLen - i - 1] = 'A' * elif theSeq[i] == 'C': */ __pyx_t_3 = ((__pyx_v_theSeq[__pyx_v_i]) == 'T'); if (__pyx_t_3) { /* "assembler.pyx":1333 * newSeq[seqLen - i - 1] = 'T' * elif theSeq[i] == 'T': * newSeq[seqLen - i - 1] = 'A' # <<<<<<<<<<<<<< * elif theSeq[i] == 'C': * newSeq[seqLen - i - 1] = 'G' */ (__pyx_v_newSeq[((__pyx_v_seqLen - __pyx_v_i) - 1)]) = 'A'; goto __pyx_L5; } /* "assembler.pyx":1334 * elif theSeq[i] == 'T': * newSeq[seqLen - i - 1] = 'A' * elif theSeq[i] == 'C': # <<<<<<<<<<<<<< * newSeq[seqLen - i - 1] = 'G' * elif theSeq[i] == 'G': */ __pyx_t_3 = ((__pyx_v_theSeq[__pyx_v_i]) == 'C'); if (__pyx_t_3) { /* "assembler.pyx":1335 * newSeq[seqLen - i - 1] = 'A' * elif theSeq[i] == 'C': * newSeq[seqLen - i - 1] = 'G' # <<<<<<<<<<<<<< * elif theSeq[i] == 'G': * newSeq[seqLen - i - 1] = 'C' */ (__pyx_v_newSeq[((__pyx_v_seqLen - __pyx_v_i) - 1)]) = 'G'; goto __pyx_L5; } /* "assembler.pyx":1336 * elif theSeq[i] == 'C': * newSeq[seqLen - i - 1] = 'G' * elif theSeq[i] == 'G': # <<<<<<<<<<<<<< * newSeq[seqLen - i - 1] = 'C' * else: */ __pyx_t_3 = ((__pyx_v_theSeq[__pyx_v_i]) == 'G'); if (__pyx_t_3) { /* "assembler.pyx":1337 * newSeq[seqLen - i - 1] = 'G' * elif theSeq[i] == 'G': * newSeq[seqLen - i - 1] = 'C' # <<<<<<<<<<<<<< * else: * newSeq[seqLen - i - 1] = theSeq[i] */ (__pyx_v_newSeq[((__pyx_v_seqLen - __pyx_v_i) - 1)]) = 'C'; goto __pyx_L5; } /*else*/ { /* "assembler.pyx":1339 * newSeq[seqLen - i - 1] = 'C' * else: * newSeq[seqLen - i - 1] = theSeq[i] # <<<<<<<<<<<<<< * * newSeq[seqLen] = 0 */ (__pyx_v_newSeq[((__pyx_v_seqLen - __pyx_v_i) - 1)]) = (__pyx_v_theSeq[__pyx_v_i]); } __pyx_L5:; } /* "assembler.pyx":1341 * newSeq[seqLen - i - 1] = theSeq[i] * * newSeq[seqLen] = 0 # <<<<<<<<<<<<<< * return newSeq * */ (__pyx_v_newSeq[__pyx_v_seqLen]) = 0; /* "assembler.pyx":1342 * * newSeq[seqLen] = 0 * return newSeq # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_r = __pyx_v_newSeq; goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "assembler.pyx":1346 * ################################################################################################### * * cdef void loadReadIntoGraph(cAlignedRead* theRead, DeBruijnGraph* theGraph, int minQual, int kmerSize): # <<<<<<<<<<<<<< * """ * """ */ static void __pyx_f_9assembler_loadReadIntoGraph(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead, __pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, int __pyx_v_minQual, int __pyx_v_kmerSize) { char *__pyx_v_theSeq; char *__pyx_v_theQuals; int __pyx_v_length; CYTHON_UNUSED int __pyx_v_startPos; int __pyx_v_i; int __pyx_v_j; int __pyx_v_thisMinQual; int __pyx_v_NsInKmer; __pyx_t_9assembler_Node __pyx_v_tempStartNode; __pyx_t_9assembler_Node __pyx_v_tempEndNode; __Pyx_RefNannyDeclarations char *__pyx_t_1; short __pyx_t_2; int __pyx_t_3; long __pyx_t_4; long __pyx_t_5; int __pyx_t_6; char __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; __Pyx_RefNannySetupContext("loadReadIntoGraph", 0); /* "assembler.pyx":1349 * """ * """ * cdef char* theSeq = theRead.seq # <<<<<<<<<<<<<< * cdef char* theQuals = theRead.qual * cdef int length = theRead.rlen */ __pyx_t_1 = __pyx_v_theRead->seq; __pyx_v_theSeq = __pyx_t_1; /* "assembler.pyx":1350 * """ * cdef char* theSeq = theRead.seq * cdef char* theQuals = theRead.qual # <<<<<<<<<<<<<< * cdef int length = theRead.rlen * cdef int startPos = theRead.pos */ __pyx_t_1 = __pyx_v_theRead->qual; __pyx_v_theQuals = __pyx_t_1; /* "assembler.pyx":1351 * cdef char* theSeq = theRead.seq * cdef char* theQuals = theRead.qual * cdef int length = theRead.rlen # <<<<<<<<<<<<<< * cdef int startPos = theRead.pos * cdef int i = 0 */ __pyx_t_2 = __pyx_v_theRead->rlen; __pyx_v_length = __pyx_t_2; /* "assembler.pyx":1352 * cdef char* theQuals = theRead.qual * cdef int length = theRead.rlen * cdef int startPos = theRead.pos # <<<<<<<<<<<<<< * cdef int i = 0 * cdef int j = 0 */ __pyx_t_3 = __pyx_v_theRead->pos; __pyx_v_startPos = __pyx_t_3; /* "assembler.pyx":1353 * cdef int length = theRead.rlen * cdef int startPos = theRead.pos * cdef int i = 0 # <<<<<<<<<<<<<< * cdef int j = 0 * cdef int thisMinQual = 100000000 */ __pyx_v_i = 0; /* "assembler.pyx":1354 * cdef int startPos = theRead.pos * cdef int i = 0 * cdef int j = 0 # <<<<<<<<<<<<<< * cdef int thisMinQual = 100000000 * cdef int NsInKmer = 0 */ __pyx_v_j = 0; /* "assembler.pyx":1355 * cdef int i = 0 * cdef int j = 0 * cdef int thisMinQual = 100000000 # <<<<<<<<<<<<<< * cdef int NsInKmer = 0 * cdef Node tempStartNode */ __pyx_v_thisMinQual = 100000000; /* "assembler.pyx":1356 * cdef int j = 0 * cdef int thisMinQual = 100000000 * cdef int NsInKmer = 0 # <<<<<<<<<<<<<< * cdef Node tempStartNode * cdef Node tempEndNode */ __pyx_v_NsInKmer = 0; /* "assembler.pyx":1360 * cdef Node tempEndNode * * for i in range( (length-kmerSize) - 1): # <<<<<<<<<<<<<< * thisMinQual = 100000000 * NsInKmer = 0 */ __pyx_t_4 = ((__pyx_v_length - __pyx_v_kmerSize) - 1); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_4; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "assembler.pyx":1361 * * for i in range( (length-kmerSize) - 1): * thisMinQual = 100000000 # <<<<<<<<<<<<<< * NsInKmer = 0 * */ __pyx_v_thisMinQual = 100000000; /* "assembler.pyx":1362 * for i in range( (length-kmerSize) - 1): * thisMinQual = 100000000 * NsInKmer = 0 # <<<<<<<<<<<<<< * * for j in range(i, i+kmerSize+1): */ __pyx_v_NsInKmer = 0; /* "assembler.pyx":1364 * NsInKmer = 0 * * for j in range(i, i+kmerSize+1): # <<<<<<<<<<<<<< * * thisMinQual = min(thisMinQual, theQuals[j]) */ __pyx_t_5 = ((__pyx_v_i + __pyx_v_kmerSize) + 1); for (__pyx_t_6 = __pyx_v_i; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_j = __pyx_t_6; /* "assembler.pyx":1366 * for j in range(i, i+kmerSize+1): * * thisMinQual = min(thisMinQual, theQuals[j]) # <<<<<<<<<<<<<< * * if theSeq[j] == 'N': */ __pyx_t_7 = (__pyx_v_theQuals[__pyx_v_j]); __pyx_t_8 = __pyx_v_thisMinQual; if ((__pyx_t_7 < __pyx_t_8)) { __pyx_t_9 = __pyx_t_7; } else { __pyx_t_9 = __pyx_t_8; } __pyx_v_thisMinQual = __pyx_t_9; /* "assembler.pyx":1368 * thisMinQual = min(thisMinQual, theQuals[j]) * * if theSeq[j] == 'N': # <<<<<<<<<<<<<< * NsInKmer = 1 * */ __pyx_t_10 = ((__pyx_v_theSeq[__pyx_v_j]) == 'N'); if (__pyx_t_10) { /* "assembler.pyx":1369 * * if theSeq[j] == 'N': * NsInKmer = 1 # <<<<<<<<<<<<<< * * if thisMinQual >= minQual and NsInKmer == 0: */ __pyx_v_NsInKmer = 1; goto __pyx_L7; } __pyx_L7:; } /* "assembler.pyx":1371 * NsInKmer = 1 * * if thisMinQual >= minQual and NsInKmer == 0: # <<<<<<<<<<<<<< * * tempStartNode.sequence = theSeq + i */ __pyx_t_10 = (__pyx_v_thisMinQual >= __pyx_v_minQual); if (__pyx_t_10) { __pyx_t_11 = (__pyx_v_NsInKmer == 0); __pyx_t_12 = __pyx_t_11; } else { __pyx_t_12 = __pyx_t_10; } if (__pyx_t_12) { /* "assembler.pyx":1373 * if thisMinQual >= minQual and NsInKmer == 0: * * tempStartNode.sequence = theSeq + i # <<<<<<<<<<<<<< * tempStartNode.kmerSize = kmerSize * tempStartNode.colours = READ */ __pyx_v_tempStartNode.sequence = (__pyx_v_theSeq + __pyx_v_i); /* "assembler.pyx":1374 * * tempStartNode.sequence = theSeq + i * tempStartNode.kmerSize = kmerSize # <<<<<<<<<<<<<< * tempStartNode.colours = READ * tempStartNode.position = - 1 */ __pyx_v_tempStartNode.kmerSize = __pyx_v_kmerSize; /* "assembler.pyx":1375 * tempStartNode.sequence = theSeq + i * tempStartNode.kmerSize = kmerSize * tempStartNode.colours = READ # <<<<<<<<<<<<<< * tempStartNode.position = - 1 * tempStartNode.weight = thisMinQual */ __pyx_v_tempStartNode.colours = __pyx_v_9assembler_READ; /* "assembler.pyx":1376 * tempStartNode.kmerSize = kmerSize * tempStartNode.colours = READ * tempStartNode.position = - 1 # <<<<<<<<<<<<<< * tempStartNode.weight = thisMinQual * */ __pyx_v_tempStartNode.position = -1; /* "assembler.pyx":1377 * tempStartNode.colours = READ * tempStartNode.position = - 1 * tempStartNode.weight = thisMinQual # <<<<<<<<<<<<<< * * tempEndNode.sequence = theSeq + i + 1 */ __pyx_v_tempStartNode.weight = __pyx_v_thisMinQual; /* "assembler.pyx":1379 * tempStartNode.weight = thisMinQual * * tempEndNode.sequence = theSeq + i + 1 # <<<<<<<<<<<<<< * tempEndNode.kmerSize = kmerSize * tempEndNode.colours = READ */ __pyx_v_tempEndNode.sequence = ((__pyx_v_theSeq + __pyx_v_i) + 1); /* "assembler.pyx":1380 * * tempEndNode.sequence = theSeq + i + 1 * tempEndNode.kmerSize = kmerSize # <<<<<<<<<<<<<< * tempEndNode.colours = READ * tempEndNode.position = -1 */ __pyx_v_tempEndNode.kmerSize = __pyx_v_kmerSize; /* "assembler.pyx":1381 * tempEndNode.sequence = theSeq + i + 1 * tempEndNode.kmerSize = kmerSize * tempEndNode.colours = READ # <<<<<<<<<<<<<< * tempEndNode.position = -1 * tempEndNode.weight = thisMinQual */ __pyx_v_tempEndNode.colours = __pyx_v_9assembler_READ; /* "assembler.pyx":1382 * tempEndNode.kmerSize = kmerSize * tempEndNode.colours = READ * tempEndNode.position = -1 # <<<<<<<<<<<<<< * tempEndNode.weight = thisMinQual * */ __pyx_v_tempEndNode.position = -1; /* "assembler.pyx":1383 * tempEndNode.colours = READ * tempEndNode.position = -1 * tempEndNode.weight = thisMinQual # <<<<<<<<<<<<<< * * DeBruijnGraph_AddEdge(theGraph, &tempStartNode, &tempEndNode, thisMinQual) */ __pyx_v_tempEndNode.weight = __pyx_v_thisMinQual; /* "assembler.pyx":1385 * tempEndNode.weight = thisMinQual * * DeBruijnGraph_AddEdge(theGraph, &tempStartNode, &tempEndNode, thisMinQual) # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_f_9assembler_DeBruijnGraph_AddEdge(__pyx_v_theGraph, (&__pyx_v_tempStartNode), (&__pyx_v_tempEndNode), __pyx_v_thisMinQual); goto __pyx_L8; } __pyx_L8:; } __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":1389 * ################################################################################################### * * cdef void loadBAMDataIntoGraph(DeBruijnGraph* theGraph, list readBuffers, int assembleBadReads, int assembleBrokenPairs, int minQual, int kmerSize): # <<<<<<<<<<<<<< * """ * Load k-mers from the specified BAM file into the graph. K-mers containing */ static void __pyx_f_9assembler_loadBAMDataIntoGraph(__pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph, PyObject *__pyx_v_readBuffers, int __pyx_v_assembleBadReads, int __pyx_v_assembleBrokenPairs, int __pyx_v_minQual, int __pyx_v_kmerSize) { struct __pyx_obj_7cwindow_bamReadBuffer *__pyx_v_theBuffer = 0; __pyx_t_15samtoolsWrapper_cAlignedRead **__pyx_v_readStart; __pyx_t_15samtoolsWrapper_cAlignedRead **__pyx_v_readEnd; __pyx_t_15samtoolsWrapper_cAlignedRead **__pyx_v_badReadStart; __pyx_t_15samtoolsWrapper_cAlignedRead **__pyx_v_badReadEnd; __pyx_t_15samtoolsWrapper_cAlignedRead **__pyx_v_brokenReadStart; __pyx_t_15samtoolsWrapper_cAlignedRead **__pyx_v_brokenReadEnd; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; __pyx_t_15samtoolsWrapper_cAlignedRead **__pyx_t_4; int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("loadBAMDataIntoGraph", 0); /* "assembler.pyx":1396 * cdef bamReadBuffer theBuffer * * for theBuffer in readBuffers: # <<<<<<<<<<<<<< * * readStart = theBuffer.reads.windowStart */ if (unlikely(((PyObject *)__pyx_v_readBuffers) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = ((PyObject *)__pyx_v_readBuffers); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_7cwindow_bamReadBuffer))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF(((PyObject *)__pyx_v_theBuffer)); __pyx_v_theBuffer = ((struct __pyx_obj_7cwindow_bamReadBuffer *)__pyx_t_3); __pyx_t_3 = 0; /* "assembler.pyx":1398 * for theBuffer in readBuffers: * * readStart = theBuffer.reads.windowStart # <<<<<<<<<<<<<< * readEnd = theBuffer.reads.windowEnd * badReadStart = theBuffer.badReads.windowStart */ __pyx_t_4 = __pyx_v_theBuffer->reads->windowStart; __pyx_v_readStart = __pyx_t_4; /* "assembler.pyx":1399 * * readStart = theBuffer.reads.windowStart * readEnd = theBuffer.reads.windowEnd # <<<<<<<<<<<<<< * badReadStart = theBuffer.badReads.windowStart * badReadEnd = theBuffer.badReads.windowEnd */ __pyx_t_4 = __pyx_v_theBuffer->reads->windowEnd; __pyx_v_readEnd = __pyx_t_4; /* "assembler.pyx":1400 * readStart = theBuffer.reads.windowStart * readEnd = theBuffer.reads.windowEnd * badReadStart = theBuffer.badReads.windowStart # <<<<<<<<<<<<<< * badReadEnd = theBuffer.badReads.windowEnd * brokenReadStart = theBuffer.brokenMates.windowStart */ __pyx_t_4 = __pyx_v_theBuffer->badReads->windowStart; __pyx_v_badReadStart = __pyx_t_4; /* "assembler.pyx":1401 * readEnd = theBuffer.reads.windowEnd * badReadStart = theBuffer.badReads.windowStart * badReadEnd = theBuffer.badReads.windowEnd # <<<<<<<<<<<<<< * brokenReadStart = theBuffer.brokenMates.windowStart * brokenReadEnd = theBuffer.brokenMates.windowEnd */ __pyx_t_4 = __pyx_v_theBuffer->badReads->windowEnd; __pyx_v_badReadEnd = __pyx_t_4; /* "assembler.pyx":1402 * badReadStart = theBuffer.badReads.windowStart * badReadEnd = theBuffer.badReads.windowEnd * brokenReadStart = theBuffer.brokenMates.windowStart # <<<<<<<<<<<<<< * brokenReadEnd = theBuffer.brokenMates.windowEnd * */ __pyx_t_4 = __pyx_v_theBuffer->brokenMates->windowStart; __pyx_v_brokenReadStart = __pyx_t_4; /* "assembler.pyx":1403 * badReadEnd = theBuffer.badReads.windowEnd * brokenReadStart = theBuffer.brokenMates.windowStart * brokenReadEnd = theBuffer.brokenMates.windowEnd # <<<<<<<<<<<<<< * * while readStart != readEnd: */ __pyx_t_4 = __pyx_v_theBuffer->brokenMates->windowEnd; __pyx_v_brokenReadEnd = __pyx_t_4; /* "assembler.pyx":1405 * brokenReadEnd = theBuffer.brokenMates.windowEnd * * while readStart != readEnd: # <<<<<<<<<<<<<< * if not Read_IsQCFail(readStart[0]): * loadReadIntoGraph(readStart[0], theGraph, minQual, kmerSize) */ while (1) { __pyx_t_5 = (__pyx_v_readStart != __pyx_v_readEnd); if (!__pyx_t_5) break; /* "assembler.pyx":1406 * * while readStart != readEnd: * if not Read_IsQCFail(readStart[0]): # <<<<<<<<<<<<<< * loadReadIntoGraph(readStart[0], theGraph, minQual, kmerSize) * */ __pyx_t_5 = (!__pyx_f_15samtoolsWrapper_Read_IsQCFail((__pyx_v_readStart[0]))); if (__pyx_t_5) { /* "assembler.pyx":1407 * while readStart != readEnd: * if not Read_IsQCFail(readStart[0]): * loadReadIntoGraph(readStart[0], theGraph, minQual, kmerSize) # <<<<<<<<<<<<<< * * readStart += 1 */ __pyx_f_9assembler_loadReadIntoGraph((__pyx_v_readStart[0]), __pyx_v_theGraph, __pyx_v_minQual, __pyx_v_kmerSize); goto __pyx_L7; } __pyx_L7:; /* "assembler.pyx":1409 * loadReadIntoGraph(readStart[0], theGraph, minQual, kmerSize) * * readStart += 1 # <<<<<<<<<<<<<< * * if assembleBadReads: */ __pyx_v_readStart = (__pyx_v_readStart + 1); } /* "assembler.pyx":1411 * readStart += 1 * * if assembleBadReads: # <<<<<<<<<<<<<< * while badReadStart != badReadEnd: * if not Read_IsQCFail(badReadStart[0]): */ if (__pyx_v_assembleBadReads) { /* "assembler.pyx":1412 * * if assembleBadReads: * while badReadStart != badReadEnd: # <<<<<<<<<<<<<< * if not Read_IsQCFail(badReadStart[0]): * loadReadIntoGraph(badReadStart[0], theGraph, minQual, kmerSize) */ while (1) { __pyx_t_5 = (__pyx_v_badReadStart != __pyx_v_badReadEnd); if (!__pyx_t_5) break; /* "assembler.pyx":1413 * if assembleBadReads: * while badReadStart != badReadEnd: * if not Read_IsQCFail(badReadStart[0]): # <<<<<<<<<<<<<< * loadReadIntoGraph(badReadStart[0], theGraph, minQual, kmerSize) * */ __pyx_t_5 = (!__pyx_f_15samtoolsWrapper_Read_IsQCFail((__pyx_v_badReadStart[0]))); if (__pyx_t_5) { /* "assembler.pyx":1414 * while badReadStart != badReadEnd: * if not Read_IsQCFail(badReadStart[0]): * loadReadIntoGraph(badReadStart[0], theGraph, minQual, kmerSize) # <<<<<<<<<<<<<< * * badReadStart += 1 */ __pyx_f_9assembler_loadReadIntoGraph((__pyx_v_badReadStart[0]), __pyx_v_theGraph, __pyx_v_minQual, __pyx_v_kmerSize); goto __pyx_L11; } __pyx_L11:; /* "assembler.pyx":1416 * loadReadIntoGraph(badReadStart[0], theGraph, minQual, kmerSize) * * badReadStart += 1 # <<<<<<<<<<<<<< * * if assembleBrokenPairs: */ __pyx_v_badReadStart = (__pyx_v_badReadStart + 1); } goto __pyx_L8; } __pyx_L8:; /* "assembler.pyx":1418 * badReadStart += 1 * * if assembleBrokenPairs: # <<<<<<<<<<<<<< * while brokenReadStart != brokenReadEnd: * if not Read_IsQCFail(brokenReadStart[0]): */ if (__pyx_v_assembleBrokenPairs) { /* "assembler.pyx":1419 * * if assembleBrokenPairs: * while brokenReadStart != brokenReadEnd: # <<<<<<<<<<<<<< * if not Read_IsQCFail(brokenReadStart[0]): * loadReadIntoGraph(brokenReadStart[0], theGraph, minQual, kmerSize) */ while (1) { __pyx_t_5 = (__pyx_v_brokenReadStart != __pyx_v_brokenReadEnd); if (!__pyx_t_5) break; /* "assembler.pyx":1420 * if assembleBrokenPairs: * while brokenReadStart != brokenReadEnd: * if not Read_IsQCFail(brokenReadStart[0]): # <<<<<<<<<<<<<< * loadReadIntoGraph(brokenReadStart[0], theGraph, minQual, kmerSize) * */ __pyx_t_5 = (!__pyx_f_15samtoolsWrapper_Read_IsQCFail((__pyx_v_brokenReadStart[0]))); if (__pyx_t_5) { /* "assembler.pyx":1421 * while brokenReadStart != brokenReadEnd: * if not Read_IsQCFail(brokenReadStart[0]): * loadReadIntoGraph(brokenReadStart[0], theGraph, minQual, kmerSize) # <<<<<<<<<<<<<< * * brokenReadStart += 1 */ __pyx_f_9assembler_loadReadIntoGraph((__pyx_v_brokenReadStart[0]), __pyx_v_theGraph, __pyx_v_minQual, __pyx_v_kmerSize); goto __pyx_L15; } __pyx_L15:; /* "assembler.pyx":1423 * loadReadIntoGraph(brokenReadStart[0], theGraph, minQual, kmerSize) * * brokenReadStart += 1 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_brokenReadStart = (__pyx_v_brokenReadStart + 1); } goto __pyx_L12; } __pyx_L12:; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("assembler.loadBAMDataIntoGraph", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_theBuffer); __Pyx_RefNannyFinishContext(); } /* "assembler.pyx":1427 * ################################################################################################### * * cdef list assembleReadsAndDetectVariants(char* chrom, int assemStart, int assemEnd, int refStart, int refEnd, list readBuffers, char* refSeq, options): # <<<<<<<<<<<<<< * """ * """ */ static PyObject *__pyx_f_9assembler_assembleReadsAndDetectVariants(char *__pyx_v_chrom, int __pyx_v_assemStart, int __pyx_v_assemEnd, int __pyx_v_refStart, int __pyx_v_refEnd, PyObject *__pyx_v_readBuffers, char *__pyx_v_refSeq, PyObject *__pyx_v_options) { int __pyx_v_minQual; CYTHON_UNUSED int __pyx_v_minMapQual; CYTHON_UNUSED int __pyx_v_largestVariant; int __pyx_v_minReads; int __pyx_v_assembleBadReads; int __pyx_v_assembleBrokenPairs; int __pyx_v_kmerSize; int __pyx_v_minWeight; int __pyx_v_nBuckets; int __pyx_v_verbosity; PyObject *__pyx_v_theVars = 0; __pyx_t_9assembler_DeBruijnGraph *__pyx_v_theGraph; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assembleReadsAndDetectVariants", 0); /* "assembler.pyx":1430 * """ * """ * cdef int minQual = options.minBaseQual # <<<<<<<<<<<<<< * cdef int minMapQual = options.minMapQual * cdef int largestVariant = options.assemblyRegionSize */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__minBaseQual); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_minQual = __pyx_t_2; /* "assembler.pyx":1431 * """ * cdef int minQual = options.minBaseQual * cdef int minMapQual = options.minMapQual # <<<<<<<<<<<<<< * cdef int largestVariant = options.assemblyRegionSize * cdef int minReads = options.minReads */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__minMapQual); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_minMapQual = __pyx_t_2; /* "assembler.pyx":1432 * cdef int minQual = options.minBaseQual * cdef int minMapQual = options.minMapQual * cdef int largestVariant = options.assemblyRegionSize # <<<<<<<<<<<<<< * cdef int minReads = options.minReads * cdef int assembleBadReads = options.assembleBadReads */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__assemblyRegionSize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_largestVariant = __pyx_t_2; /* "assembler.pyx":1433 * cdef int minMapQual = options.minMapQual * cdef int largestVariant = options.assemblyRegionSize * cdef int minReads = options.minReads # <<<<<<<<<<<<<< * cdef int assembleBadReads = options.assembleBadReads * cdef int assembleBrokenPairs = options.assembleBrokenPairs */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__minReads); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_minReads = __pyx_t_2; /* "assembler.pyx":1434 * cdef int largestVariant = options.assemblyRegionSize * cdef int minReads = options.minReads * cdef int assembleBadReads = options.assembleBadReads # <<<<<<<<<<<<<< * cdef int assembleBrokenPairs = options.assembleBrokenPairs * cdef int kmerSize = options.assemblerKmerSize */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__assembleBadReads); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_assembleBadReads = __pyx_t_2; /* "assembler.pyx":1435 * cdef int minReads = options.minReads * cdef int assembleBadReads = options.assembleBadReads * cdef int assembleBrokenPairs = options.assembleBrokenPairs # <<<<<<<<<<<<<< * cdef int kmerSize = options.assemblerKmerSize * cdef int minWeight = minReads*minQual */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__assembleBrokenPairs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_assembleBrokenPairs = __pyx_t_2; /* "assembler.pyx":1436 * cdef int assembleBadReads = options.assembleBadReads * cdef int assembleBrokenPairs = options.assembleBrokenPairs * cdef int kmerSize = options.assemblerKmerSize # <<<<<<<<<<<<<< * cdef int minWeight = minReads*minQual * cdef int nBuckets = 5000 */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__assemblerKmerSize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_kmerSize = __pyx_t_2; /* "assembler.pyx":1437 * cdef int assembleBrokenPairs = options.assembleBrokenPairs * cdef int kmerSize = options.assemblerKmerSize * cdef int minWeight = minReads*minQual # <<<<<<<<<<<<<< * cdef int nBuckets = 5000 * cdef int verbosity = options.verbosity */ __pyx_v_minWeight = (__pyx_v_minReads * __pyx_v_minQual); /* "assembler.pyx":1438 * cdef int kmerSize = options.assemblerKmerSize * cdef int minWeight = minReads*minQual * cdef int nBuckets = 5000 # <<<<<<<<<<<<<< * cdef int verbosity = options.verbosity * cdef list theVars = [] */ __pyx_v_nBuckets = 5000; /* "assembler.pyx":1439 * cdef int minWeight = minReads*minQual * cdef int nBuckets = 5000 * cdef int verbosity = options.verbosity # <<<<<<<<<<<<<< * cdef list theVars = [] * */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__verbosity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_verbosity = __pyx_t_2; /* "assembler.pyx":1440 * cdef int nBuckets = 5000 * cdef int verbosity = options.verbosity * cdef list theVars = [] # <<<<<<<<<<<<<< * * if verbosity >= 3: */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_theVars = __pyx_t_1; __pyx_t_1 = 0; /* "assembler.pyx":1442 * cdef list theVars = [] * * if verbosity >= 3: # <<<<<<<<<<<<<< * logger.debug("Assembling region %s:%s-%s" %(chrom, assemStart, assemEnd)) * */ __pyx_t_3 = (__pyx_v_verbosity >= 3); if (__pyx_t_3) { /* "assembler.pyx":1443 * * if verbosity >= 3: * logger.debug("Assembling region %s:%s-%s" %(chrom, assemStart, assemEnd)) # <<<<<<<<<<<<<< * * cdef DeBruijnGraph* theGraph = createDeBruijnGraph(kmerSize, nBuckets) */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__debug); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyBytes_FromString(__pyx_v_chrom); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); __pyx_t_5 = PyInt_FromLong(__pyx_v_assemStart); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyInt_FromLong(__pyx_v_assemEnd); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_1)); __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_41), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_6)); __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_6)); __Pyx_GIVEREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L3; } __pyx_L3:; /* "assembler.pyx":1445 * logger.debug("Assembling region %s:%s-%s" %(chrom, assemStart, assemEnd)) * * cdef DeBruijnGraph* theGraph = createDeBruijnGraph(kmerSize, nBuckets) # <<<<<<<<<<<<<< * * loadReferenceIntoGraph(theGraph, refSeq, refStart, kmerSize) */ __pyx_v_theGraph = __pyx_f_9assembler_createDeBruijnGraph(__pyx_v_kmerSize, __pyx_v_nBuckets); /* "assembler.pyx":1447 * cdef DeBruijnGraph* theGraph = createDeBruijnGraph(kmerSize, nBuckets) * * loadReferenceIntoGraph(theGraph, refSeq, refStart, kmerSize) # <<<<<<<<<<<<<< * loadBAMDataIntoGraph(theGraph, readBuffers, assembleBadReads, assembleBrokenPairs, minQual, kmerSize) * */ __pyx_f_9assembler_loadReferenceIntoGraph(__pyx_v_theGraph, __pyx_v_refSeq, __pyx_v_refStart, __pyx_v_kmerSize); /* "assembler.pyx":1448 * * loadReferenceIntoGraph(theGraph, refSeq, refStart, kmerSize) * loadBAMDataIntoGraph(theGraph, readBuffers, assembleBadReads, assembleBrokenPairs, minQual, kmerSize) # <<<<<<<<<<<<<< * * # If this is true, then don't allow cycles in the graph. */ __pyx_f_9assembler_loadBAMDataIntoGraph(__pyx_v_theGraph, __pyx_v_readBuffers, __pyx_v_assembleBadReads, __pyx_v_assembleBrokenPairs, __pyx_v_minQual, __pyx_v_kmerSize); /* "assembler.pyx":1451 * * # If this is true, then don't allow cycles in the graph. * if options.noCycles: # <<<<<<<<<<<<<< * while detectCyclesInGraph_Recursive(theGraph, minWeight): * if kmerSize > 50: */ __pyx_t_6 = PyObject_GetAttr(__pyx_v_options, __pyx_n_s__noCycles); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_3) { /* "assembler.pyx":1452 * # If this is true, then don't allow cycles in the graph. * if options.noCycles: * while detectCyclesInGraph_Recursive(theGraph, minWeight): # <<<<<<<<<<<<<< * if kmerSize > 50: * if verbosity >= 3: */ while (1) { __pyx_t_2 = __pyx_f_9assembler_detectCyclesInGraph_Recursive(__pyx_v_theGraph, __pyx_v_minWeight); if (!__pyx_t_2) break; /* "assembler.pyx":1453 * if options.noCycles: * while detectCyclesInGraph_Recursive(theGraph, minWeight): * if kmerSize > 50: # <<<<<<<<<<<<<< * if verbosity >= 3: * logger.debug("Could not assemble region %s:%s-%s without cycles. Max k-mer size tried = %s" %(chrom, assemStart, assemEnd, kmerSize)) */ __pyx_t_3 = (__pyx_v_kmerSize > 50); if (__pyx_t_3) { /* "assembler.pyx":1454 * while detectCyclesInGraph_Recursive(theGraph, minWeight): * if kmerSize > 50: * if verbosity >= 3: # <<<<<<<<<<<<<< * logger.debug("Could not assemble region %s:%s-%s without cycles. Max k-mer size tried = %s" %(chrom, assemStart, assemEnd, kmerSize)) * break */ __pyx_t_3 = (__pyx_v_verbosity >= 3); if (__pyx_t_3) { /* "assembler.pyx":1455 * if kmerSize > 50: * if verbosity >= 3: * logger.debug("Could not assemble region %s:%s-%s without cycles. Max k-mer size tried = %s" %(chrom, assemStart, assemEnd, kmerSize)) # <<<<<<<<<<<<<< * break * else: */ __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__debug); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyBytes_FromString(__pyx_v_chrom); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_6)); __pyx_t_4 = PyInt_FromLong(__pyx_v_assemStart); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromLong(__pyx_v_assemEnd); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PyInt_FromLong(__pyx_v_kmerSize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_t_6)); __Pyx_GIVEREF(((PyObject *)__pyx_t_6)); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_42), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_t_1)); __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L8; } __pyx_L8:; /* "assembler.pyx":1456 * if verbosity >= 3: * logger.debug("Could not assemble region %s:%s-%s without cycles. Max k-mer size tried = %s" %(chrom, assemStart, assemEnd, kmerSize)) * break # <<<<<<<<<<<<<< * else: * if verbosity >= 3: */ goto __pyx_L6_break; goto __pyx_L7; } /*else*/ { /* "assembler.pyx":1458 * break * else: * if verbosity >= 3: # <<<<<<<<<<<<<< * logger.debug("Found cycles in region %s:%s-%s with kmer size %s. Trying again with kmer size %s" %(chrom, assemStart, assemEnd, kmerSize, kmerSize+5)) * */ __pyx_t_3 = (__pyx_v_verbosity >= 3); if (__pyx_t_3) { /* "assembler.pyx":1459 * else: * if verbosity >= 3: * logger.debug("Found cycles in region %s:%s-%s with kmer size %s. Trying again with kmer size %s" %(chrom, assemStart, assemEnd, kmerSize, kmerSize+5)) # <<<<<<<<<<<<<< * * kmerSize += 5 */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__debug); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyBytes_FromString(__pyx_v_chrom); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); __pyx_t_7 = PyInt_FromLong(__pyx_v_assemStart); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = PyInt_FromLong(__pyx_v_assemEnd); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromLong(__pyx_v_kmerSize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyInt_FromLong((__pyx_v_kmerSize + 5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PyTuple_New(5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_1)); __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_43), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_6)); __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_6)); __Pyx_GIVEREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L9; } __pyx_L9:; /* "assembler.pyx":1461 * logger.debug("Found cycles in region %s:%s-%s with kmer size %s. Trying again with kmer size %s" %(chrom, assemStart, assemEnd, kmerSize, kmerSize+5)) * * kmerSize += 5 # <<<<<<<<<<<<<< * destroyDeBruijnGraph(theGraph) * theGraph = createDeBruijnGraph(kmerSize, nBuckets) */ __pyx_v_kmerSize = (__pyx_v_kmerSize + 5); /* "assembler.pyx":1462 * * kmerSize += 5 * destroyDeBruijnGraph(theGraph) # <<<<<<<<<<<<<< * theGraph = createDeBruijnGraph(kmerSize, nBuckets) * loadReferenceIntoGraph(theGraph, refSeq, refStart, kmerSize) */ __pyx_f_9assembler_destroyDeBruijnGraph(__pyx_v_theGraph); /* "assembler.pyx":1463 * kmerSize += 5 * destroyDeBruijnGraph(theGraph) * theGraph = createDeBruijnGraph(kmerSize, nBuckets) # <<<<<<<<<<<<<< * loadReferenceIntoGraph(theGraph, refSeq, refStart, kmerSize) * loadBAMDataIntoGraph(theGraph, readBuffers, assembleBadReads, assembleBrokenPairs, minQual, kmerSize) */ __pyx_v_theGraph = __pyx_f_9assembler_createDeBruijnGraph(__pyx_v_kmerSize, __pyx_v_nBuckets); /* "assembler.pyx":1464 * destroyDeBruijnGraph(theGraph) * theGraph = createDeBruijnGraph(kmerSize, nBuckets) * loadReferenceIntoGraph(theGraph, refSeq, refStart, kmerSize) # <<<<<<<<<<<<<< * loadBAMDataIntoGraph(theGraph, readBuffers, assembleBadReads, assembleBrokenPairs, minQual, kmerSize) * else: */ __pyx_f_9assembler_loadReferenceIntoGraph(__pyx_v_theGraph, __pyx_v_refSeq, __pyx_v_refStart, __pyx_v_kmerSize); /* "assembler.pyx":1465 * theGraph = createDeBruijnGraph(kmerSize, nBuckets) * loadReferenceIntoGraph(theGraph, refSeq, refStart, kmerSize) * loadBAMDataIntoGraph(theGraph, readBuffers, assembleBadReads, assembleBrokenPairs, minQual, kmerSize) # <<<<<<<<<<<<<< * else: * theVars = findBubblesInGraph(theGraph, minWeight, refSeq, chrom, refStart, refEnd, assemStart, assemEnd, verbosity) */ __pyx_f_9assembler_loadBAMDataIntoGraph(__pyx_v_theGraph, __pyx_v_readBuffers, __pyx_v_assembleBadReads, __pyx_v_assembleBrokenPairs, __pyx_v_minQual, __pyx_v_kmerSize); } __pyx_L7:; } /*else*/ { /* "assembler.pyx":1467 * loadBAMDataIntoGraph(theGraph, readBuffers, assembleBadReads, assembleBrokenPairs, minQual, kmerSize) * else: * theVars = findBubblesInGraph(theGraph, minWeight, refSeq, chrom, refStart, refEnd, assemStart, assemEnd, verbosity) # <<<<<<<<<<<<<< * else: * theVars = findBubblesInGraph(theGraph, minWeight, refSeq, chrom, refStart, refEnd, assemStart, assemEnd, verbosity) */ __pyx_t_6 = ((PyObject *)__pyx_f_9assembler_findBubblesInGraph(__pyx_v_theGraph, __pyx_v_minWeight, __pyx_v_refSeq, __pyx_v_chrom, __pyx_v_refStart, __pyx_v_refEnd, __pyx_v_assemStart, __pyx_v_assemEnd, __pyx_v_verbosity)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(((PyObject *)__pyx_v_theVars)); __pyx_v_theVars = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0; } __pyx_L6_break:; goto __pyx_L4; } /*else*/ { /* "assembler.pyx":1469 * theVars = findBubblesInGraph(theGraph, minWeight, refSeq, chrom, refStart, refEnd, assemStart, assemEnd, verbosity) * else: * theVars = findBubblesInGraph(theGraph, minWeight, refSeq, chrom, refStart, refEnd, assemStart, assemEnd, verbosity) # <<<<<<<<<<<<<< * * destroyDeBruijnGraph(theGraph) */ __pyx_t_6 = ((PyObject *)__pyx_f_9assembler_findBubblesInGraph(__pyx_v_theGraph, __pyx_v_minWeight, __pyx_v_refSeq, __pyx_v_chrom, __pyx_v_refStart, __pyx_v_refEnd, __pyx_v_assemStart, __pyx_v_assemEnd, __pyx_v_verbosity)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(((PyObject *)__pyx_v_theVars)); __pyx_v_theVars = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0; } __pyx_L4:; /* "assembler.pyx":1471 * theVars = findBubblesInGraph(theGraph, minWeight, refSeq, chrom, refStart, refEnd, assemStart, assemEnd, verbosity) * * destroyDeBruijnGraph(theGraph) # <<<<<<<<<<<<<< * #logger.debug("Finished assembling region %s:%s-%s" %(chrom, start, end)) * #logger.debug("Found vars %s" %(theVars)) */ __pyx_f_9assembler_destroyDeBruijnGraph(__pyx_v_theGraph); /* "assembler.pyx":1474 * #logger.debug("Finished assembling region %s:%s-%s" %(chrom, start, end)) * #logger.debug("Found vars %s" %(theVars)) * return sorted(theVars) # <<<<<<<<<<<<<< * * ################################################################################################### */ __Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(((PyObject *)__pyx_v_theVars)); PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_theVars)); __Pyx_GIVEREF(((PyObject *)__pyx_v_theVars)); __pyx_t_9 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; if (!(likely(PyList_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_9)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((PyObject*)__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L0; __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("assembler.assembleReadsAndDetectVariants", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_theVars); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":346 * * # And here are accessor functions for the bit-fields * cdef inline int Read_IsReverse(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FREVERSE) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsReverse(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsReverse", 0); /* "samtoolsWrapper.pxd":347 * # And here are accessor functions for the bit-fields * cdef inline int Read_IsReverse(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FREVERSE) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_IsPaired(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 16) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":349 * return ( (theRead.bitFlag & BAM_FREVERSE) != 0) * * cdef inline int Read_IsPaired(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FPAIRED) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsPaired(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsPaired", 0); /* "samtoolsWrapper.pxd":350 * * cdef inline int Read_IsPaired(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FPAIRED) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_IsProperPair(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 1) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":352 * return ( (theRead.bitFlag & BAM_FPAIRED) != 0) * * cdef inline int Read_IsProperPair(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FPROPER_PAIR) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsProperPair(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsProperPair", 0); /* "samtoolsWrapper.pxd":353 * * cdef inline int Read_IsProperPair(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FPROPER_PAIR) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_IsDuplicate(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 2) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":355 * return ( (theRead.bitFlag & BAM_FPROPER_PAIR) != 0) * * cdef inline int Read_IsDuplicate(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FDUP) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsDuplicate(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsDuplicate", 0); /* "samtoolsWrapper.pxd":356 * * cdef inline int Read_IsDuplicate(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FDUP) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_IsUnmapped(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 1024) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":358 * return ( (theRead.bitFlag & BAM_FDUP) != 0) * * cdef inline int Read_IsUnmapped(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FUNMAP) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsUnmapped(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsUnmapped", 0); /* "samtoolsWrapper.pxd":359 * * cdef inline int Read_IsUnmapped(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FUNMAP) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_MateIsUnmapped(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 4) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":361 * return ( (theRead.bitFlag & BAM_FUNMAP) != 0) * * cdef inline int Read_MateIsUnmapped(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FMUNMAP) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_MateIsUnmapped(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_MateIsUnmapped", 0); /* "samtoolsWrapper.pxd":362 * * cdef inline int Read_MateIsUnmapped(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FMUNMAP) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_MateIsReverse(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 8) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":364 * return ( (theRead.bitFlag & BAM_FMUNMAP) != 0) * * cdef inline int Read_MateIsReverse(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FMREVERSE) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_MateIsReverse(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_MateIsReverse", 0); /* "samtoolsWrapper.pxd":365 * * cdef inline int Read_MateIsReverse(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FMREVERSE) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_IsQCFail(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 32) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":367 * return ( (theRead.bitFlag & BAM_FMREVERSE) != 0) * * cdef inline int Read_IsQCFail(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FQCFAIL) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsQCFail(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsQCFail", 0); /* "samtoolsWrapper.pxd":368 * * cdef inline int Read_IsQCFail(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FQCFAIL) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_IsReadOne(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 512) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":370 * return ( (theRead.bitFlag & BAM_FQCFAIL) != 0) * * cdef inline int Read_IsReadOne(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FREAD1) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsReadOne(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsReadOne", 0); /* "samtoolsWrapper.pxd":371 * * cdef inline int Read_IsReadOne(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FREAD1) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_IsSecondaryAlignment(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 64) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":373 * return ( (theRead.bitFlag & BAM_FREAD1) != 0) * * cdef inline int Read_IsSecondaryAlignment(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FSECONDARY) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsSecondaryAlignment(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsSecondaryAlignment", 0); /* "samtoolsWrapper.pxd":374 * * cdef inline int Read_IsSecondaryAlignment(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FSECONDARY) != 0) # <<<<<<<<<<<<<< * * cdef inline int Read_IsCompressed(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 256) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":376 * return ( (theRead.bitFlag & BAM_FSECONDARY) != 0) * * cdef inline int Read_IsCompressed(cAlignedRead* theRead): # <<<<<<<<<<<<<< * return ( (theRead.bitFlag & BAM_FCOMPRESSED) != 0) * */ static CYTHON_INLINE int __pyx_f_15samtoolsWrapper_Read_IsCompressed(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_IsCompressed", 0); /* "samtoolsWrapper.pxd":377 * * cdef inline int Read_IsCompressed(cAlignedRead* theRead): * return ( (theRead.bitFlag & BAM_FCOMPRESSED) != 0) # <<<<<<<<<<<<<< * * cdef inline void Read_SetQCFail(cAlignedRead* theRead): */ __pyx_r = ((__pyx_v_theRead->bitFlag & 2048) != 0); goto __pyx_L0; __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "samtoolsWrapper.pxd":379 * return ( (theRead.bitFlag & BAM_FCOMPRESSED) != 0) * * cdef inline void Read_SetQCFail(cAlignedRead* theRead): # <<<<<<<<<<<<<< * theRead.bitFlag |= BAM_FQCFAIL * */ static CYTHON_INLINE void __pyx_f_15samtoolsWrapper_Read_SetQCFail(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_SetQCFail", 0); /* "samtoolsWrapper.pxd":380 * * cdef inline void Read_SetQCFail(cAlignedRead* theRead): * theRead.bitFlag |= BAM_FQCFAIL # <<<<<<<<<<<<<< * * cdef inline void Read_SetCompressed(cAlignedRead* theRead): */ __pyx_v_theRead->bitFlag = (__pyx_v_theRead->bitFlag | 512); __Pyx_RefNannyFinishContext(); } /* "samtoolsWrapper.pxd":382 * theRead.bitFlag |= BAM_FQCFAIL * * cdef inline void Read_SetCompressed(cAlignedRead* theRead): # <<<<<<<<<<<<<< * theRead.bitFlag |= BAM_FCOMPRESSED * */ static CYTHON_INLINE void __pyx_f_15samtoolsWrapper_Read_SetCompressed(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_SetCompressed", 0); /* "samtoolsWrapper.pxd":383 * * cdef inline void Read_SetCompressed(cAlignedRead* theRead): * theRead.bitFlag |= BAM_FCOMPRESSED # <<<<<<<<<<<<<< * * cdef inline void Read_SetUnCompressed(cAlignedRead* theRead): */ __pyx_v_theRead->bitFlag = (__pyx_v_theRead->bitFlag | 2048); __Pyx_RefNannyFinishContext(); } /* "samtoolsWrapper.pxd":385 * theRead.bitFlag |= BAM_FCOMPRESSED * * cdef inline void Read_SetUnCompressed(cAlignedRead* theRead): # <<<<<<<<<<<<<< * theRead.bitFlag &= (~BAM_FCOMPRESSED) * */ static CYTHON_INLINE void __pyx_f_15samtoolsWrapper_Read_SetUnCompressed(__pyx_t_15samtoolsWrapper_cAlignedRead *__pyx_v_theRead) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Read_SetUnCompressed", 0); /* "samtoolsWrapper.pxd":386 * * cdef inline void Read_SetUnCompressed(cAlignedRead* theRead): * theRead.bitFlag &= (~BAM_FCOMPRESSED) # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_theRead->bitFlag = (__pyx_v_theRead->bitFlag & (~2048)); __Pyx_RefNannyFinishContext(); } static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { PyModuleDef_HEAD_INIT, __Pyx_NAMESTR("assembler"), __Pyx_DOCSTR(__pyx_k_44), /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0}, {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0}, {&__pyx_kp_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 0}, {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0}, {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0}, {&__pyx_kp_s_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 0, 1, 0}, {&__pyx_kp_s_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 1, 0}, {&__pyx_kp_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 0}, {&__pyx_kp_s_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 0, 1, 0}, {&__pyx_kp_s_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 0, 1, 0}, {&__pyx_kp_s_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 0, 1, 0}, {&__pyx_kp_s_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 0, 1, 0}, {&__pyx_kp_s_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 1, 0}, {&__pyx_kp_s_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 0, 1, 0}, {&__pyx_kp_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 0}, {&__pyx_kp_s_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 1, 0}, {&__pyx_kp_s_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 0, 1, 0}, {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0}, {&__pyx_kp_s_31, __pyx_k_31, sizeof(__pyx_k_31), 0, 0, 1, 0}, {&__pyx_kp_s_33, __pyx_k_33, sizeof(__pyx_k_33), 0, 0, 1, 0}, {&__pyx_kp_s_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 0, 1, 0}, {&__pyx_kp_s_35, __pyx_k_35, sizeof(__pyx_k_35), 0, 0, 1, 0}, {&__pyx_kp_s_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 0, 1, 0}, {&__pyx_kp_s_37, __pyx_k_37, sizeof(__pyx_k_37), 0, 0, 1, 0}, {&__pyx_kp_s_38, __pyx_k_38, sizeof(__pyx_k_38), 0, 0, 1, 0}, {&__pyx_kp_s_39, __pyx_k_39, sizeof(__pyx_k_39), 0, 0, 1, 0}, {&__pyx_kp_s_40, __pyx_k_40, sizeof(__pyx_k_40), 0, 0, 1, 0}, {&__pyx_kp_s_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 0, 1, 0}, {&__pyx_kp_s_42, __pyx_k_42, sizeof(__pyx_k_42), 0, 0, 1, 0}, {&__pyx_kp_s_43, __pyx_k_43, sizeof(__pyx_k_43), 0, 0, 1, 0}, {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0}, {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0}, {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0}, {&__pyx_n_s__Log, __pyx_k__Log, sizeof(__pyx_k__Log), 0, 0, 1, 1}, {&__pyx_n_s__StandardError, __pyx_k__StandardError, sizeof(__pyx_k__StandardError), 0, 0, 1, 1}, {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, {&__pyx_n_s__assembleBadReads, __pyx_k__assembleBadReads, sizeof(__pyx_k__assembleBadReads), 0, 0, 1, 1}, {&__pyx_n_s__assembleBrokenPairs, __pyx_k__assembleBrokenPairs, sizeof(__pyx_k__assembleBrokenPairs), 0, 0, 1, 1}, {&__pyx_n_s__assemblerKmerSize, __pyx_k__assemblerKmerSize, sizeof(__pyx_k__assemblerKmerSize), 0, 0, 1, 1}, {&__pyx_n_s__assemblyRegionSize, __pyx_k__assemblyRegionSize, sizeof(__pyx_k__assemblyRegionSize), 0, 0, 1, 1}, {&__pyx_n_s__collections, __pyx_k__collections, sizeof(__pyx_k__collections), 0, 0, 1, 1}, {&__pyx_n_s__debug, __pyx_k__debug, sizeof(__pyx_k__debug), 0, 0, 1, 1}, {&__pyx_n_s__defaultdict, __pyx_k__defaultdict, sizeof(__pyx_k__defaultdict), 0, 0, 1, 1}, {&__pyx_n_s__error, __pyx_k__error, sizeof(__pyx_k__error), 0, 0, 1, 1}, {&__pyx_n_s__getLogger, __pyx_k__getLogger, sizeof(__pyx_k__getLogger), 0, 0, 1, 1}, {&__pyx_n_s__heapq, __pyx_k__heapq, sizeof(__pyx_k__heapq), 0, 0, 1, 1}, {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1}, {&__pyx_n_s__logger, __pyx_k__logger, sizeof(__pyx_k__logger), 0, 0, 1, 1}, {&__pyx_n_s__logging, __pyx_k__logging, sizeof(__pyx_k__logging), 0, 0, 1, 1}, {&__pyx_n_s__minBaseQual, __pyx_k__minBaseQual, sizeof(__pyx_k__minBaseQual), 0, 0, 1, 1}, {&__pyx_n_s__minMapQual, __pyx_k__minMapQual, sizeof(__pyx_k__minMapQual), 0, 0, 1, 1}, {&__pyx_n_s__minReads, __pyx_k__minReads, sizeof(__pyx_k__minReads), 0, 0, 1, 1}, {&__pyx_n_s__noCycles, __pyx_k__noCycles, sizeof(__pyx_k__noCycles), 0, 0, 1, 1}, {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1}, {&__pyx_n_s__sorted, __pyx_k__sorted, sizeof(__pyx_k__sorted), 0, 0, 1, 1}, {&__pyx_n_s__verbosity, __pyx_k__verbosity, sizeof(__pyx_k__verbosity), 0, 0, 1, 1}, {&__pyx_n_s__warning, __pyx_k__warning, sizeof(__pyx_k__warning), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_StandardError = __Pyx_GetName(__pyx_b, __pyx_n_s__StandardError); if (!__pyx_builtin_StandardError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_sorted = __Pyx_GetName(__pyx_b, __pyx_n_s__sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "assembler.pyx":135 * * if thePath == NULL: * logger.error("Could not allocate path") # <<<<<<<<<<<<<< * * thePath.nodes = createNodeStack(initialSize) */ __pyx_k_tuple_2 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_2); __Pyx_INCREF(((PyObject *)__pyx_kp_s_1)); PyTuple_SET_ITEM(__pyx_k_tuple_2, 0, ((PyObject *)__pyx_kp_s_1)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2)); /* "assembler.pyx":162 * """ * if thePath == NULL: * logger.error("Null path") # <<<<<<<<<<<<<< * * if theNode == NULL: */ __pyx_k_tuple_4 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_4); __Pyx_INCREF(((PyObject *)__pyx_kp_s_3)); PyTuple_SET_ITEM(__pyx_k_tuple_4, 0, ((PyObject *)__pyx_kp_s_3)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4)); /* "assembler.pyx":165 * * if theNode == NULL: * logger.error("Null Node") # <<<<<<<<<<<<<< * * NodeStack_Push(thePath.nodes, theNode) */ __pyx_k_tuple_6 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_6); __Pyx_INCREF(((PyObject *)__pyx_kp_s_5)); PyTuple_SET_ITEM(__pyx_k_tuple_6, 0, ((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6)); /* "assembler.pyx":180 * * if theNode == NULL: * logger.error("Could not allocate node") # <<<<<<<<<<<<<< * * # Need to allocate kmerSize + 1 to store the null terminating character */ __pyx_k_tuple_8 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_8); __Pyx_INCREF(((PyObject *)__pyx_kp_s_7)); PyTuple_SET_ITEM(__pyx_k_tuple_8, 0, ((PyObject *)__pyx_kp_s_7)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8)); /* "assembler.pyx":369 * * if temp == NULL: * logger.error("Could not re-allocate PathStack") # <<<<<<<<<<<<<< * else: * theStack.elements = temp */ __pyx_k_tuple_13 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_13); __Pyx_INCREF(((PyObject *)__pyx_kp_s_12)); PyTuple_SET_ITEM(__pyx_k_tuple_13, 0, ((PyObject *)__pyx_kp_s_12)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_12)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13)); /* "assembler.pyx":462 * * if temp == NULL: * logger.error("Could not re-allocate NodeStack") # <<<<<<<<<<<<<< * else: * theStack.elements = temp */ __pyx_k_tuple_17 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_17); __Pyx_INCREF(((PyObject *)__pyx_kp_s_16)); PyTuple_SET_ITEM(__pyx_k_tuple_17, 0, ((PyObject *)__pyx_kp_s_16)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_16)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17)); /* "assembler.pyx":508 * * if theEdge == NULL: * logger.error("Error. Could not allocate edge") # <<<<<<<<<<<<<< * * theEdge.startNode = startNode */ __pyx_k_tuple_19 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_19); __Pyx_INCREF(((PyObject *)__pyx_kp_s_18)); PyTuple_SET_ITEM(__pyx_k_tuple_19, 0, ((PyObject *)__pyx_kp_s_18)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_18)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19)); /* "assembler.pyx":627 * * if theDict == NULL: * logger.error("Error. Could not NodeDict") # <<<<<<<<<<<<<< * * theDict.buckets = (malloc(nBuckets*sizeof(Node**))) */ __pyx_k_tuple_24 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_24); __Pyx_INCREF(((PyObject *)__pyx_kp_s_23)); PyTuple_SET_ITEM(__pyx_k_tuple_24, 0, ((PyObject *)__pyx_kp_s_23)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_23)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24)); /* "assembler.pyx":750 * * if theGraph == NULL: * logger.error("Could not allocate memory for DeBruijnGraph") # <<<<<<<<<<<<<< * * theGraph.kmerSize = kmerSize */ __pyx_k_tuple_30 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_30); __Pyx_INCREF(((PyObject *)__pyx_kp_s_29)); PyTuple_SET_ITEM(__pyx_k_tuple_30, 0, ((PyObject *)__pyx_kp_s_29)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_29)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30)); /* "assembler.pyx":824 * continue * else: * logger.error("Error in assembler. Could not find matching end-node for edge. Something is very wrong") # <<<<<<<<<<<<<< * raise StandardError, "Assembly Error!!" * */ __pyx_k_tuple_32 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_32); __Pyx_INCREF(((PyObject *)__pyx_kp_s_31)); PyTuple_SET_ITEM(__pyx_k_tuple_32, 0, ((PyObject *)__pyx_kp_s_31)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_31)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32)); /* "assembler.pyx":26 * from variant cimport Variant,ASSEMBLER_VAR * * logger = logging.getLogger("Log") # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_k_tuple_45 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_45); __Pyx_INCREF(((PyObject *)__pyx_n_s__Log)); PyTuple_SET_ITEM(__pyx_k_tuple_45, 0, ((PyObject *)__pyx_n_s__Log)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__Log)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_45)); __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __pyx_int_100 = PyInt_FromLong(100); if (unlikely(!__pyx_int_100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC initassembler(void); /*proto*/ PyMODINIT_FUNC initassembler(void) #else PyMODINIT_FUNC PyInit_assembler(void); /*proto*/ PyMODINIT_FUNC PyInit_assembler(void) #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_assembler(void)", 0); if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #ifdef __Pyx_CyFunction_USED if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4(__Pyx_NAMESTR("assembler"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_44), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!PyDict_GetItemString(modules, "assembler")) { if (unlikely(PyDict_SetItemString(modules, "assembler", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; /*--- Initialize various global constants etc. ---*/ if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_module_is_main_assembler) { if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; } /*--- Builtin init code ---*/ if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Constants init code ---*/ if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ if (__Pyx_ExportFunction("assembleReadsAndDetectVariants", (void (*)(void))__pyx_f_9assembler_assembleReadsAndDetectVariants, "PyObject *(char *, int, int, int, int, PyObject *, char *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Type init code ---*/ /*--- Type import code ---*/ __pyx_ptype_15samtoolsWrapper_Samfile = __Pyx_ImportType("samtoolsWrapper", "Samfile", sizeof(struct __pyx_obj_15samtoolsWrapper_Samfile), 1); if (unlikely(!__pyx_ptype_15samtoolsWrapper_Samfile)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_15samtoolsWrapper_Samfile = (struct __pyx_vtabstruct_15samtoolsWrapper_Samfile*)__Pyx_GetVtable(__pyx_ptype_15samtoolsWrapper_Samfile->tp_dict); if (unlikely(!__pyx_vtabptr_15samtoolsWrapper_Samfile)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_15samtoolsWrapper_IteratorRow = __Pyx_ImportType("samtoolsWrapper", "IteratorRow", sizeof(struct __pyx_obj_15samtoolsWrapper_IteratorRow), 1); if (unlikely(!__pyx_ptype_15samtoolsWrapper_IteratorRow)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_15samtoolsWrapper_IteratorRow = (struct __pyx_vtabstruct_15samtoolsWrapper_IteratorRow*)__Pyx_GetVtable(__pyx_ptype_15samtoolsWrapper_IteratorRow->tp_dict); if (unlikely(!__pyx_vtabptr_15samtoolsWrapper_IteratorRow)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_15samtoolsWrapper_IteratorRowAll = __Pyx_ImportType("samtoolsWrapper", "IteratorRowAll", sizeof(struct __pyx_obj_15samtoolsWrapper_IteratorRowAll), 1); if (unlikely(!__pyx_ptype_15samtoolsWrapper_IteratorRowAll)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_15samtoolsWrapper_IteratorRowAll = (struct __pyx_vtabstruct_15samtoolsWrapper_IteratorRowAll*)__Pyx_GetVtable(__pyx_ptype_15samtoolsWrapper_IteratorRowAll->tp_dict); if (unlikely(!__pyx_vtabptr_15samtoolsWrapper_IteratorRowAll)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_15samtoolsWrapper_AlignedRead = __Pyx_ImportType("samtoolsWrapper", "AlignedRead", sizeof(struct __pyx_obj_15samtoolsWrapper_AlignedRead), 1); if (unlikely(!__pyx_ptype_15samtoolsWrapper_AlignedRead)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_15samtoolsWrapper_AlignedRead = (struct __pyx_vtabstruct_15samtoolsWrapper_AlignedRead*)__Pyx_GetVtable(__pyx_ptype_15samtoolsWrapper_AlignedRead->tp_dict); if (unlikely(!__pyx_vtabptr_15samtoolsWrapper_AlignedRead)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_9fastafile_FastaIndex = __Pyx_ImportType("fastafile", "FastaIndex", sizeof(struct __pyx_obj_9fastafile_FastaIndex), 1); if (unlikely(!__pyx_ptype_9fastafile_FastaIndex)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_9fastafile_FastaIndex = (struct __pyx_vtabstruct_9fastafile_FastaIndex*)__Pyx_GetVtable(__pyx_ptype_9fastafile_FastaIndex->tp_dict); if (unlikely(!__pyx_vtabptr_9fastafile_FastaIndex)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_9fastafile_FastaFile = __Pyx_ImportType("fastafile", "FastaFile", sizeof(struct __pyx_obj_9fastafile_FastaFile), 1); if (unlikely(!__pyx_ptype_9fastafile_FastaFile)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_9fastafile_FastaFile = (struct __pyx_vtabstruct_9fastafile_FastaFile*)__Pyx_GetVtable(__pyx_ptype_9fastafile_FastaFile->tp_dict); if (unlikely(!__pyx_vtabptr_9fastafile_FastaFile)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_7cwindow_ReadArray = __Pyx_ImportType("cwindow", "ReadArray", sizeof(struct __pyx_obj_7cwindow_ReadArray), 1); if (unlikely(!__pyx_ptype_7cwindow_ReadArray)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_7cwindow_ReadArray = (struct __pyx_vtabstruct_7cwindow_ReadArray*)__Pyx_GetVtable(__pyx_ptype_7cwindow_ReadArray->tp_dict); if (unlikely(!__pyx_vtabptr_7cwindow_ReadArray)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_7cwindow_bamReadBuffer = __Pyx_ImportType("cwindow", "bamReadBuffer", sizeof(struct __pyx_obj_7cwindow_bamReadBuffer), 1); if (unlikely(!__pyx_ptype_7cwindow_bamReadBuffer)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_7cwindow_bamReadBuffer = (struct __pyx_vtabstruct_7cwindow_bamReadBuffer*)__Pyx_GetVtable(__pyx_ptype_7cwindow_bamReadBuffer->tp_dict); if (unlikely(!__pyx_vtabptr_7cwindow_bamReadBuffer)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_7variant_Variant = __Pyx_ImportType("variant", "Variant", sizeof(struct __pyx_obj_7variant_Variant), 1); if (unlikely(!__pyx_ptype_7variant_Variant)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_7variant_Variant = (struct __pyx_vtabstruct_7variant_Variant*)__Pyx_GetVtable(__pyx_ptype_7variant_Variant->tp_dict); if (unlikely(!__pyx_vtabptr_7variant_Variant)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_7variant_VariantCandidateGenerator = __Pyx_ImportType("variant", "VariantCandidateGenerator", sizeof(struct __pyx_obj_7variant_VariantCandidateGenerator), 1); if (unlikely(!__pyx_ptype_7variant_VariantCandidateGenerator)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_vtabptr_7variant_VariantCandidateGenerator = (struct __pyx_vtabstruct_7variant_VariantCandidateGenerator*)__Pyx_GetVtable(__pyx_ptype_7variant_VariantCandidateGenerator->tp_dict); if (unlikely(!__pyx_vtabptr_7variant_VariantCandidateGenerator)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Variable import code ---*/ __pyx_t_1 = __Pyx_ImportModule("variant"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__Pyx_ImportVoidPtr(__pyx_t_1, "PLATYPUS_VAR", (void **)&__pyx_vp_7variant_PLATYPUS_VAR, "int") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__Pyx_ImportVoidPtr(__pyx_t_1, "FILE_VAR", (void **)&__pyx_vp_7variant_FILE_VAR, "int") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__Pyx_ImportVoidPtr(__pyx_t_1, "ASSEMBLER_VAR", (void **)&__pyx_vp_7variant_ASSEMBLER_VAR, "int") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*--- Function import code ---*/ /*--- Execution code ---*/ /* "assembler.pyx":8 * * cimport cython * import logging # <<<<<<<<<<<<<< * import heapq * from collections import defaultdict */ __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__logging), 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__logging, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "assembler.pyx":9 * cimport cython * import logging * import heapq # <<<<<<<<<<<<<< * from collections import defaultdict * */ __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__heapq), 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__heapq, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "assembler.pyx":10 * import logging * import heapq * from collections import defaultdict # <<<<<<<<<<<<<< * * from samtoolsWrapper cimport cAlignedRead */ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_n_s__defaultdict)); PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__defaultdict)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__defaultdict)); __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__collections), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__defaultdict); if (__pyx_t_2 == NULL) { if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__defaultdict, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "assembler.pyx":26 * from variant cimport Variant,ASSEMBLER_VAR * * logger = logging.getLogger("Log") # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__logging); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_45), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyObject_SetAttr(__pyx_m, __pyx_n_s__logger, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "assembler.pyx":30 * ################################################################################################### * * cdef int REF = 1 # <<<<<<<<<<<<<< * cdef int READ = 2 * cdef int REF_AND_READ = 3 */ __pyx_v_9assembler_REF = 1; /* "assembler.pyx":31 * * cdef int REF = 1 * cdef int READ = 2 # <<<<<<<<<<<<<< * cdef int REF_AND_READ = 3 * */ __pyx_v_9assembler_READ = 2; /* "assembler.pyx":32 * cdef int REF = 1 * cdef int READ = 2 * cdef int REF_AND_READ = 3 # <<<<<<<<<<<<<< * * ################################################################################################### */ __pyx_v_9assembler_REF_AND_READ = 3; /* "assembler.pyx":1 * """ # <<<<<<<<<<<<<< * Cython module used to interface to assembler routines. * """ */ __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; /* "samtoolsWrapper.pxd":385 * theRead.bitFlag |= BAM_FCOMPRESSED * * cdef inline void Read_SetUnCompressed(cAlignedRead* theRead): # <<<<<<<<<<<<<< * theRead.bitFlag &= (~BAM_FCOMPRESSED) * */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); if (__pyx_m) { __Pyx_AddTraceback("init assembler", __pyx_clineno, __pyx_lineno, __pyx_filename); Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init assembler"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* Runtime support code */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* CYTHON_REFNANNY */ static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) { PyObject *result; result = PyObject_GetAttr(dict, name); if (!result) { if (dict != __pyx_b) { PyErr_Clear(); result = PyObject_GetAttr(__pyx_b, name); } if (!result) { PyErr_SetObject(PyExc_NameError, name); } } return result; } static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { #if CYTHON_COMPILING_IN_CPYTHON PyObject *tmp_type, *tmp_value, *tmp_tb; PyThreadState *tstate = PyThreadState_GET(); tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #else PyErr_Restore(type, value, tb); #endif } static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { #if CYTHON_COMPILING_IN_CPYTHON PyThreadState *tstate = PyThreadState_GET(); *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #else PyErr_Fetch(type, value, tb); #endif } #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { Py_XINCREF(type); if (!value || value == Py_None) value = NULL; else Py_INCREF(value); if (!tb || tb == Py_None) tb = NULL; else { Py_INCREF(tb); if (!PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto raise_error; } } #if PY_VERSION_HEX < 0x02050000 if (PyClass_Check(type)) { #else if (PyType_Check(type)) { #endif #if CYTHON_COMPILING_IN_PYPY if (!value) { Py_INCREF(Py_None); value = Py_None; } #endif PyErr_NormalizeException(&type, &value, &tb); } else { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto raise_error; } value = type; #if PY_VERSION_HEX < 0x02050000 if (PyInstance_Check(type)) { type = (PyObject*) ((PyInstanceObject*)type)->in_class; Py_INCREF(type); } else { type = 0; PyErr_SetString(PyExc_TypeError, "raise: exception must be an old-style class or instance"); goto raise_error; } #else type = (PyObject*) Py_TYPE(type); Py_INCREF(type); if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto raise_error; } #endif } __Pyx_ErrRestore(type, value, tb); return; raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(tb); return; } #else /* Python 3+ */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; if (tb == Py_None) { tb = 0; } else if (tb && !PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto bad; } if (value == Py_None) value = 0; if (PyExceptionInstance_Check(type)) { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto bad; } value = type; type = (PyObject*) Py_TYPE(value); } else if (PyExceptionClass_Check(type)) { PyObject *args; if (!value) args = PyTuple_New(0); else if (PyTuple_Check(value)) { Py_INCREF(value); args = value; } else args = PyTuple_Pack(1, value); if (!args) goto bad; owned_instance = PyEval_CallObject(type, args); Py_DECREF(args); if (!owned_instance) goto bad; value = owned_instance; if (!PyExceptionInstance_Check(value)) { PyErr_Format(PyExc_TypeError, "calling %R should have returned an instance of " "BaseException, not %R", type, Py_TYPE(value)); goto bad; } } else { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto bad; } if (cause && cause != Py_None) { PyObject *fixed_cause; if (PyExceptionClass_Check(cause)) { fixed_cause = PyObject_CallObject(cause, NULL); if (fixed_cause == NULL) goto bad; } else if (PyExceptionInstance_Check(cause)) { fixed_cause = cause; Py_INCREF(fixed_cause); } else { PyErr_SetString(PyExc_TypeError, "exception causes must derive from " "BaseException"); goto bad; } PyException_SetCause(value, fixed_cause); } PyErr_SetObject(type, value); if (tb) { PyThreadState *tstate = PyThreadState_GET(); PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { Py_INCREF(tb); tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } } bad: Py_XDECREF(owned_instance); return; } #endif static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { PyErr_Format(PyExc_SystemError, "Missing type object"); return 0; } if (likely(PyObject_TypeCheck(obj, type))) return 1; PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", Py_TYPE(obj)->tp_name, type->tp_name); return 0; } static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) { PyObject *py_import = 0; PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; PyObject *empty_dict = 0; PyObject *list; py_import = __Pyx_GetAttrString(__pyx_b, "__import__"); if (!py_import) goto bad; if (from_list) list = from_list; else { empty_list = PyList_New(0); if (!empty_list) goto bad; list = empty_list; } global_dict = PyModule_GetDict(__pyx_m); if (!global_dict) goto bad; empty_dict = PyDict_New(); if (!empty_dict) goto bad; #if PY_VERSION_HEX >= 0x02050000 { #if PY_MAJOR_VERSION >= 3 if (level == -1) { if (strchr(__Pyx_MODULE_NAME, '.')) { /* try package relative import first */ PyObject *py_level = PyInt_FromLong(1); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; PyErr_Clear(); } } level = 0; /* try absolute import on failure */ } #endif if (!module) { PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); } } #else if (level>0) { PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4."); goto bad; } module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, NULL); #endif bad: Py_XDECREF(empty_list); Py_XDECREF(py_import); Py_XDECREF(empty_dict); return module; } static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) { #if PY_MAJOR_VERSION < 3 PyErr_Format(PyExc_ImportError, "cannot import name %.230s", PyString_AsString(name)); #else PyErr_Format(PyExc_ImportError, "cannot import name %S", name); #endif } static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) { const unsigned char neg_one = (unsigned char)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(unsigned char) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(unsigned char)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to unsigned char" : "value too large to convert to unsigned char"); } return (unsigned char)-1; } return (unsigned char)val; } return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x); } static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) { const unsigned short neg_one = (unsigned short)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(unsigned short) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(unsigned short)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to unsigned short" : "value too large to convert to unsigned short"); } return (unsigned short)-1; } return (unsigned short)val; } return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x); } static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) { const unsigned int neg_one = (unsigned int)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(unsigned int) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(unsigned int)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to unsigned int" : "value too large to convert to unsigned int"); } return (unsigned int)-1; } return (unsigned int)val; } return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x); } static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) { const char neg_one = (char)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(char) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(char)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to char" : "value too large to convert to char"); } return (char)-1; } return (char)val; } return (char)__Pyx_PyInt_AsLong(x); } static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) { const short neg_one = (short)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(short) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(short)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to short" : "value too large to convert to short"); } return (short)-1; } return (short)val; } return (short)__Pyx_PyInt_AsLong(x); } static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) { const int neg_one = (int)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(int) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(int)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to int" : "value too large to convert to int"); } return (int)-1; } return (int)val; } return (int)__Pyx_PyInt_AsLong(x); } static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) { const signed char neg_one = (signed char)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(signed char) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(signed char)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to signed char" : "value too large to convert to signed char"); } return (signed char)-1; } return (signed char)val; } return (signed char)__Pyx_PyInt_AsSignedLong(x); } static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) { const signed short neg_one = (signed short)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(signed short) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(signed short)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to signed short" : "value too large to convert to signed short"); } return (signed short)-1; } return (signed short)val; } return (signed short)__Pyx_PyInt_AsSignedLong(x); } static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) { const signed int neg_one = (signed int)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(signed int) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(signed int)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to signed int" : "value too large to convert to signed int"); } return (signed int)-1; } return (signed int)val; } return (signed int)__Pyx_PyInt_AsSignedLong(x); } static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) { const int neg_one = (int)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (sizeof(int) < sizeof(long)) { long val = __Pyx_PyInt_AsLong(x); if (unlikely(val != (long)(int)val)) { if (!unlikely(val == -1 && PyErr_Occurred())) { PyErr_SetString(PyExc_OverflowError, (is_unsigned && unlikely(val < 0)) ? "can't convert negative value to int" : "value too large to convert to int"); } return (int)-1; } return (int)val; } return (int)__Pyx_PyInt_AsLong(x); } static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) { const unsigned long neg_one = (unsigned long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_VERSION_HEX < 0x03000000 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned long"); return (unsigned long)-1; } return (unsigned long)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned long"); return (unsigned long)-1; } return (unsigned long)PyLong_AsUnsignedLong(x); } else { return (unsigned long)PyLong_AsLong(x); } } else { unsigned long val; PyObject *tmp = __Pyx_PyNumber_Int(x); if (!tmp) return (unsigned long)-1; val = __Pyx_PyInt_AsUnsignedLong(tmp); Py_DECREF(tmp); return val; } } static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) { const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_VERSION_HEX < 0x03000000 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned PY_LONG_LONG"); return (unsigned PY_LONG_LONG)-1; } return (unsigned PY_LONG_LONG)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned PY_LONG_LONG"); return (unsigned PY_LONG_LONG)-1; } return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x); } } else { unsigned PY_LONG_LONG val; PyObject *tmp = __Pyx_PyNumber_Int(x); if (!tmp) return (unsigned PY_LONG_LONG)-1; val = __Pyx_PyInt_AsUnsignedLongLong(tmp); Py_DECREF(tmp); return val; } } static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) { const long neg_one = (long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_VERSION_HEX < 0x03000000 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long)-1; } return (long)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long)-1; } return (long)PyLong_AsUnsignedLong(x); } else { return (long)PyLong_AsLong(x); } } else { long val; PyObject *tmp = __Pyx_PyNumber_Int(x); if (!tmp) return (long)-1; val = __Pyx_PyInt_AsLong(tmp); Py_DECREF(tmp); return val; } } static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) { const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_VERSION_HEX < 0x03000000 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to PY_LONG_LONG"); return (PY_LONG_LONG)-1; } return (PY_LONG_LONG)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to PY_LONG_LONG"); return (PY_LONG_LONG)-1; } return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { return (PY_LONG_LONG)PyLong_AsLongLong(x); } } else { PY_LONG_LONG val; PyObject *tmp = __Pyx_PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1; val = __Pyx_PyInt_AsLongLong(tmp); Py_DECREF(tmp); return val; } } static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) { const signed long neg_one = (signed long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_VERSION_HEX < 0x03000000 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to signed long"); return (signed long)-1; } return (signed long)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to signed long"); return (signed long)-1; } return (signed long)PyLong_AsUnsignedLong(x); } else { return (signed long)PyLong_AsLong(x); } } else { signed long val; PyObject *tmp = __Pyx_PyNumber_Int(x); if (!tmp) return (signed long)-1; val = __Pyx_PyInt_AsSignedLong(tmp); Py_DECREF(tmp); return val; } } static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) { const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_VERSION_HEX < 0x03000000 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to signed PY_LONG_LONG"); return (signed PY_LONG_LONG)-1; } return (signed PY_LONG_LONG)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to signed PY_LONG_LONG"); return (signed PY_LONG_LONG)-1; } return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { return (signed PY_LONG_LONG)PyLong_AsLongLong(x); } } else { signed PY_LONG_LONG val; PyObject *tmp = __Pyx_PyNumber_Int(x); if (!tmp) return (signed PY_LONG_LONG)-1; val = __Pyx_PyInt_AsSignedLongLong(tmp); Py_DECREF(tmp); return val; } } static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } } static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); #if PY_VERSION_HEX < 0x02050000 return PyErr_Warn(NULL, message); #else return PyErr_WarnEx(NULL, message, 1); #endif } return 0; } static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); if (!d) { PyErr_Clear(); d = PyDict_New(); if (!d) goto bad; Py_INCREF(d); if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) goto bad; } tmp.fp = f; #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) cobj = PyCapsule_New(tmp.p, sig, 0); #else cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); #endif if (!cobj) goto bad; if (PyDict_SetItemString(d, name, cobj) < 0) goto bad; Py_DECREF(cobj); Py_DECREF(d); return 0; bad: Py_XDECREF(cobj); Py_XDECREF(d); return -1; } #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; PyObject *py_module = 0; py_name = __Pyx_PyIdentifier_FromString(name); if (!py_name) goto bad; py_module = PyImport_Import(py_name); Py_DECREF(py_name); return py_module; bad: Py_XDECREF(py_name); return 0; } #endif #ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict) { PyObject *py_module = 0; PyObject *result = 0; PyObject *py_name = 0; char warning[200]; py_module = __Pyx_ImportModule(module_name); if (!py_module) goto bad; py_name = __Pyx_PyIdentifier_FromString(class_name); if (!py_name) goto bad; result = PyObject_GetAttr(py_module, py_name); Py_DECREF(py_name); py_name = 0; Py_DECREF(py_module); py_module = 0; if (!result) goto bad; if (!PyType_Check(result)) { PyErr_Format(PyExc_TypeError, "%s.%s is not a type object", module_name, class_name); goto bad; } if (!strict && (size_t)((PyTypeObject *)result)->tp_basicsize > size) { PyOS_snprintf(warning, sizeof(warning), "%s.%s size changed, may indicate binary incompatibility", module_name, class_name); #if PY_VERSION_HEX < 0x02050000 if (PyErr_Warn(NULL, warning) < 0) goto bad; #else if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; #endif } else if ((size_t)((PyTypeObject *)result)->tp_basicsize != size) { PyErr_Format(PyExc_ValueError, "%s.%s has the wrong size, try recompiling", module_name, class_name); goto bad; } return (PyTypeObject *)result; bad: Py_XDECREF(py_module); Py_XDECREF(result); return NULL; } #endif static void* __Pyx_GetVtable(PyObject *dict) { void* ptr; PyObject *ob = PyMapping_GetItemString(dict, (char *)"__pyx_vtable__"); if (!ob) goto bad; #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) ptr = PyCapsule_GetPointer(ob, 0); #else ptr = PyCObject_AsVoidPtr(ob); #endif if (!ptr && !PyErr_Occurred()) PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); Py_DECREF(ob); return ptr; bad: Py_XDECREF(ob); return NULL; } #ifndef __PYX_HAVE_RT_ImportVoidPtr #define __PYX_HAVE_RT_ImportVoidPtr static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { PyObject *d = 0; PyObject *cobj = 0; d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); if (!d) goto bad; cobj = PyDict_GetItemString(d, name); if (!cobj) { PyErr_Format(PyExc_ImportError, "%s does not export expected C variable %s", PyModule_GetName(module), name); goto bad; } #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0) if (!PyCapsule_IsValid(cobj, sig)) { PyErr_Format(PyExc_TypeError, "C variable %s.%s has wrong signature (expected %s, got %s)", PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); goto bad; } *p = PyCapsule_GetPointer(cobj, sig); #else {const char *desc, *s1, *s2; desc = (const char *)PyCObject_GetDesc(cobj); if (!desc) goto bad; s1 = desc; s2 = sig; while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } if (*s1 != *s2) { PyErr_Format(PyExc_TypeError, "C variable %s.%s has wrong signature (expected %s, got %s)", PyModule_GetName(module), name, sig, desc); goto bad; } *p = PyCObject_AsVoidPtr(cobj);} #endif if (!(*p)) goto bad; Py_DECREF(d); return 0; bad: Py_XDECREF(d); return -1; } #endif static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = (start + end) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, /*int argcount,*/ 0, /*int kwonlyargcount,*/ 0, /*int nlocals,*/ 0, /*int stacksize,*/ 0, /*int flags,*/ __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, /*int firstlineno,*/ __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_globals = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_globals = PyModule_GetDict(__pyx_m); if (!py_globals) goto bad; py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ py_globals, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; py_frame->f_lineno = py_line; PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else /* Python 3+ has unicode identifiers */ if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } /* Type Conversion Functions */ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { PyNumberMethods *m; const char *name = NULL; PyObject *res = NULL; #if PY_VERSION_HEX < 0x03000000 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return Py_INCREF(x), x; m = Py_TYPE(x)->tp_as_number; #if PY_VERSION_HEX < 0x03000000 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif if (res) { #if PY_VERSION_HEX < 0x03000000 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%s__ returned non-%s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject* x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { #if PY_VERSION_HEX < 0x02050000 if (ival <= LONG_MAX) return PyInt_FromLong((long)ival); else { unsigned char *bytes = (unsigned char *) &ival; int one = 1; int little = (int)*(unsigned char*)&one; return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0); } #else return PyInt_FromSize_t(ival); #endif } static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) { unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x); if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) { return (size_t)-1; } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { PyErr_SetString(PyExc_OverflowError, "value too large to convert to size_t"); return (size_t)-1; } return (size_t)val; } #endif /* Py_PYTHON_H */