add cython generated .c file.

add cython generated .c file.

--- methylcoder/cbowtie.c
+++ methylcoder/cbowtie.c
@@ -1,18 +1,39 @@
-/* Generated by Cython 0.12.1 on Mon Jun 14 20:36:51 2010 */
+/* Generated by Cython 0.13 on Tue Oct 19 15:27:21 2010 */

 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
-#include "structmember.h"
 #ifndef Py_PYTHON_H
     #error Python headers needed to compile C extensions, please install development version of Python.
 #else

-#ifndef PY_LONG_LONG
-  #define PY_LONG_LONG LONG_LONG
+#include <stddef.h> /* 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
+
 #if PY_VERSION_HEX < 0x02040000
   #define METH_COEXIST 0
   #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
@@ -82,11 +103,35 @@

 #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
-#else
+#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
+  #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

 #if PY_MAJOR_VERSION >= 3
@@ -103,30 +148,23 @@
   #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_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_Divide(x,y)
   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
-
 #endif

 #if PY_MAJOR_VERSION >= 3
-  #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)
-#endif
-
-#if !defined(WIN32) && !defined(MS_WINDOWS)
-  #ifndef __stdcall
-    #define __stdcall
-  #endif
-  #ifndef __cdecl
-    #define __cdecl
-  #endif
-  #ifndef __fastcall
-    #define __fastcall
-  #endif
-#else
-  #define _USE_MATH_DEFINES
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
 #endif

 #if PY_VERSION_HEX < 0x02050000
@@ -146,112 +184,64 @@
   #define __Pyx_NAMESTR(n) (n)
   #define __Pyx_DOCSTR(n)  (n)
 #endif
+
 #ifdef __cplusplus
 #define __PYX_EXTERN_C extern "C"
 #else
 #define __PYX_EXTERN_C extern
 #endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
 #include <math.h>
-#define __PYX_HAVE_API__cbowtie
+#define __PYX_HAVE_API__methylcoder__cbowtie
 #include "stdlib.h"
+#include "string.h"
 #include "stdio.h"
 #include "numpy/arrayobject.h"
 #include "numpy/ufuncobject.h"

+/* 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)
+#   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 */

-#if PY_MAJOR_VERSION < 3
-#define __Pyx_PyBytes_FromString          PyString_FromString
-#define __Pyx_PyBytes_FromStringAndSize   PyString_FromStringAndSize
-#define __Pyx_PyBytes_AsString            PyString_AsString
-#else
-#define __Pyx_PyBytes_FromString          PyBytes_FromString
-#define __Pyx_PyBytes_FromStringAndSize   PyBytes_FromStringAndSize
-#define __Pyx_PyBytes_AsString            PyBytes_AsString
-#endif
-
-#define __Pyx_PyBytes_FromUString(s)      __Pyx_PyBytes_FromString((char*)s)
-#define __Pyx_PyBytes_AsUString(s)        ((unsigned char*) __Pyx_PyBytes_AsString(s))
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))

 #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);

-#if !defined(T_PYSSIZET)
-#if PY_VERSION_HEX < 0x02050000
-#define T_PYSSIZET T_INT
-#elif !defined(T_LONGLONG)
-#define T_PYSSIZET \
-        ((sizeof(Py_ssize_t) == sizeof(int))  ? T_INT  : \
-        ((sizeof(Py_ssize_t) == sizeof(long)) ? T_LONG : -1))
-#else
-#define T_PYSSIZET \
-        ((sizeof(Py_ssize_t) == sizeof(int))          ? T_INT      : \
-        ((sizeof(Py_ssize_t) == sizeof(long))         ? T_LONG     : \
-        ((sizeof(Py_ssize_t) == sizeof(PY_LONG_LONG)) ? T_LONGLONG : -1)))
-#endif
-#endif
-
-
-#if !defined(T_ULONGLONG)
-#define __Pyx_T_UNSIGNED_INT(x) \
-        ((sizeof(x) == sizeof(unsigned char))  ? T_UBYTE : \
-        ((sizeof(x) == sizeof(unsigned short)) ? T_USHORT : \
-        ((sizeof(x) == sizeof(unsigned int))   ? T_UINT : \
-        ((sizeof(x) == sizeof(unsigned long))  ? T_ULONG : -1))))
-#else
-#define __Pyx_T_UNSIGNED_INT(x) \
-        ((sizeof(x) == sizeof(unsigned char))  ? T_UBYTE : \
-        ((sizeof(x) == sizeof(unsigned short)) ? T_USHORT : \
-        ((sizeof(x) == sizeof(unsigned int))   ? T_UINT : \
-        ((sizeof(x) == sizeof(unsigned long))  ? T_ULONG : \
-        ((sizeof(x) == sizeof(unsigned PY_LONG_LONG)) ? T_ULONGLONG : -1)))))
-#endif
-#if !defined(T_LONGLONG)
-#define __Pyx_T_SIGNED_INT(x) \
-        ((sizeof(x) == sizeof(char))  ? T_BYTE : \
-        ((sizeof(x) == sizeof(short)) ? T_SHORT : \
-        ((sizeof(x) == sizeof(int))   ? T_INT : \
-        ((sizeof(x) == sizeof(long))  ? T_LONG : -1))))
-#else
-#define __Pyx_T_SIGNED_INT(x) \
-        ((sizeof(x) == sizeof(char))  ? T_BYTE : \
-        ((sizeof(x) == sizeof(short)) ? T_SHORT : \
-        ((sizeof(x) == sizeof(int))   ? T_INT : \
-        ((sizeof(x) == sizeof(long))  ? T_LONG : \
-        ((sizeof(x) == sizeof(PY_LONG_LONG))   ? T_LONGLONG : -1)))))
-#endif
-
-#define __Pyx_T_FLOATING(x) \
-        ((sizeof(x) == sizeof(float)) ? T_FLOAT : \
-        ((sizeof(x) == sizeof(double)) ? T_DOUBLE : -1))
-
-#if !defined(T_SIZET)
-#if !defined(T_ULONGLONG)
-#define T_SIZET \
-        ((sizeof(size_t) == sizeof(unsigned int))  ? T_UINT  : \
-        ((sizeof(size_t) == sizeof(unsigned long)) ? T_ULONG : -1))
-#else
-#define T_SIZET \
-        ((sizeof(size_t) == sizeof(unsigned int))          ? T_UINT      : \
-        ((sizeof(size_t) == sizeof(unsigned long))         ? T_ULONG     : \
-        ((sizeof(size_t) == sizeof(unsigned PY_LONG_LONG)) ? T_ULONGLONG : -1)))
-#endif
-#endif
-
 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*);
@@ -261,7 +251,7 @@

 #ifdef __GNUC__
 /* Test for GCC > 2.95 */
-#if __GNUC__ > 2 ||               (__GNUC__ == 2 && (__GNUC_MINOR__ > 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 ... */
@@ -281,7 +271,6 @@
 static int __pyx_clineno = 0;
 static const char * __pyx_cfilenm= __FILE__;
 static const char *__pyx_filename;
-static const char **__pyx_f;

 #if !defined(CYTHON_CCOMPLEX)
@@ -306,6 +295,11 @@
   #undef _Complex_I
   #define _Complex_I 1.0fj
 #endif
+
+static const char *__pyx_f[] = {
+  "cbowtie.pyx",
+  "numpy.pxd",
+};

 typedef npy_int8 __pyx_t_5numpy_int8_t;

@@ -421,6 +415,8 @@
 #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);} } while(0)
 #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r);} } while(0)

+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
 static void __Pyx_RaiseDoubleKeywordsError(
     const char* func_name, PyObject* kw_name); /*proto*/

@@ -428,6 +424,9 @@
     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/

 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/

 /* Run-time type information about structs used with buffers */
 struct __Pyx_StructField_;
@@ -451,29 +450,124 @@
 } __Pyx_BufFmt_StackElem;

+static CYTHON_INLINE int  __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
 static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
-static int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
-static void __Pyx_RaiseBufferIndexError(int axis); /*proto*/
 #define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0)

 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 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 (likely(o != Py_None)) {
+        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));
+}
+
+#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 (likely(o != Py_None)) {
+        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));
+}
+
+
+#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) {
+    PyObject *r;
+    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        r = PyList_GET_ITEM(o, i);
+        Py_INCREF(r);
+    }
+    else if (PyTuple_CheckExact(o) && ((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+        r = PyTuple_GET_ITEM(o, i);
+        Py_INCREF(r);
+    }
+    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_item && (likely(i >= 0))) {
+        r = PySequence_GetItem(o, i);
+    }
+    else {
+        r = __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+    }
+    return r;
+}
+
+static CYTHON_INLINE long __Pyx_NegateNonNeg(long b) { return unlikely(b < 0) ? b : !b; }
+static CYTHON_INLINE PyObject* __Pyx_PyBoolOrNull_FromLong(long b) {
+    return unlikely(b < 0) ? NULL : __Pyx_PyBool_FromLong(b);
+}
+
+static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void);
+
+
+#if PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
+    PyObject *value;
+    if (unlikely(d == Py_None)) {
+        __Pyx_RaiseNoneIndexingError();
+        return NULL;
+    }
+    value = PyDict_GetItemWithError(d, key);
+    if (unlikely(!value)) {
+        if (!PyErr_Occurred())
+            PyErr_SetObject(PyExc_KeyError, key);
+        return NULL;
+    }
+    Py_INCREF(value);
+    return value;
+}
+#else
+    #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
+#endif
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
+
 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(void);
-
-static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
-static int __Pyx_EndUnpack(PyObject *); /*proto*/
-
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
-
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

 static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/
-
-static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact); /*proto*/
 #if PY_MAJOR_VERSION < 3
 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
 static void __Pyx_ReleaseBuffer(Py_buffer *view);
@@ -486,8 +580,6 @@
 Py_ssize_t __Pyx_minusones[] = {-1};

 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
-
-static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/

 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
@@ -590,6 +682,8 @@

 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 *);
@@ -609,13 +703,17 @@
 static void __Pyx_AddTraceback(const char *funcname); /*proto*/

 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
-/* Module declarations from python_buffer */
-
-/* Module declarations from python_ref */
-
-/* Module declarations from stdlib */
-
-/* Module declarations from stdio */
+/* Module declarations from libc.stdlib */
+
+/* Module declarations from libc.string */
+
+/* Module declarations from cpython.buffer */
+
+/* Module declarations from cpython.ref */
+
+/* Module declarations from libc.stdio */
+
+/* Module declarations from cpython.object */

 /* Module declarations from numpy */

@@ -634,13 +732,16 @@
 static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
 static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *, PyObject *); /*proto*/
 static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *); /*proto*/
-/* Module declarations from cbowtie */
-
-static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t = { "numpy.uint32_t", NULL, sizeof(__pyx_t_5numpy_uint32_t), 'U' };
-#define __Pyx_MODULE_NAME "cbowtie"
-int __pyx_module_is_main_cbowtie = 0;
-
-/* Implementation of cbowtie */
+/* Module declarations from methylcoder.cbowtie */
+
+static PyObject *__pyx_v_11methylcoder_7cbowtie_colorspace = 0;
+static PyObject *__pyx_v_11methylcoder_7cbowtie_seqspace = 0;
+static PyObject *__pyx_f_11methylcoder_7cbowtie__cs2seq(char *); /*proto*/
+static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t = { "uint32_t", NULL, sizeof(__pyx_t_5numpy_uint32_t), 'U' };
+#define __Pyx_MODULE_NAME "methylcoder.cbowtie"
+int __pyx_module_is_main_methylcoder__cbowtie = 0;
+
+/* Implementation of methylcoder.cbowtie */
 static PyObject *__pyx_builtin_range;
 static PyObject *__pyx_builtin_ValueError;
 static PyObject *__pyx_builtin_RuntimeError;
@@ -650,7 +751,9 @@
 static char __pyx_k_4[] = "unknown dtype code in numpy.pxd (%d)";
 static char __pyx_k_5[] = "Format string allocated too short, see comment in numpy.pxd";
 static char __pyx_k_6[] = "Format string allocated too short.";
-static char __pyx_k_7[] = "_update_conversions (line 7)";
+static char __pyx_k_7[] = "_update_conversions (line 12)";
+static char __pyx_k_8[] = "cs2seq (line 91)";
+static char __pyx_k_9[] = "seq2cs (line 148)";
 static char __pyx_k__B[] = "B";
 static char __pyx_k__H[] = "H";
 static char __pyx_k__I[] = "I";
@@ -666,6 +769,22 @@
 static char __pyx_k__l[] = "l";
 static char __pyx_k__n[] = "n";
 static char __pyx_k__q[] = "q";
+static char __pyx_k__AA[] = "AA";
+static char __pyx_k__AC[] = "AC";
+static char __pyx_k__AG[] = "AG";
+static char __pyx_k__AT[] = "AT";
+static char __pyx_k__CA[] = "CA";
+static char __pyx_k__CC[] = "CC";
+static char __pyx_k__CG[] = "CG";
+static char __pyx_k__CT[] = "CT";
+static char __pyx_k__GA[] = "GA";
+static char __pyx_k__GC[] = "GC";
+static char __pyx_k__GG[] = "GG";
+static char __pyx_k__GT[] = "GT";
+static char __pyx_k__TA[] = "TA";
+static char __pyx_k__TC[] = "TC";
+static char __pyx_k__TG[] = "TG";
+static char __pyx_k__TT[] = "TT";
 static char __pyx_k__Zd[] = "Zd";
 static char __pyx_k__Zf[] = "Zf";
 static char __pyx_k__Zg[] = "Zg";
@@ -676,13 +795,16 @@
 static char __pyx_k__base[] = "base";
 static char __pyx_k__ndim[] = "ndim";
 static char __pyx_k__pair[] = "pair";
+static char __pyx_k__ACGTN[] = "ACGTN";
 static char __pyx_k__descr[] = "descr";
 static char __pyx_k__names[] = "names";
 static char __pyx_k__numpy[] = "numpy";
 static char __pyx_k__range[] = "range";
 static char __pyx_k__shape[] = "shape";
+static char __pyx_k__cs2seq[] = "cs2seq";
 static char __pyx_k__fields[] = "fields";
 static char __pyx_k__format[] = "format";
+static char __pyx_k__seq2cs[] = "seq2cs";
 static char __pyx_k__aln_seq[] = "aln_seq";
 static char __pyx_k__c_count[] = "c_count";
 static char __pyx_k__ref_seq[] = "ref_seq";
@@ -698,6 +820,7 @@
 static char __pyx_k__suboffsets[] = "suboffsets";
 static char __pyx_k__RuntimeError[] = "RuntimeError";
 static char __pyx_k__base_position[] = "base_position";
+static char __pyx_k__is_colorspace[] = "is_colorspace";
 static char __pyx_k__allowed_mismatches[] = "allowed_mismatches";
 static char __pyx_k___update_conversions[] = "_update_conversions";
 static PyObject *__pyx_kp_u_1;
@@ -707,7 +830,26 @@
 static PyObject *__pyx_kp_u_5;
 static PyObject *__pyx_kp_u_6;
 static PyObject *__pyx_kp_u_7;
+static PyObject *__pyx_kp_u_8;
+static PyObject *__pyx_kp_u_9;
+static PyObject *__pyx_n_s__AA;
+static PyObject *__pyx_n_s__AC;
+static PyObject *__pyx_n_s__ACGTN;
+static PyObject *__pyx_n_s__AG;
+static PyObject *__pyx_n_s__AT;
+static PyObject *__pyx_n_s__CA;
+static PyObject *__pyx_n_s__CC;
+static PyObject *__pyx_n_s__CG;
+static PyObject *__pyx_n_s__CT;
+static PyObject *__pyx_n_s__GA;
+static PyObject *__pyx_n_s__GC;
+static PyObject *__pyx_n_s__GG;
+static PyObject *__pyx_n_s__GT;
 static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s__TA;
+static PyObject *__pyx_n_s__TC;
+static PyObject *__pyx_n_s__TG;
+static PyObject *__pyx_n_s__TT;
 static PyObject *__pyx_n_s__ValueError;
 static PyObject *__pyx_n_s____main__;
 static PyObject *__pyx_n_s____test__;
@@ -719,9 +861,11 @@
 static PyObject *__pyx_n_s__buf;
 static PyObject *__pyx_n_s__byteorder;
 static PyObject *__pyx_n_s__c_count;
+static PyObject *__pyx_n_s__cs2seq;
 static PyObject *__pyx_n_s__descr;
 static PyObject *__pyx_n_s__fields;
 static PyObject *__pyx_n_s__format;
+static PyObject *__pyx_n_s__is_colorspace;
 static PyObject *__pyx_n_s__itemsize;
 static PyObject *__pyx_n_s__n;
 static PyObject *__pyx_n_s__names;
@@ -733,6 +877,7 @@
 static PyObject *__pyx_n_s__range;
 static PyObject *__pyx_n_s__readonly;
 static PyObject *__pyx_n_s__ref_seq;
+static PyObject *__pyx_n_s__seq2cs;
 static PyObject *__pyx_n_s__shape;
 static PyObject *__pyx_n_s__strides;
 static PyObject *__pyx_n_s__suboffsets;
@@ -741,9 +886,18 @@
 static PyObject *__pyx_n_s__type_num;
 static PyObject *__pyx_int_0;
 static PyObject *__pyx_int_1;
+static PyObject *__pyx_int_2;
+static PyObject *__pyx_int_3;
+static PyObject *__pyx_int_neg_1;
 static PyObject *__pyx_int_15;
-
-/* "/opt/src/methylcode/methylcoder/cbowtie.pyx":7
+static PyObject *__pyx_int_48;
+static PyObject *__pyx_int_65;
+static PyObject *__pyx_int_67;
+static PyObject *__pyx_int_71;
+static PyObject *__pyx_int_78;
+static PyObject *__pyx_int_84;
+
+/* "/opt/src/methylcode/methylcoder/cbowtie.pyx":12
  *
  *
  * def _update_conversions(char *ref_seq, char *aln_seq, int base_position,             # <<<<<<<<<<<<<<
@@ -751,9 +905,9 @@
  *                         np.ndarray[np.uint32_t] c_count,
  */

-static PyObject *__pyx_pf_7cbowtie__update_conversions(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7cbowtie__update_conversions[] = "\n    this updates the conversions (counts) from c2t in between\n    the ref_sequence and the aln_seq\n    first it checks if the sequence was mistakenly aligned by the c2t \n    conversion. if so, it does not update the counts.\n    ";
-static PyObject *__pyx_pf_7cbowtie__update_conversions(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pf_11methylcoder_7cbowtie__update_conversions(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_11methylcoder_7cbowtie__update_conversions[] = "\n    this updates the conversions (counts) from c2t in between\n    the ref_sequence and the aln_seq\n    first it checks if the sequence was mistakenly aligned by the c2t \n    conversion. if so, it does not update the counts.\n    ";
+static PyObject *__pyx_pf_11methylcoder_7cbowtie__update_conversions(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   char *__pyx_v_ref_seq;
   char *__pyx_v_aln_seq;
   int __pyx_v_base_position;
@@ -762,9 +916,11 @@
   PyArrayObject *__pyx_v_t_count = 0;
   int __pyx_v_allowed_mismatches;
   int __pyx_v_n;
+  int __pyx_v_is_colorspace;
   int __pyx_v_i;
   char __pyx_v_a;
   char __pyx_v_b;
+  PyObject *__pyx_v_t;
   char __pyx_v_c1;
   char __pyx_v_c2;
   Py_buffer __pyx_bstruct_c_count;
@@ -774,19 +930,23 @@
   Py_ssize_t __pyx_bstride_0_t_count = 0;
   Py_ssize_t __pyx_bshape_0_t_count = 0;
   PyObject *__pyx_r = NULL;
-  int __pyx_t_1;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  int __pyx_t_4;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
   int __pyx_t_5;
   int __pyx_t_6;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ref_seq,&__pyx_n_s__aln_seq,&__pyx_n_s__base_position,&__pyx_n_s__pair,&__pyx_n_s__c_count,&__pyx_n_s__t_count,&__pyx_n_s__allowed_mismatches,&__pyx_n_s__n,0};
+  int __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ref_seq,&__pyx_n_s__aln_seq,&__pyx_n_s__base_position,&__pyx_n_s__pair,&__pyx_n_s__c_count,&__pyx_n_s__t_count,&__pyx_n_s__allowed_mismatches,&__pyx_n_s__n,&__pyx_n_s__is_colorspace,0};
   __Pyx_RefNannySetupContext("_update_conversions");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
-    PyObject* values[8] = {0,0,0,0,0,0,0,0};
+    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
     switch (PyTuple_GET_SIZE(__pyx_args)) {
+      case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
       case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
       case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
       case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
@@ -807,96 +967,150 @@
       values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__aln_seq);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 8, 8, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
       values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_position);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 8, 8, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
       values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pair);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 8, 8, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
       values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__c_count);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 8, 8, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
       values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__t_count);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 8, 8, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
       values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__allowed_mismatches);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 8, 8, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
       values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__n);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 8, 8, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
+      case  8:
+      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__is_colorspace);
+      if (likely(values[8])) kw_args--;
+      else {
+        __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_update_conversions") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    }
-    __pyx_v_ref_seq = __Pyx_PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_ref_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_aln_seq = __Pyx_PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_aln_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_base_position = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_base_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_pair = __Pyx_PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_pair) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_update_conversions") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    }
+    __pyx_v_ref_seq = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_ref_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_aln_seq = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_aln_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_base_position = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_base_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_pair = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_pair) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_c_count = ((PyArrayObject *)values[4]);
     __pyx_v_t_count = ((PyArrayObject *)values[5]);
-    __pyx_v_allowed_mismatches = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_allowed_mismatches == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_n = __Pyx_PyInt_AsInt(values[7]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
+    __pyx_v_allowed_mismatches = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_allowed_mismatches == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_n = __Pyx_PyInt_AsInt(values[7]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_is_colorspace = __Pyx_PyObject_IsTrue(values[8]); if (unlikely((__pyx_v_is_colorspace == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
     goto __pyx_L5_argtuple_error;
   } else {
-    __pyx_v_ref_seq = __Pyx_PyBytes_AsString(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((!__pyx_v_ref_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_aln_seq = __Pyx_PyBytes_AsString(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((!__pyx_v_aln_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_base_position = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_base_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_pair = __Pyx_PyBytes_AsString(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((!__pyx_v_pair) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_ref_seq = PyBytes_AsString(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((!__pyx_v_ref_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_aln_seq = PyBytes_AsString(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((!__pyx_v_aln_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_base_position = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_base_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_pair = PyBytes_AsString(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((!__pyx_v_pair) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_c_count = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 4));
     __pyx_v_t_count = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 5));
-    __pyx_v_allowed_mismatches = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_allowed_mismatches == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_n = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 7)); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_allowed_mismatches = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_allowed_mismatches == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_n = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 7)); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_is_colorspace = __Pyx_PyObject_IsTrue(PyTuple_GET_ITEM(__pyx_args, 8)); if (unlikely((__pyx_v_is_colorspace == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("_update_conversions", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
-  __Pyx_AddTraceback("cbowtie._update_conversions");
+  __Pyx_AddTraceback("methylcoder.cbowtie._update_conversions");
+  __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __Pyx_INCREF((PyObject *)__pyx_v_c_count);
-  __Pyx_INCREF((PyObject *)__pyx_v_t_count);
+  __pyx_v_t = Py_None; __Pyx_INCREF(Py_None);
   __pyx_bstruct_c_count.buf = NULL;
   __pyx_bstruct_t_count.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c_count), __pyx_ptype_5numpy_ndarray, 1, "c_count", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_t_count), __pyx_ptype_5numpy_ndarray, 1, "t_count", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c_count), __pyx_ptype_5numpy_ndarray, 1, "c_count", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_t_count), __pyx_ptype_5numpy_ndarray, 1, "t_count", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_c_count, (PyObject*)__pyx_v_c_count, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_c_count, (PyObject*)__pyx_v_c_count, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_c_count = __pyx_bstruct_c_count.strides[0];
   __pyx_bshape_0_c_count = __pyx_bstruct_c_count.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_t_count, (PyObject*)__pyx_v_t_count, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_t_count, (PyObject*)__pyx_v_t_count, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_t_count = __pyx_bstruct_t_count.strides[0];
   __pyx_bshape_0_t_count = __pyx_bstruct_t_count.shape[0];

-  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":21
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":26
+ *     cdef int i
  *     cdef char a, b
+ *     if is_colorspace:             # <<<<<<<<<<<<<<
+ *         t = cs2seq(aln_seq)
+ *         aln_seq = t
+ */
+  if (__pyx_v_is_colorspace) {
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":27
+ *     cdef char a, b
+ *     if is_colorspace:
+ *         t = cs2seq(aln_seq)             # <<<<<<<<<<<<<<
+ *         aln_seq = t
+ *     # CT, GA
+ */
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__cs2seq); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyBytes_FromString(__pyx_v_aln_seq); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
+    __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_v_t);
+    __pyx_v_t = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":28
+ *     if is_colorspace:
+ *         t = cs2seq(aln_seq)
+ *         aln_seq = t             # <<<<<<<<<<<<<<
+ *     # CT, GA
+ *     cdef char c1 = pair[0], c2 = pair[1]
+ */
+    __pyx_t_4 = PyBytes_AsString(__pyx_v_t); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_aln_seq = __pyx_t_4;
+    goto __pyx_L6;
+  }
+  __pyx_L6:;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":30
+ *         aln_seq = t
  *     # CT, GA
  *     cdef char c1 = pair[0], c2 = pair[1]             # <<<<<<<<<<<<<<
  *     if allowed_mismatches > -1:
@@ -905,69 +1119,69 @@
   __pyx_v_c1 = (__pyx_v_pair[0]);
   __pyx_v_c2 = (__pyx_v_pair[1]);

-  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":22
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":31
  *     # CT, GA
  *     cdef char c1 = pair[0], c2 = pair[1]
  *     if allowed_mismatches > -1:             # <<<<<<<<<<<<<<
  *         for i in range(n):
  *             # if genome is a T and read is a C
  */
-  __pyx_t_1 = (__pyx_v_allowed_mismatches > -1);
-  if (__pyx_t_1) {
-
-    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":23
+  __pyx_t_5 = (__pyx_v_allowed_mismatches > -1);
+  if (__pyx_t_5) {
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":32
  *     cdef char c1 = pair[0], c2 = pair[1]
  *     if allowed_mismatches > -1:
  *         for i in range(n):             # <<<<<<<<<<<<<<
  *             # if genome is a T and read is a C
  *             # bowtie couldnt find this cause we
  */
-    __pyx_t_2 = __pyx_v_n;
-    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
-      __pyx_v_i = __pyx_t_3;
-
-      /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":27
+    __pyx_t_6 = __pyx_v_n;
+    for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
+      __pyx_v_i = __pyx_t_7;
+
+      /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":36
  *             # bowtie couldnt find this cause we
  *             # converted C to T.
  *             if ref_seq[i] != c2: continue             # <<<<<<<<<<<<<<
  *             if aln_seq[i] == c1:
  *                 if allowed_mismatches == 0: return 1
  */
-      __pyx_t_1 = ((__pyx_v_ref_seq[__pyx_v_i]) != __pyx_v_c2);
-      if (__pyx_t_1) {
-        goto __pyx_L7_continue;
-        goto __pyx_L9;
+      __pyx_t_5 = ((__pyx_v_ref_seq[__pyx_v_i]) != __pyx_v_c2);
+      if (__pyx_t_5) {
+        goto __pyx_L8_continue;
+        goto __pyx_L10;
       }
-      __pyx_L9:;
-
-      /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":28
+      __pyx_L10:;
+
+      /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":37
  *             # converted C to T.
  *             if ref_seq[i] != c2: continue
  *             if aln_seq[i] == c1:             # <<<<<<<<<<<<<<
  *                 if allowed_mismatches == 0: return 1
  *                 allowed_mismatches -= 1
  */
-      __pyx_t_1 = ((__pyx_v_aln_seq[__pyx_v_i]) == __pyx_v_c1);
-      if (__pyx_t_1) {
-
-        /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":29
+      __pyx_t_5 = ((__pyx_v_aln_seq[__pyx_v_i]) == __pyx_v_c1);
+      if (__pyx_t_5) {
+
+        /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":38
  *             if ref_seq[i] != c2: continue
  *             if aln_seq[i] == c1:
  *                 if allowed_mismatches == 0: return 1             # <<<<<<<<<<<<<<
  *                 allowed_mismatches -= 1
  *         if allowed_mismatches < 0: return 1
  */
-        __pyx_t_1 = (__pyx_v_allowed_mismatches == 0);
-        if (__pyx_t_1) {
+        __pyx_t_5 = (__pyx_v_allowed_mismatches == 0);
+        if (__pyx_t_5) {
           __Pyx_XDECREF(__pyx_r);
           __Pyx_INCREF(__pyx_int_1);
           __pyx_r = __pyx_int_1;
           goto __pyx_L0;
-          goto __pyx_L11;
+          goto __pyx_L12;
         }
-        __pyx_L11:;
-
-        /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":30
+        __pyx_L12:;
+
+        /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":39
  *             if aln_seq[i] == c1:
  *                 if allowed_mismatches == 0: return 1
  *                 allowed_mismatches -= 1             # <<<<<<<<<<<<<<
@@ -975,44 +1189,44 @@
  *
  */
         __pyx_v_allowed_mismatches -= 1;
-        goto __pyx_L10;
+        goto __pyx_L11;
       }
-      __pyx_L10:;
-      __pyx_L7_continue:;
-    }
-
-    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":31
+      __pyx_L11:;
+      __pyx_L8_continue:;
+    }
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":40
  *                 if allowed_mismatches == 0: return 1
  *                 allowed_mismatches -= 1
  *         if allowed_mismatches < 0: return 1             # <<<<<<<<<<<<<<
  *
  *     # for proofing.
  */
-    __pyx_t_1 = (__pyx_v_allowed_mismatches < 0);
-    if (__pyx_t_1) {
+    __pyx_t_5 = (__pyx_v_allowed_mismatches < 0);
+    if (__pyx_t_5) {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_int_1);
       __pyx_r = __pyx_int_1;
       goto __pyx_L0;
-      goto __pyx_L12;
-    }
-    __pyx_L12:;
-    goto __pyx_L6;
+      goto __pyx_L13;
+    }
+    __pyx_L13:;
+    goto __pyx_L7;
   }
-  __pyx_L6:;
-
-  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":43
+  __pyx_L7:;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":51
  *     """
  *
  *     for i in range(n):             # <<<<<<<<<<<<<<
  *         a = ref_seq[i]
  *         if a != c1: continue
  */
-  __pyx_t_2 = __pyx_v_n;
-  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
-    __pyx_v_i = __pyx_t_3;
-
-    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":44
+  __pyx_t_6 = __pyx_v_n;
+  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
+    __pyx_v_i = __pyx_t_7;
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":52
  *
  *     for i in range(n):
  *         a = ref_seq[i]             # <<<<<<<<<<<<<<
@@ -1021,21 +1235,21 @@
  */
     __pyx_v_a = (__pyx_v_ref_seq[__pyx_v_i]);

-    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":45
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":53
  *     for i in range(n):
  *         a = ref_seq[i]
  *         if a != c1: continue             # <<<<<<<<<<<<<<
  *         b = aln_seq[i]
  *         # CC
  */
-    __pyx_t_1 = (__pyx_v_a != __pyx_v_c1);
-    if (__pyx_t_1) {
-      goto __pyx_L13_continue;
-      goto __pyx_L15;
-    }
-    __pyx_L15:;
-
-    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":46
+    __pyx_t_5 = (__pyx_v_a != __pyx_v_c1);
+    if (__pyx_t_5) {
+      goto __pyx_L14_continue;
+      goto __pyx_L16;
+    }
+    __pyx_L16:;
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":54
  *         a = ref_seq[i]
  *         if a != c1: continue
  *         b = aln_seq[i]             # <<<<<<<<<<<<<<
@@ -1044,75 +1258,59 @@
  */
     __pyx_v_b = (__pyx_v_aln_seq[__pyx_v_i]);

-    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":48
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":56
  *         b = aln_seq[i]
  *         # CC
  *         if b == c1:             # <<<<<<<<<<<<<<
  *             c_count[base_position + i] += 1
  *             # debug
  */
-    __pyx_t_1 = (__pyx_v_b == __pyx_v_c1);
-    if (__pyx_t_1) {
-
-      /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":49
+    __pyx_t_5 = (__pyx_v_b == __pyx_v_c1);
+    if (__pyx_t_5) {
+
+      /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":57
  *         # CC
  *         if b == c1:
  *             c_count[base_position + i] += 1             # <<<<<<<<<<<<<<
  *             # debug
  *             #d[i] = chr(c1); ccs += 1
  */
-      __pyx_t_4 = (__pyx_v_base_position + __pyx_v_i);
-      __pyx_t_5 = -1;
-      if (__pyx_t_4 < 0) {
-        __pyx_t_4 += __pyx_bshape_0_c_count;
-        if (unlikely(__pyx_t_4 < 0)) __pyx_t_5 = 0;
-      } else if (unlikely(__pyx_t_4 >= __pyx_bshape_0_c_count)) __pyx_t_5 = 0;
-      if (unlikely(__pyx_t_5 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_5);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint32_t *, __pyx_bstruct_c_count.buf, __pyx_t_4, __pyx_bstride_0_c_count) += 1;
-      goto __pyx_L16;
-    }
-
-    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":53
+      __pyx_t_8 = (__pyx_v_base_position + __pyx_v_i);
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint32_t *, __pyx_bstruct_c_count.buf, __pyx_t_8, __pyx_bstride_0_c_count) += 1;
+      goto __pyx_L17;
+    }
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":61
  *             #d[i] = chr(c1); ccs += 1
  *         # CT
  *         elif b == c2:             # <<<<<<<<<<<<<<
  *             t_count[base_position + i] += 1
  *             # debug
  */
-    __pyx_t_1 = (__pyx_v_b == __pyx_v_c2);
-    if (__pyx_t_1) {
-
-      /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":54
+    __pyx_t_5 = (__pyx_v_b == __pyx_v_c2);
+    if (__pyx_t_5) {
+
+      /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":62
  *         # CT
  *         elif b == c2:
  *             t_count[base_position + i] += 1             # <<<<<<<<<<<<<<
  *             # debug
  *             #d[i] = chr(c2); tts += 1
  */
-      __pyx_t_5 = (__pyx_v_base_position + __pyx_v_i);
-      __pyx_t_6 = -1;
-      if (__pyx_t_5 < 0) {
-        __pyx_t_5 += __pyx_bshape_0_t_count;
-        if (unlikely(__pyx_t_5 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_5 >= __pyx_bshape_0_t_count)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint32_t *, __pyx_bstruct_t_count.buf, __pyx_t_5, __pyx_bstride_0_t_count) += 1;
-      goto __pyx_L16;
-    }
-    __pyx_L16:;
-    __pyx_L13_continue:;
+      __pyx_t_9 = (__pyx_v_base_position + __pyx_v_i);
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint32_t *, __pyx_bstruct_t_count.buf, __pyx_t_9, __pyx_bstride_0_t_count) += 1;
+      goto __pyx_L17;
+    }
+    __pyx_L17:;
+    __pyx_L14_continue:;
   }

-  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":63
- *         sys.stderr.write("converted to t: %i\n\n" % tts)
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":70
+ *     sys.stderr.write("converted to t: %i\n\n" % tts)
  *     """
  *     return 0             # <<<<<<<<<<<<<<
+ *
+ * cdef dict colorspace = {
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_int_0);
@@ -1122,26 +1320,555 @@
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_c_count);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_t_count);
   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("cbowtie._update_conversions");
+  __Pyx_AddTraceback("methylcoder.cbowtie._update_conversions");
   __pyx_r = NULL;
   goto __pyx_L2;
   __pyx_L0:;
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_c_count);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_t_count);
   __pyx_L2:;
-  __Pyx_DECREF((PyObject *)__pyx_v_c_count);
-  __Pyx_DECREF((PyObject *)__pyx_v_t_count);
+  __Pyx_DECREF(__pyx_v_t);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":187
+/* "/opt/src/methylcode/methylcoder/cbowtie.pyx":91
+ *
+ *
+ * def cs2seq(cs):             # <<<<<<<<<<<<<<
+ *     """
+ *     convert a color-space encoded read to DNA sequence
+ */
+
+static PyObject *__pyx_pf_11methylcoder_7cbowtie_cs2seq(PyObject *__pyx_self, PyObject *__pyx_v_cs); /*proto*/
+static char __pyx_doc_11methylcoder_7cbowtie_cs2seq[] = "\n    convert a color-space encoded read to DNA sequence\n    >>> cs2seq('A32102302224')\n    'ATCAAGCCTCTN'\n\n    >>> cs2seq('42220320123A')\n    'NTCTCCGAACTA'\n\n    ";
+static PyObject *__pyx_pf_11methylcoder_7cbowtie_cs2seq(PyObject *__pyx_self, PyObject *__pyx_v_cs) {
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  char *__pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  __Pyx_RefNannySetupContext("cs2seq");
+  __pyx_self = __pyx_self;
+  __Pyx_INCREF(__pyx_v_cs);
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":101
+ *
+ *     """
+ *     if not cs[0] in "ACGTN":             # <<<<<<<<<<<<<<
+ *         cs = cs[::-1]
+ *         return _cs2seq(cs)[::-1]
+ */
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_cs, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = ((PySequence_Contains(((PyObject *)__pyx_n_s__ACGTN), __pyx_t_1))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = (!__pyx_t_2);
+  if (__pyx_t_3) {
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":102
+ *     """
+ *     if not cs[0] in "ACGTN":
+ *         cs = cs[::-1]             # <<<<<<<<<<<<<<
+ *         return _cs2seq(cs)[::-1]
+ *     return _cs2seq(cs)
+ */
+    __pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_cs, __pyx_t_1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_v_cs);
+    __pyx_v_cs = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":103
+ *     if not cs[0] in "ACGTN":
+ *         cs = cs[::-1]
+ *         return _cs2seq(cs)[::-1]             # <<<<<<<<<<<<<<
+ *     return _cs2seq(cs)
+ *
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_5 = PyBytes_AsString(__pyx_v_cs); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __pyx_f_11methylcoder_7cbowtie__cs2seq(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_6 = PyObject_GetItem(__pyx_t_4, __pyx_t_1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_r = __pyx_t_6;
+    __pyx_t_6 = 0;
+    goto __pyx_L0;
+    goto __pyx_L5;
+  }
+  __pyx_L5:;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":104
+ *         cs = cs[::-1]
+ *         return _cs2seq(cs)[::-1]
+ *     return _cs2seq(cs)             # <<<<<<<<<<<<<<
+ *
+ *
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyBytes_AsString(__pyx_v_cs); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __pyx_f_11methylcoder_7cbowtie__cs2seq(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_r = __pyx_t_6;
+  __pyx_t_6 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 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_6);
+  __Pyx_AddTraceback("methylcoder.cbowtie.cs2seq");
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_DECREF(__pyx_v_cs);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/opt/src/methylcode/methylcoder/cbowtie.pyx":107
+ *
+ *
+ * cdef _cs2seq(char *cs):             # <<<<<<<<<<<<<<
+ *     cdef int seqlen = strlen(cs)
+ *     #print >>sys.stderr, "\n\n%s" % cs
+ */
+
+static  PyObject *__pyx_f_11methylcoder_7cbowtie__cs2seq(char *__pyx_v_cs) {
+  int __pyx_v_seqlen;
+  int __pyx_v_i;
+  char *__pyx_v_seq;
+  char __pyx_v_k1;
+  char __pyx_v_k2;
+  int __pyx_v_start;
+  int __pyx_v_stop;
+  PyObject *__pyx_v_sublist;
+  PyObject *__pyx_r = NULL;
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char __pyx_t_4;
+  __Pyx_RefNannySetupContext("_cs2seq");
+  __pyx_v_sublist = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":108
+ *
+ * cdef _cs2seq(char *cs):
+ *     cdef int seqlen = strlen(cs)             # <<<<<<<<<<<<<<
+ *     #print >>sys.stderr, "\n\n%s" % cs
+ *     cdef int i = 0
+ */
+  __pyx_v_seqlen = strlen(__pyx_v_cs);
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":110
+ *     cdef int seqlen = strlen(cs)
+ *     #print >>sys.stderr, "\n\n%s" % cs
+ *     cdef int i = 0             # <<<<<<<<<<<<<<
+ *     cdef char *seq = <char *>malloc(sizeof(char) * (1 + seqlen))
+ *     seq[0] = cs[0]
+ */
+  __pyx_v_i = 0;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":111
+ *     #print >>sys.stderr, "\n\n%s" % cs
+ *     cdef int i = 0
+ *     cdef char *seq = <char *>malloc(sizeof(char) * (1 + seqlen))             # <<<<<<<<<<<<<<
+ *     seq[0] = cs[0]
+ *     #cdef object k1, k2
+ */
+  __pyx_v_seq = ((char *)malloc(((sizeof(char)) * (1 + __pyx_v_seqlen))));
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":112
+ *     cdef int i = 0
+ *     cdef char *seq = <char *>malloc(sizeof(char) * (1 + seqlen))
+ *     seq[0] = cs[0]             # <<<<<<<<<<<<<<
+ *     #cdef object k1, k2
+ *     cdef char k1, k2
+ */
+  (__pyx_v_seq[0]) = (__pyx_v_cs[0]);
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":115
+ *     #cdef object k1, k2
+ *     cdef char k1, k2
+ *     cdef int start = 1, stop = seqlen             # <<<<<<<<<<<<<<
+ *     cdef list sublist
+ *
+ */
+  __pyx_v_start = 1;
+  __pyx_v_stop = __pyx_v_seqlen;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":118
+ *     cdef list sublist
+ *
+ *     for i in range(start, stop):             # <<<<<<<<<<<<<<
+ *
+ *         k1 = seq[i - 1] # decoded DNA character
+ */
+  __pyx_t_1 = __pyx_v_stop;
+  for (__pyx_t_2 = __pyx_v_start; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":120
+ *     for i in range(start, stop):
+ *
+ *         k1 = seq[i - 1] # decoded DNA character             # <<<<<<<<<<<<<<
+ *         k2 = cs[i] - 48 # char number to index
+ *         sublist = colorspace[k1]
+ */
+    __pyx_v_k1 = (__pyx_v_seq[(__pyx_v_i - 1)]);
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":121
+ *
+ *         k1 = seq[i - 1] # decoded DNA character
+ *         k2 = cs[i] - 48 # char number to index             # <<<<<<<<<<<<<<
+ *         sublist = colorspace[k1]
+ *         seq[i] = sublist[k2]
+ */
+    __pyx_v_k2 = ((__pyx_v_cs[__pyx_v_i]) - 48);
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":122
+ *         k1 = seq[i - 1] # decoded DNA character
+ *         k2 = cs[i] - 48 # char number to index
+ *         sublist = colorspace[k1]             # <<<<<<<<<<<<<<
+ *         seq[i] = sublist[k2]
+ *     seq[seqlen] = c'\0'
+ */
+    __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_11methylcoder_7cbowtie_colorspace), __pyx_v_k1, sizeof(char), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    if (!(likely(PyList_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(((PyObject *)__pyx_v_sublist));
+    __pyx_v_sublist = ((PyObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":123
+ *         k2 = cs[i] - 48 # char number to index
+ *         sublist = colorspace[k1]
+ *         seq[i] = sublist[k2]             # <<<<<<<<<<<<<<
+ *     seq[seqlen] = c'\0'
+ *     try:
+ */
+    __pyx_t_3 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_sublist), __pyx_v_k2, sizeof(char), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyInt_AsChar(__pyx_t_3); if (unlikely((__pyx_t_4 == (char)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    (__pyx_v_seq[__pyx_v_i]) = __pyx_t_4;
+  }
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":124
+ *         sublist = colorspace[k1]
+ *         seq[i] = sublist[k2]
+ *     seq[seqlen] = c'\0'             # <<<<<<<<<<<<<<
+ *     try:
+ *         return seq
+ */
+  (__pyx_v_seq[__pyx_v_seqlen]) = '\x00';
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":125
+ *         seq[i] = sublist[k2]
+ *     seq[seqlen] = c'\0'
+ *     try:             # <<<<<<<<<<<<<<
+ *         return seq
+ *     finally:
+ */
+  /*try:*/ {
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":126
+ *     seq[seqlen] = c'\0'
+ *     try:
+ *         return seq             # <<<<<<<<<<<<<<
+ *     finally:
+ *         free(seq)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = PyBytes_FromString(__pyx_v_seq); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L6;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __pyx_r = ((PyObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L5;
+  }
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":128
+ *         return seq
+ *     finally:
+ *         free(seq)             # <<<<<<<<<<<<<<
+ *
+ * cdef dict seqspace = {
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L7;
+    __pyx_L5: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L7;
+    __pyx_L6: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L7;
+    }
+    __pyx_L7:;
+    free(__pyx_v_seq);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("methylcoder.cbowtie._cs2seq");
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_DECREF(__pyx_v_sublist);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/opt/src/methylcode/methylcoder/cbowtie.pyx":148
+ *     'TA': 3}
+ *
+ * def seq2cs(char *seq):             # <<<<<<<<<<<<<<
+ *     """
+ *     convert sequence into colorspace
+ */
+
+static PyObject *__pyx_pf_11methylcoder_7cbowtie_seq2cs(PyObject *__pyx_self, PyObject *__pyx_arg_seq); /*proto*/
+static char __pyx_doc_11methylcoder_7cbowtie_seq2cs[] = "\n    convert sequence into colorspace\n    ";
+static PyObject *__pyx_pf_11methylcoder_7cbowtie_seq2cs(PyObject *__pyx_self, PyObject *__pyx_arg_seq) {
+  char *__pyx_v_seq;
+  PyObject *__pyx_v_seqlen;
+  char *__pyx_v_cs;
+  char __pyx_v_dub[3];
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  size_t __pyx_t_3;
+  long __pyx_t_4;
+  int __pyx_t_5;
+  char __pyx_t_6;
+  __Pyx_RefNannySetupContext("seq2cs");
+  __pyx_self = __pyx_self;
+  assert(__pyx_arg_seq); {
+    __pyx_v_seq = PyBytes_AsString(__pyx_arg_seq); if (unlikely((!__pyx_v_seq) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("methylcoder.cbowtie.seq2cs");
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_v_seqlen = Py_None; __Pyx_INCREF(Py_None);
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":152
+ *     convert sequence into colorspace
+ *     """
+ *     seqlen = strlen(seq)             # <<<<<<<<<<<<<<
+ *     cdef char *cs = <char *>malloc(sizeof(char) * (seqlen))
+ *     cdef char[3] dub
+ */
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(strlen(__pyx_v_seq)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_v_seqlen);
+  __pyx_v_seqlen = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":153
+ *     """
+ *     seqlen = strlen(seq)
+ *     cdef char *cs = <char *>malloc(sizeof(char) * (seqlen))             # <<<<<<<<<<<<<<
+ *     cdef char[3] dub
+ *     dub[2] = '\0'
+ */
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(char))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_v_seqlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyInt_AsSize_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_cs = ((char *)malloc(__pyx_t_3));
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":155
+ *     cdef char *cs = <char *>malloc(sizeof(char) * (seqlen))
+ *     cdef char[3] dub
+ *     dub[2] = '\0'             # <<<<<<<<<<<<<<
+ *     cs[0] = seq[0]
+ *     cdef int i
+ */
+  (__pyx_v_dub[2]) = '\x00';
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":156
+ *     cdef char[3] dub
+ *     dub[2] = '\0'
+ *     cs[0] = seq[0]             # <<<<<<<<<<<<<<
+ *     cdef int i
+ *     for i in range(seqlen - 1):
+ */
+  (__pyx_v_cs[0]) = (__pyx_v_seq[0]);
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":158
+ *     cs[0] = seq[0]
+ *     cdef int i
+ *     for i in range(seqlen - 1):             # <<<<<<<<<<<<<<
+ *         dub[0] = seq[i]
+ *         dub[1] = seq[i + 1]
+ */
+  __pyx_t_2 = PyNumber_Subtract(__pyx_v_seqlen, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = __Pyx_PyInt_AsLong(__pyx_t_2); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+    __pyx_v_i = __pyx_t_5;
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":159
+ *     cdef int i
+ *     for i in range(seqlen - 1):
+ *         dub[0] = seq[i]             # <<<<<<<<<<<<<<
+ *         dub[1] = seq[i + 1]
+ *         cs[i + 1] = seqspace[dub] + 48
+ */
+    (__pyx_v_dub[0]) = (__pyx_v_seq[__pyx_v_i]);
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":160
+ *     for i in range(seqlen - 1):
+ *         dub[0] = seq[i]
+ *         dub[1] = seq[i + 1]             # <<<<<<<<<<<<<<
+ *         cs[i + 1] = seqspace[dub] + 48
+ *     try:
+ */
+    (__pyx_v_dub[1]) = (__pyx_v_seq[(__pyx_v_i + 1)]);
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":161
+ *         dub[0] = seq[i]
+ *         dub[1] = seq[i + 1]
+ *         cs[i + 1] = seqspace[dub] + 48             # <<<<<<<<<<<<<<
+ *     try:
+ *         return cs
+ */
+    __pyx_t_2 = PyBytes_FromString(__pyx_v_dub); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+    __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_11methylcoder_7cbowtie_seqspace), ((PyObject *)__pyx_t_2)); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_int_48); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_6 = __Pyx_PyInt_AsChar(__pyx_t_2); if (unlikely((__pyx_t_6 == (char)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    (__pyx_v_cs[(__pyx_v_i + 1)]) = __pyx_t_6;
+  }
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":162
+ *         dub[1] = seq[i + 1]
+ *         cs[i + 1] = seqspace[dub] + 48
+ *     try:             # <<<<<<<<<<<<<<
+ *         return cs
+ *     finally:
+ */
+  /*try:*/ {
+
+    /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":163
+ *         cs[i + 1] = seqspace[dub] + 48
+ *     try:
+ *         return cs             # <<<<<<<<<<<<<<
+ *     finally:
+ *         free(cs)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = PyBytes_FromString(__pyx_v_cs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L8;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+    __pyx_r = ((PyObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L7;
+  }
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":165
+ *         return cs
+ *     finally:
+ *         free(cs)             # <<<<<<<<<<<<<<
+ *
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L9;
+    __pyx_L7: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L9;
+    __pyx_L8: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L9;
+    }
+    __pyx_L9:;
+    free(__pyx_v_cs);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("methylcoder.cbowtie.seq2cs");
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_DECREF(__pyx_v_seqlen);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":188
  *         # experimental exception made for __getbuffer__ and __releasebuffer__
  *         # -- the details of this may change.
  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
@@ -1149,8 +1876,8 @@
  *             # requirements, and does not yet fullfill the PEP.
  */

-static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
-static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
+static CYTHON_UNUSED int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
+static CYTHON_UNUSED int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
   int __pyx_v_copy_shape;
   int __pyx_v_i;
   int __pyx_v_ndim;
@@ -1175,9 +1902,8 @@
   if (__pyx_v_info == NULL) return 0;
   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(__pyx_v_info->obj);
-  __Pyx_INCREF((PyObject *)__pyx_v_self);
-
-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":193
+
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":194
  *             # of flags
  *             cdef int copy_shape, i, ndim
  *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
@@ -1186,7 +1912,7 @@
  */
   __pyx_v_endian_detector = 1;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":194
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":195
  *             cdef int copy_shape, i, ndim
  *             cdef int endian_detector = 1
  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
@@ -1195,7 +1921,7 @@
  */
   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":196
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":197
  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
  *
  *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
@@ -1204,7 +1930,7 @@
  */
   __pyx_v_ndim = PyArray_NDIM(((PyArrayObject *)__pyx_v_self));

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":198
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":199
  *             ndim = PyArray_NDIM(self)
  *
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
@@ -1214,7 +1940,7 @@
   __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
   if (__pyx_t_1) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":199
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":200
  *
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
  *                 copy_shape = 1             # <<<<<<<<<<<<<<
@@ -1226,7 +1952,7 @@
   }
   /*else*/ {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":201
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":202
  *                 copy_shape = 1
  *             else:
  *                 copy_shape = 0             # <<<<<<<<<<<<<<
@@ -1237,7 +1963,7 @@
   }
   __pyx_L5:;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":203
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":204
  *                 copy_shape = 0
  *
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
@@ -1247,7 +1973,7 @@
   __pyx_t_1 = ((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS);
   if (__pyx_t_1) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":204
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":205
  *
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
@@ -1261,29 +1987,29 @@
   }
   if (__pyx_t_3) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":205
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":206
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
  *
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(((PyObject *)__pyx_kp_u_1));
     PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_1));
     __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_1));
-    __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L6;
   }
   __pyx_L6:;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":207
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":208
  *                 raise ValueError(u"ndarray is not C contiguous")
  *
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
@@ -1293,7 +2019,7 @@
   __pyx_t_3 = ((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS);
   if (__pyx_t_3) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":208
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":209
  *
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
@@ -1307,29 +2033,29 @@
   }
   if (__pyx_t_2) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":209
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":210
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
  *
  *             info.buf = PyArray_DATA(self)
  */
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(((PyObject *)__pyx_kp_u_2));
     PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_2));
     __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_2));
-    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L7;
   }
   __pyx_L7:;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":211
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":212
  *                 raise ValueError(u"ndarray is not Fortran contiguous")
  *
  *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
@@ -1338,7 +2064,7 @@
  */
   __pyx_v_info->buf = PyArray_DATA(((PyArrayObject *)__pyx_v_self));

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":212
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":213
  *
  *             info.buf = PyArray_DATA(self)
  *             info.ndim = ndim             # <<<<<<<<<<<<<<
@@ -1347,17 +2073,16 @@
  */
   __pyx_v_info->ndim = __pyx_v_ndim;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":213
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":214
  *             info.buf = PyArray_DATA(self)
  *             info.ndim = ndim
  *             if copy_shape:             # <<<<<<<<<<<<<<
  *                 # Allocate new buffer for strides and shape info. This is allocated
  *                 # as one block, strides first.
  */
-  __pyx_t_6 = __pyx_v_copy_shape;
-  if (__pyx_t_6) {
-
-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":216
+  if (__pyx_v_copy_shape) {
+
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":217
  *                 # Allocate new buffer for strides and shape info. This is allocated
  *                 # as one block, strides first.
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)             # <<<<<<<<<<<<<<
@@ -1366,7 +2091,7 @@
  */
     __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * __pyx_v_ndim) * 2)));

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":217
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":218
  *                 # as one block, strides first.
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
  *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
@@ -1375,7 +2100,7 @@
  */
     __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":218
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":219
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
  *                 info.shape = info.strides + ndim
  *                 for i in range(ndim):             # <<<<<<<<<<<<<<
@@ -1386,7 +2111,7 @@
     for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
       __pyx_v_i = __pyx_t_7;

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":219
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":220
  *                 info.shape = info.strides + ndim
  *                 for i in range(ndim):
  *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
@@ -1395,7 +2120,7 @@
  */
       (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(((PyArrayObject *)__pyx_v_self))[__pyx_v_i]);

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":220
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":221
  *                 for i in range(ndim):
  *                     info.strides[i] = PyArray_STRIDES(self)[i]
  *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
@@ -1408,7 +2133,7 @@
   }
   /*else*/ {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":222
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":223
  *                     info.shape[i] = PyArray_DIMS(self)[i]
  *             else:
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
@@ -1417,7 +2142,7 @@
  */
     __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(((PyArrayObject *)__pyx_v_self)));

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":223
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":224
  *             else:
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
@@ -1428,7 +2153,7 @@
   }
   __pyx_L8:;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":224
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":225
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
@@ -1437,7 +2162,7 @@
  */
   __pyx_v_info->suboffsets = NULL;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":225
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":226
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
@@ -1446,7 +2171,7 @@
  */
   __pyx_v_info->itemsize = PyArray_ITEMSIZE(((PyArrayObject *)__pyx_v_self));

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":226
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":227
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)
  *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
@@ -1455,7 +2180,7 @@
  */
   __pyx_v_info->readonly = (!PyArray_ISWRITEABLE(((PyArrayObject *)__pyx_v_self)));

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":229
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":230
  *
  *             cdef int t
  *             cdef char* f = NULL             # <<<<<<<<<<<<<<
@@ -1464,7 +2189,7 @@
  */
   __pyx_v_f = NULL;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":230
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":231
  *             cdef int t
  *             cdef char* f = NULL
  *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
@@ -1474,7 +2199,7 @@
   __Pyx_INCREF(((PyObject *)((PyArrayObject *)__pyx_v_self)->descr));
   __pyx_v_descr = ((PyArrayObject *)__pyx_v_self)->descr;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":234
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":235
  *             cdef int offset
  *
  *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
@@ -1483,7 +2208,7 @@
  */
   __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":236
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":237
  *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
  *
  *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
@@ -1499,7 +2224,7 @@
   }
   if (__pyx_t_1) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":238
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":239
  *             if not hasfields and not copy_shape:
  *                 # do not call releasebuffer
  *                 info.obj = None             # <<<<<<<<<<<<<<
@@ -1515,7 +2240,7 @@
   }
   /*else*/ {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":241
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":242
  *             else:
  *                 # need to call releasebuffer
  *                 info.obj = self             # <<<<<<<<<<<<<<
@@ -1530,7 +2255,7 @@
   }
   __pyx_L11:;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":243
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":244
  *                 info.obj = self
  *
  *             if not hasfields:             # <<<<<<<<<<<<<<
@@ -1540,7 +2265,7 @@
   __pyx_t_1 = (!__pyx_v_hasfields);
   if (__pyx_t_1) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":244
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":245
  *
  *             if not hasfields:
  *                 t = descr.type_num             # <<<<<<<<<<<<<<
@@ -1549,7 +2274,7 @@
  */
     __pyx_v_t = __pyx_v_descr->type_num;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":245
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":246
  *             if not hasfields:
  *                 t = descr.type_num
  *                 if ((descr.byteorder == '>' and little_endian) or             # <<<<<<<<<<<<<<
@@ -1564,7 +2289,7 @@
     }
     if (!__pyx_t_2) {

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":246
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":247
  *                 t = descr.type_num
  *                 if ((descr.byteorder == '>' and little_endian) or
  *                     (descr.byteorder == '<' and not little_endian)):             # <<<<<<<<<<<<<<
@@ -1584,29 +2309,29 @@
     }
     if (__pyx_t_1) {

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":247
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":248
  *                 if ((descr.byteorder == '>' and little_endian) or
  *                     (descr.byteorder == '<' and not little_endian)):
  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(((PyObject *)__pyx_kp_u_3));
       PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_3));
       __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_3));
-      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_5, 0, 0);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L13;
     }
     __pyx_L13:;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":248
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":249
  *                     (descr.byteorder == '<' and not little_endian)):
  *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
@@ -1619,7 +2344,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":249
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":250
  *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
@@ -1632,7 +2357,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":250
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":251
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
@@ -1645,7 +2370,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":251
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":252
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
@@ -1658,7 +2383,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":252
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":253
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
@@ -1671,7 +2396,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":253
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":254
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
@@ -1684,7 +2409,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":254
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":255
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
@@ -1697,7 +2422,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":255
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":256
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
@@ -1710,7 +2435,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":256
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":257
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
@@ -1723,7 +2448,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":257
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":258
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
@@ -1736,7 +2461,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":258
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":259
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
@@ -1749,7 +2474,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":259
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":260
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
@@ -1762,7 +2487,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":260
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":261
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
@@ -1775,7 +2500,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":261
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":262
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
@@ -1788,7 +2513,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":262
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":263
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
@@ -1801,7 +2526,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":263
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":264
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
@@ -1814,7 +2539,7 @@
       goto __pyx_L14;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":264
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":265
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
  *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
@@ -1828,33 +2553,33 @@
     }
     /*else*/ {

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":266
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":267
  *                 elif t == NPY_OBJECT:      f = "O"
  *                 else:
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
  *                 info.format = f
  *                 return
  */
-      __pyx_t_5 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_4), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_4), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_4);
+      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
       __pyx_t_4 = 0;
-      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_Raise(__pyx_t_4, 0, 0);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L14:;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":267
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":268
  *                 else:
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *                 info.format = f             # <<<<<<<<<<<<<<
@@ -1863,7 +2588,7 @@
  */
     __pyx_v_info->format = __pyx_v_f;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":268
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":269
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *                 info.format = f
  *                 return             # <<<<<<<<<<<<<<
@@ -1876,7 +2601,7 @@
   }
   /*else*/ {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":270
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":271
  *                 return
  *             else:
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
@@ -1885,7 +2610,7 @@
  */
     __pyx_v_info->format = ((char *)malloc(255));

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":271
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":272
  *             else:
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
  *                 info.format[0] = '^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
@@ -1894,7 +2619,7 @@
  */
     (__pyx_v_info->format[0]) = '^';

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":272
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":273
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
  *                 info.format[0] = '^' # Native data types, manual alignment
  *                 offset = 0             # <<<<<<<<<<<<<<
@@ -1903,17 +2628,17 @@
  */
     __pyx_v_offset = 0;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":275
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":276
  *                 f = _util_dtypestring(descr, info.format + 1,
  *                                       info.format + _buffer_format_string_len,
  *                                       &offset)             # <<<<<<<<<<<<<<
  *                 f[0] = 0 # Terminate format string
  *
  */
-    __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_f = __pyx_t_9;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":276
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":277
  *                                       info.format + _buffer_format_string_len,
  *                                       &offset)
  *                 f[0] = 0 # Terminate format string             # <<<<<<<<<<<<<<
@@ -1941,12 +2666,11 @@
   }
   __pyx_L2:;
   __Pyx_XDECREF((PyObject *)__pyx_v_descr);
-  __Pyx_DECREF((PyObject *)__pyx_v_self);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":278
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":279
  *                 f[0] = 0 # Terminate format string
  *
  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
@@ -1954,13 +2678,12 @@
  *                 stdlib.free(info.format)
  */

-static void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
-static void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
+static CYTHON_UNUSED void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
+static CYTHON_UNUSED void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__releasebuffer__");
-  __Pyx_INCREF((PyObject *)__pyx_v_self);
-
-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":279
+
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":280
  *
  *         def __releasebuffer__(ndarray self, Py_buffer* info):
  *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
@@ -1970,7 +2693,7 @@
   __pyx_t_1 = PyArray_HASFIELDS(((PyArrayObject *)__pyx_v_self));
   if (__pyx_t_1) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":280
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":281
  *         def __releasebuffer__(ndarray self, Py_buffer* info):
  *             if PyArray_HASFIELDS(self):
  *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
@@ -1982,7 +2705,7 @@
   }
   __pyx_L5:;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":281
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":282
  *             if PyArray_HASFIELDS(self):
  *                 stdlib.free(info.format)
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
@@ -1992,7 +2715,7 @@
   __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
   if (__pyx_t_1) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":282
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":283
  *                 stdlib.free(info.format)
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
  *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
@@ -2004,11 +2727,10 @@
   }
   __pyx_L6:;

-  __Pyx_DECREF((PyObject *)__pyx_v_self);
   __Pyx_RefNannyFinishContext();
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":755
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":756
  * ctypedef npy_cdouble     complex_t
  *
  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
@@ -2021,7 +2743,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew1");

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":756
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":757
  *
  * cdef inline object PyArray_MultiIterNew1(a):
  *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
@@ -2029,7 +2751,7 @@
  * cdef inline object PyArray_MultiIterNew2(a, b):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -2047,7 +2769,7 @@
   return __pyx_r;
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":758
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":759
  *     return PyArray_MultiIterNew(1, <void*>a)
  *
  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
@@ -2060,7 +2782,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew2");

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":759
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":760
  *
  * cdef inline object PyArray_MultiIterNew2(a, b):
  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
@@ -2068,7 +2790,7 @@
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -2086,7 +2808,7 @@
   return __pyx_r;
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":761
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":762
  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
  *
  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
@@ -2099,7 +2821,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew3");

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":762
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":763
  *
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
@@ -2107,7 +2829,7 @@
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -2125,7 +2847,7 @@
   return __pyx_r;
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":764
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":765
  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
  *
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
@@ -2138,7 +2860,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew4");

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":765
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":766
  *
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
@@ -2146,7 +2868,7 @@
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -2164,7 +2886,7 @@
   return __pyx_r;
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":767
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":768
  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
  *
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
@@ -2177,7 +2899,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew5");

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":768
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":769
  *
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
@@ -2185,7 +2907,7 @@
  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -2203,7 +2925,7 @@
   return __pyx_r;
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":770
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":771
  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
  *
  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
@@ -2231,14 +2953,13 @@
   int __pyx_t_9;
   char *__pyx_t_10;
   __Pyx_RefNannySetupContext("_util_dtypestring");
-  __Pyx_INCREF((PyObject *)__pyx_v_descr);
   __pyx_v_child = ((PyArray_Descr *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_fields = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_childname = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_new_offset = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_t = Py_None; __Pyx_INCREF(Py_None);

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":777
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":778
  *     cdef int delta_offset
  *     cdef tuple i
  *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
@@ -2247,7 +2968,7 @@
  */
   __pyx_v_endian_detector = 1;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":778
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":779
  *     cdef tuple i
  *     cdef int endian_detector = 1
  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
@@ -2256,7 +2977,7 @@
  */
   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":781
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":782
  *     cdef tuple fields
  *
  *     for childname in descr.names:             # <<<<<<<<<<<<<<
@@ -2266,7 +2987,7 @@
   if (likely(((PyObject *)__pyx_v_descr->names) != Py_None)) {
     __pyx_t_1 = 0; __pyx_t_2 = ((PyObject *)__pyx_v_descr->names); __Pyx_INCREF(__pyx_t_2);
   } else {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   for (;;) {
     if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
@@ -2275,21 +2996,21 @@
     __pyx_v_childname = __pyx_t_3;
     __pyx_t_3 = 0;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":782
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":783
  *
  *     for childname in descr.names:
  *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
  *         child, new_offset = fields
  *
  */
-    __pyx_t_3 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (!__pyx_t_3) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (!__pyx_t_3) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(((PyObject *)__pyx_v_fields));
     __pyx_v_fields = ((PyObject *)__pyx_t_3);
     __pyx_t_3 = 0;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":783
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":784
  *     for childname in descr.names:
  *         fields = descr.fields[childname]
  *         child, new_offset = fields             # <<<<<<<<<<<<<<
@@ -2299,7 +3020,7 @@
     if (likely(((PyObject *)__pyx_v_fields) != Py_None) && likely(PyTuple_GET_SIZE(((PyObject *)__pyx_v_fields)) == 2)) {
       PyObject* tuple = ((PyObject *)__pyx_v_fields);
       __pyx_t_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_3);
-      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_4);
       __Pyx_DECREF(((PyObject *)__pyx_v_child));
       __pyx_v_child = ((PyArray_Descr *)__pyx_t_3);
@@ -2309,57 +3030,57 @@
       __pyx_t_4 = 0;
     } else {
       __Pyx_UnpackTupleError(((PyObject *)__pyx_v_fields), 2);
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-
-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":785
+      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":786
  *         child, new_offset = fields
  *
  *         if (end - f) - (new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
  *
  */
-    __pyx_t_4 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __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_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_15, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_15, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_6) {

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":786
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":787
  *
  *         if (end - f) - (new_offset - offset[0]) < 15:
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
  *
  *         if ((child.byteorder == '>' and little_endian) or
  */
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(((PyObject *)__pyx_kp_u_5));
       PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_5));
       __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_5));
-      __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L5;
     }
     __pyx_L5:;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":788
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":789
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
  *
  *         if ((child.byteorder == '>' and little_endian) or             # <<<<<<<<<<<<<<
@@ -2374,7 +3095,7 @@
     }
     if (!__pyx_t_7) {

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":789
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":790
  *
  *         if ((child.byteorder == '>' and little_endian) or
  *             (child.byteorder == '<' and not little_endian)):             # <<<<<<<<<<<<<<
@@ -2394,29 +3115,29 @@
     }
     if (__pyx_t_6) {

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":790
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":791
  *         if ((child.byteorder == '>' and little_endian) or
  *             (child.byteorder == '<' and not little_endian)):
  *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *             # One could encode it in the format string and have Cython
  *             # complain instead, BUT: < and > in format strings also imply
  */
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(((PyObject *)__pyx_kp_u_3));
       PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_3));
       __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_3));
-      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_t_5, 0, 0);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L6;
     }
     __pyx_L6:;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":800
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":801
  *
  *         # Output padding bytes
  *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
@@ -2424,16 +3145,16 @@
  *             f += 1
  */
     while (1) {
-      __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (!__pyx_t_6) break;

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":801
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":802
  *         # Output padding bytes
  *         while offset[0] < new_offset:
  *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
@@ -2442,7 +3163,7 @@
  */
       (__pyx_v_f[0]) = 120;

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":802
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":803
  *         while offset[0] < new_offset:
  *             f[0] = 120 # "x"; pad byte
  *             f += 1             # <<<<<<<<<<<<<<
@@ -2451,7 +3172,7 @@
  */
       __pyx_v_f += 1;

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":803
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":804
  *             f[0] = 120 # "x"; pad byte
  *             f += 1
  *             offset[0] += 1             # <<<<<<<<<<<<<<
@@ -2461,7 +3182,7 @@
       (__pyx_v_offset[0]) += 1;
     }

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":805
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":806
  *             offset[0] += 1
  *
  *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
@@ -2470,7 +3191,7 @@
  */
     (__pyx_v_offset[0]) += __pyx_v_child->elsize;

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":807
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":808
  *         offset[0] += child.itemsize
  *
  *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
@@ -2480,20 +3201,20 @@
     __pyx_t_6 = (!PyDataType_HASFIELDS(__pyx_v_child));
     if (__pyx_t_6) {

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":808
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":809
  *
  *         if not PyDataType_HASFIELDS(child):
  *             t = child.type_num             # <<<<<<<<<<<<<<
  *             if end - f < 5:
  *                 raise RuntimeError(u"Format string allocated too short.")
  */
-      __pyx_t_3 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_v_t);
       __pyx_v_t = __pyx_t_3;
       __pyx_t_3 = 0;

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":809
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":810
  *         if not PyDataType_HASFIELDS(child):
  *             t = child.type_num
  *             if end - f < 5:             # <<<<<<<<<<<<<<
@@ -2503,288 +3224,288 @@
       __pyx_t_6 = ((__pyx_v_end - __pyx_v_f) < 5);
       if (__pyx_t_6) {

-        /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":810
+        /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":811
  *             t = child.type_num
  *             if end - f < 5:
  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
  *
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  */
-        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(((PyObject *)__pyx_kp_u_6));
         PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_6));
         __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_6));
-        __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_Raise(__pyx_t_5, 0, 0);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         goto __pyx_L10;
       }
       __pyx_L10:;

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":813
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":814
  *
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 98;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":814
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":815
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 66;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":815
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":816
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 104;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":816
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":817
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 72;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":817
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":818
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 105;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":818
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":819
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 73;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":819
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":820
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 108;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":820
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":821
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 76;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":821
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":822
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 113;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":822
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":823
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 81;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":823
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":824
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 102;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":824
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":825
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 100;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":825
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":826
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 103;
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":826
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":827
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
@@ -2793,19 +3514,19 @@
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":827
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":828
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
@@ -2814,19 +3535,19 @@
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":828
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":829
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  *             else:
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
@@ -2835,19 +3556,19 @@
         goto __pyx_L11;
       }

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":829
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":830
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
  *             else:
  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 79;
@@ -2855,30 +3576,30 @@
       }
       /*else*/ {

-        /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":831
+        /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":832
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  *             else:
  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
  *             f += 1
  *         else:
  */
-        __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_4), __pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_4), __pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
-        __Pyx_GIVEREF(__pyx_t_3);
+        PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_3));
+        __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
         __pyx_t_3 = 0;
-        __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_Raise(__pyx_t_3, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L11:;

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":832
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":833
  *             else:
  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *             f += 1             # <<<<<<<<<<<<<<
@@ -2890,21 +3611,21 @@
     }
     /*else*/ {

-      /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":836
+      /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":837
  *             # Cython ignores struct boundary information ("T{...}"),
  *             # so don't output it
  *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
  *     return f
  *
  */
-      __pyx_t_10 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_v_f = __pyx_t_10;
     }
     __pyx_L9:;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":837
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":838
  *             # so don't output it
  *             f = _util_dtypestring(child, f, end, offset)
  *     return f             # <<<<<<<<<<<<<<
@@ -2929,12 +3650,11 @@
   __Pyx_DECREF(__pyx_v_childname);
   __Pyx_DECREF(__pyx_v_new_offset);
   __Pyx_DECREF(__pyx_v_t);
-  __Pyx_DECREF((PyObject *)__pyx_v_descr);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":952
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":953
  *
  *
  * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
@@ -2946,10 +3666,8 @@
   PyObject *__pyx_v_baseptr;
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("set_array_base");
-  __Pyx_INCREF((PyObject *)__pyx_v_arr);
-  __Pyx_INCREF(__pyx_v_base);
-
-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":954
+
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":955
  * cdef inline void set_array_base(ndarray arr, object base):
  *      cdef PyObject* baseptr
  *      if base is None:             # <<<<<<<<<<<<<<
@@ -2959,7 +3677,7 @@
   __pyx_t_1 = (__pyx_v_base == Py_None);
   if (__pyx_t_1) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":955
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":956
  *      cdef PyObject* baseptr
  *      if base is None:
  *          baseptr = NULL             # <<<<<<<<<<<<<<
@@ -2971,7 +3689,7 @@
   }
   /*else*/ {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":957
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":958
  *          baseptr = NULL
  *      else:
  *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
@@ -2980,7 +3698,7 @@
  */
     Py_INCREF(__pyx_v_base);

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":958
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":959
  *      else:
  *          Py_INCREF(base) # important to do this before decref below!
  *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
@@ -2991,7 +3709,7 @@
   }
   __pyx_L3:;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":959
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":960
  *          Py_INCREF(base) # important to do this before decref below!
  *          baseptr = <PyObject*>base
  *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
@@ -3000,7 +3718,7 @@
  */
   Py_XDECREF(__pyx_v_arr->base);

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":960
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":961
  *          baseptr = <PyObject*>base
  *      Py_XDECREF(arr.base)
  *      arr.base = baseptr             # <<<<<<<<<<<<<<
@@ -3009,12 +3727,10 @@
  */
   __pyx_v_arr->base = __pyx_v_baseptr;

-  __Pyx_DECREF((PyObject *)__pyx_v_arr);
-  __Pyx_DECREF(__pyx_v_base);
   __Pyx_RefNannyFinishContext();
 }

-/* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":962
+/* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":963
  *      arr.base = baseptr
  *
  * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
@@ -3026,9 +3742,8 @@
   PyObject *__pyx_r = NULL;
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("get_array_base");
-  __Pyx_INCREF((PyObject *)__pyx_v_arr);
-
-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":963
+
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":964
  *
  * cdef inline object get_array_base(ndarray arr):
  *     if arr.base is NULL:             # <<<<<<<<<<<<<<
@@ -3038,7 +3753,7 @@
   __pyx_t_1 = (__pyx_v_arr->base == NULL);
   if (__pyx_t_1) {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":964
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":965
  * cdef inline object get_array_base(ndarray arr):
  *     if arr.base is NULL:
  *         return None             # <<<<<<<<<<<<<<
@@ -3053,7 +3768,7 @@
   }
   /*else*/ {

-    /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":966
+    /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":967
  *         return None
  *     else:
  *         return <object>arr.base             # <<<<<<<<<<<<<<
@@ -3067,18 +3782,17 @@

   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   __pyx_L0:;
-  __Pyx_DECREF((PyObject *)__pyx_v_arr);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }

-static struct PyMethodDef __pyx_methods[] = {
-  {__Pyx_NAMESTR("_update_conversions"), (PyCFunction)__pyx_pf_7cbowtie__update_conversions, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_7cbowtie__update_conversions)},
+static PyMethodDef __pyx_methods[] = {
+  {__Pyx_NAMESTR("_update_conversions"), (PyCFunction)__pyx_pf_11methylcoder_7cbowtie__update_conversions, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_11methylcoder_7cbowtie__update_conversions)},
+  {__Pyx_NAMESTR("cs2seq"), (PyCFunction)__pyx_pf_11methylcoder_7cbowtie_cs2seq, METH_O, __Pyx_DOCSTR(__pyx_doc_11methylcoder_7cbowtie_cs2seq)},
+  {__Pyx_NAMESTR("seq2cs"), (PyCFunction)__pyx_pf_11methylcoder_7cbowtie_seq2cs, METH_O, __Pyx_DOCSTR(__pyx_doc_11methylcoder_7cbowtie_seq2cs)},
   {0, 0, 0, 0}
 };
-
-static void __pyx_init_filenames(void); /*proto*/

 #if PY_MAJOR_VERSION >= 3
 static struct PyModuleDef __pyx_moduledef = {
@@ -3102,7 +3816,26 @@
   {&__pyx_kp_u_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 1, 0, 0},
   {&__pyx_kp_u_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 1, 0, 0},
   {&__pyx_kp_u_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 1, 0, 0},
+  {&__pyx_kp_u_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 1, 0, 0},
+  {&__pyx_kp_u_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 1, 0, 0},
+  {&__pyx_n_s__AA, __pyx_k__AA, sizeof(__pyx_k__AA), 0, 0, 1, 1},
+  {&__pyx_n_s__AC, __pyx_k__AC, sizeof(__pyx_k__AC), 0, 0, 1, 1},
+  {&__pyx_n_s__ACGTN, __pyx_k__ACGTN, sizeof(__pyx_k__ACGTN), 0, 0, 1, 1},
+  {&__pyx_n_s__AG, __pyx_k__AG, sizeof(__pyx_k__AG), 0, 0, 1, 1},
+  {&__pyx_n_s__AT, __pyx_k__AT, sizeof(__pyx_k__AT), 0, 0, 1, 1},
+  {&__pyx_n_s__CA, __pyx_k__CA, sizeof(__pyx_k__CA), 0, 0, 1, 1},
+  {&__pyx_n_s__CC, __pyx_k__CC, sizeof(__pyx_k__CC), 0, 0, 1, 1},
+  {&__pyx_n_s__CG, __pyx_k__CG, sizeof(__pyx_k__CG), 0, 0, 1, 1},
+  {&__pyx_n_s__CT, __pyx_k__CT, sizeof(__pyx_k__CT), 0, 0, 1, 1},
+  {&__pyx_n_s__GA, __pyx_k__GA, sizeof(__pyx_k__GA), 0, 0, 1, 1},
+  {&__pyx_n_s__GC, __pyx_k__GC, sizeof(__pyx_k__GC), 0, 0, 1, 1},
+  {&__pyx_n_s__GG, __pyx_k__GG, sizeof(__pyx_k__GG), 0, 0, 1, 1},
+  {&__pyx_n_s__GT, __pyx_k__GT, sizeof(__pyx_k__GT), 0, 0, 1, 1},
   {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+  {&__pyx_n_s__TA, __pyx_k__TA, sizeof(__pyx_k__TA), 0, 0, 1, 1},
+  {&__pyx_n_s__TC, __pyx_k__TC, sizeof(__pyx_k__TC), 0, 0, 1, 1},
+  {&__pyx_n_s__TG, __pyx_k__TG, sizeof(__pyx_k__TG), 0, 0, 1, 1},
+  {&__pyx_n_s__TT, __pyx_k__TT, sizeof(__pyx_k__TT), 0, 0, 1, 1},
   {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 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},
@@ -3114,9 +3847,11 @@
   {&__pyx_n_s__buf, __pyx_k__buf, sizeof(__pyx_k__buf), 0, 0, 1, 1},
   {&__pyx_n_s__byteorder, __pyx_k__byteorder, sizeof(__pyx_k__byteorder), 0, 0, 1, 1},
   {&__pyx_n_s__c_count, __pyx_k__c_count, sizeof(__pyx_k__c_count), 0, 0, 1, 1},
+  {&__pyx_n_s__cs2seq, __pyx_k__cs2seq, sizeof(__pyx_k__cs2seq), 0, 0, 1, 1},
   {&__pyx_n_s__descr, __pyx_k__descr, sizeof(__pyx_k__descr), 0, 0, 1, 1},
   {&__pyx_n_s__fields, __pyx_k__fields, sizeof(__pyx_k__fields), 0, 0, 1, 1},
   {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1},
+  {&__pyx_n_s__is_colorspace, __pyx_k__is_colorspace, sizeof(__pyx_k__is_colorspace), 0, 0, 1, 1},
   {&__pyx_n_s__itemsize, __pyx_k__itemsize, sizeof(__pyx_k__itemsize), 0, 0, 1, 1},
   {&__pyx_n_s__n, __pyx_k__n, sizeof(__pyx_k__n), 0, 0, 1, 1},
   {&__pyx_n_s__names, __pyx_k__names, sizeof(__pyx_k__names), 0, 0, 1, 1},
@@ -3128,6 +3863,7 @@
   {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
   {&__pyx_n_s__readonly, __pyx_k__readonly, sizeof(__pyx_k__readonly), 0, 0, 1, 1},
   {&__pyx_n_s__ref_seq, __pyx_k__ref_seq, sizeof(__pyx_k__ref_seq), 0, 0, 1, 1},
+  {&__pyx_n_s__seq2cs, __pyx_k__seq2cs, sizeof(__pyx_k__seq2cs), 0, 0, 1, 1},
   {&__pyx_n_s__shape, __pyx_k__shape, sizeof(__pyx_k__shape), 0, 0, 1, 1},
   {&__pyx_n_s__strides, __pyx_k__strides, sizeof(__pyx_k__strides), 0, 0, 1, 1},
   {&__pyx_n_s__suboffsets, __pyx_k__suboffsets, sizeof(__pyx_k__suboffsets), 0, 0, 1, 1},
@@ -3137,9 +3873,9 @@
   {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 = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -3149,7 +3885,16 @@
   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_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_48 = PyInt_FromLong(48); if (unlikely(!__pyx_int_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_65 = PyInt_FromLong(65); if (unlikely(!__pyx_int_65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_67 = PyInt_FromLong(67); if (unlikely(!__pyx_int_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_71 = PyInt_FromLong(71); if (unlikely(!__pyx_int_71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_78 = PyInt_FromLong(78); if (unlikely(!__pyx_int_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_84 = PyInt_FromLong(84); if (unlikely(!__pyx_int_84)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -3177,12 +3922,10 @@
   }
   __pyx_refnanny = __Pyx_RefNanny->SetupContext("PyMODINIT_FUNC PyInit_cbowtie(void)", __LINE__, __FILE__);
   #endif
-  __pyx_init_filenames();
   __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;}
-  #if PY_MAJOR_VERSION < 3
-  __pyx_empty_bytes = PyString_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #else
   __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_binding_PyCFunctionType_USED
+  if (__pyx_binding_PyCFunctionType_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   #endif
   /*--- Library function declarations ---*/
   /*--- Threads initialization code ---*/
@@ -3206,67 +3949,279 @@
   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_cbowtie) {
+  if (__pyx_module_is_main_methylcoder__cbowtie) {
     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;}
   /*--- Global init code ---*/
+  __pyx_v_11methylcoder_7cbowtie_colorspace = ((PyObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_11methylcoder_7cbowtie_seqspace = ((PyObject *)Py_None); Py_INCREF(Py_None);
   /*--- Function export code ---*/
   /*--- Type init code ---*/
   /*--- Type import code ---*/
-  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   /*--- Function import code ---*/
   /*--- Execution code ---*/

-  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":1
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":7
+ * from libc.string cimport strlen
+ *
  * import numpy as np             # <<<<<<<<<<<<<<
  * cimport numpy as np
- * cimport stdlib
- */
-  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ * import sys
+ */
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

-  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":4
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":9
+ * import numpy as np
  * cimport numpy as np
- * cimport stdlib
  * import sys             # <<<<<<<<<<<<<<
  *
  *
  */
-  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__sys, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__sys, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":72
+ *     return 0
+ *
+ * cdef dict colorspace = {             # <<<<<<<<<<<<<<
+ *     65: [ # A
+ *         65, # 0
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":73
+ *
+ * cdef dict colorspace = {
+ *     65: [ # A             # <<<<<<<<<<<<<<
+ *         65, # 0
+ *         67, # 1
+ */
+  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __Pyx_INCREF(__pyx_int_65);
+  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_int_65);
+  __Pyx_GIVEREF(__pyx_int_65);
+  __Pyx_INCREF(__pyx_int_67);
+  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_int_67);
+  __Pyx_GIVEREF(__pyx_int_67);
+  __Pyx_INCREF(__pyx_int_71);
+  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_int_71);
+  __Pyx_GIVEREF(__pyx_int_71);
+  __Pyx_INCREF(__pyx_int_84);
+  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_int_84);
+  __Pyx_GIVEREF(__pyx_int_84);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_int_65, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":81
+ *         78],# .
+ *     67: # C
+ *         [ 67, 65, 84, 71, 78, 78],             # <<<<<<<<<<<<<<
+ *     71: # G
+ *         [71, 84, 65, 67, 78, 78],
+ */
+  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __Pyx_INCREF(__pyx_int_67);
+  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_int_67);
+  __Pyx_GIVEREF(__pyx_int_67);
+  __Pyx_INCREF(__pyx_int_65);
+  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_int_65);
+  __Pyx_GIVEREF(__pyx_int_65);
+  __Pyx_INCREF(__pyx_int_84);
+  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_int_84);
+  __Pyx_GIVEREF(__pyx_int_84);
+  __Pyx_INCREF(__pyx_int_71);
+  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_int_71);
+  __Pyx_GIVEREF(__pyx_int_71);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_int_67, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":83
+ *         [ 67, 65, 84, 71, 78, 78],
+ *     71: # G
+ *         [71, 84, 65, 67, 78, 78],             # <<<<<<<<<<<<<<
+ *     84:  # T
+ *         [84, 71, 67, 65, 78, 78],
+ */
+  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __Pyx_INCREF(__pyx_int_71);
+  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_int_71);
+  __Pyx_GIVEREF(__pyx_int_71);
+  __Pyx_INCREF(__pyx_int_84);
+  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_int_84);
+  __Pyx_GIVEREF(__pyx_int_84);
+  __Pyx_INCREF(__pyx_int_65);
+  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_int_65);
+  __Pyx_GIVEREF(__pyx_int_65);
+  __Pyx_INCREF(__pyx_int_67);
+  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_int_67);
+  __Pyx_GIVEREF(__pyx_int_67);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_int_71, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":85
+ *         [71, 84, 65, 67, 78, 78],
+ *     84:  # T
+ *         [84, 71, 67, 65, 78, 78],             # <<<<<<<<<<<<<<
+ *     78:  # N
+ *         [ 78, 78, 78, 78, 78],
+ */
+  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __Pyx_INCREF(__pyx_int_84);
+  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_int_84);
+  __Pyx_GIVEREF(__pyx_int_84);
+  __Pyx_INCREF(__pyx_int_71);
+  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_int_71);
+  __Pyx_GIVEREF(__pyx_int_71);
+  __Pyx_INCREF(__pyx_int_67);
+  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_int_67);
+  __Pyx_GIVEREF(__pyx_int_67);
+  __Pyx_INCREF(__pyx_int_65);
+  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_int_65);
+  __Pyx_GIVEREF(__pyx_int_65);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_int_84, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":87
+ *         [84, 71, 67, 65, 78, 78],
+ *     78:  # N
+ *         [ 78, 78, 78, 78, 78],             # <<<<<<<<<<<<<<
+ * }
+ *
+ */
+  __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  __Pyx_INCREF(__pyx_int_78);
+  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_int_78);
+  __Pyx_GIVEREF(__pyx_int_78);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_int_78, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_GOTREF(((PyObject *)__pyx_v_11methylcoder_7cbowtie_colorspace));
+  __Pyx_DECREF(((PyObject *)__pyx_v_11methylcoder_7cbowtie_colorspace));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __pyx_v_11methylcoder_7cbowtie_colorspace = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":130
+ *         free(seq)
+ *
+ * cdef dict seqspace = {             # <<<<<<<<<<<<<<
+ *     'AT': 3,
+ *     'AG': 2,
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__AT), __pyx_int_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__AG), __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__AC), __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__AA), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__CT), __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__CG), __pyx_int_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__CC), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__CA), __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__GT), __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__GG), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__GC), __pyx_int_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__GA), __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__TT), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__TG), __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__TC), __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__TA), __pyx_int_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_v_11methylcoder_7cbowtie_seqspace));
+  __Pyx_DECREF(((PyObject *)__pyx_v_11methylcoder_7cbowtie_seqspace));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __pyx_v_11methylcoder_7cbowtie_seqspace = __pyx_t_1;
+  __pyx_t_1 = 0;
+
   /* "/opt/src/methylcode/methylcoder/cbowtie.pyx":1
- * import numpy as np             # <<<<<<<<<<<<<<
- * cimport numpy as np
- * cimport stdlib
+ * #cython: boundscheck=False             # <<<<<<<<<<<<<<
+ * #cython: wraparound=False
+ *
  */
   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_t_2 = PyObject_GetAttr(__pyx_m, __pyx_n_s___update_conversions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_2, "__doc__");
+  __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_2, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_u_7), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__cs2seq); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_GetAttrString(__pyx_t_3, "__doc__"); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_u_8), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetAttr(__pyx_m, __pyx_n_s__seq2cs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_2, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_u_9), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

-  /* "/usr/local/lib/python2.6/site-packages/Cython-0.12.1-py2.6-linux-x86_64.egg/Cython/Includes/stdlib.pxd":2
- *
- * cdef extern from "stdlib.h" nogil:             # <<<<<<<<<<<<<<
- *     void free(void *ptr)
- *     void *malloc(size_t size)
+  /* "/usr/local/lib/python2.6/site-packages/Cython-0.13-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":963
+ *      arr.base = baseptr
+ *
+ * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
+ *     if arr.base is NULL:
+ *         return None
  */
   goto __pyx_L0;
   __pyx_L1_error:;
@@ -3274,10 +4229,10 @@
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   if (__pyx_m) {
-    __Pyx_AddTraceback("init cbowtie");
+    __Pyx_AddTraceback("init methylcoder.cbowtie");
     Py_DECREF(__pyx_m); __pyx_m = 0;
   } else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_ImportError, "init cbowtie");
+    PyErr_SetString(PyExc_ImportError, "init methylcoder.cbowtie");
   }
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
@@ -3288,15 +4243,14 @@
   #endif
 }

-static const char *__pyx_filenames[] = {
-  "cbowtie.pyx",
-  "numpy.pxd",
-};
-
 /* Runtime support code */

-static void __pyx_init_filenames(void) {
-  __pyx_f = __pyx_filenames;
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result)
+        PyErr_SetObject(PyExc_NameError, name);
+    return result;
 }

 static void __Pyx_RaiseDoubleKeywordsError(
@@ -3419,6 +4373,26 @@
     #endif
 bad:
     return -1;
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
 }

 static CYTHON_INLINE int __Pyx_IsLittleEndian(void) {
@@ -3826,7 +4800,7 @@
   buf->suboffsets = __Pyx_minusones;
 }

-static int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack) {
+static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack) {
   if (obj == Py_None) {
     __Pyx_ZeroBuffer(buf);
     return 0;
@@ -3864,11 +4838,6 @@
   if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL;
   __Pyx_ReleaseBuffer(info);
 }
-static void __Pyx_RaiseBufferIndexError(int axis) {
-  PyErr_Format(PyExc_IndexError,
-     "Out of bounds on buffer access (axis %d)", axis);
-}
-

 static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
     PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -3897,6 +4866,27 @@
 }

+
+static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is unsubscriptable");
+}
+
+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 CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+}
+
 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
     PyErr_Format(PyExc_ValueError,
         #if PY_VERSION_HEX < 0x02050000
@@ -3907,47 +4897,13 @@
                  (index == 1) ? "" : "s");
 }

-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(void) {
-    PyErr_SetString(PyExc_ValueError, "too many values to unpack");
-}
-
-static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
-    PyObject *item;
-    if (!(item = PyIter_Next(iter))) {
-        if (!PyErr_Occurred()) {
-            __Pyx_RaiseNeedMoreValuesError(index);
-        }
-    }
-    return item;
-}
-
-static int __Pyx_EndUnpack(PyObject *iter) {
-    PyObject *item;
-    if ((item = PyIter_Next(iter))) {
-        Py_DECREF(item);
-        __Pyx_RaiseTooManyValuesError();
-        return -1;
-    }
-    else if (!PyErr_Occurred())
-        return 0;
-    else
-        return -1;
-}
-
-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 CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+    PyErr_Format(PyExc_ValueError,
+        #if PY_VERSION_HEX < 0x02050000
+            "too many values to unpack (expected %d)", (int)expected);
+        #else
+            "too many values to unpack (expected %zd)", expected);
+        #endif
 }

 static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
@@ -3956,28 +4912,8 @@
     } else if (PyTuple_GET_SIZE(t) < index) {
       __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
     } else {
-      __Pyx_RaiseTooManyValuesError();
-    }
-}
-
-static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact)
-{
-    if (!type) {
-        PyErr_Format(PyExc_SystemError, "Missing type object");
-        return 0;
-    }
-    if (none_allowed && obj == Py_None) return 1;
-    else if (exact) {
-        if (Py_TYPE(obj) == type) return 1;
-    }
-    else {
-        if (PyObject_TypeCheck(obj, type)) return 1;
-    }
-    PyErr_Format(PyExc_TypeError,
-        "Argument '%s' has incorrect type (expected %s, got %s)",
-        name, type->tp_name, Py_TYPE(obj)->tp_name);
-    return 0;
+      __Pyx_RaiseTooManyValuesError(index);
+    }
 }

 #if PY_MAJOR_VERSION < 3
@@ -4005,14 +4941,14 @@
 #endif

 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list) {
-    PyObject *__import__ = 0;
+    PyObject *py_import = 0;
     PyObject *empty_list = 0;
     PyObject *module = 0;
     PyObject *global_dict = 0;
     PyObject *empty_dict = 0;
     PyObject *list;
-    __import__ = __Pyx_GetAttrString(__pyx_b, "__import__");
-    if (!__import__)
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
         goto bad;
     if (from_list)
         list = from_list;
@@ -4028,21 +4964,13 @@
     empty_dict = PyDict_New();
     if (!empty_dict)
         goto bad;
-    module = PyObject_CallFunctionObjArgs(__import__,
+    module = PyObject_CallFunctionObjArgs(py_import,
         name, global_dict, empty_dict, list, NULL);
 bad:
     Py_XDECREF(empty_list);
-    Py_XDECREF(__import__);
+    Py_XDECREF(py_import);
     Py_XDECREF(empty_dict);
     return module;
-}
-
-static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
-    PyObject *result;
-    result = PyObject_GetAttr(dict, name);
-    if (!result)
-        PyErr_SetObject(PyExc_NameError, name);
-    return result;
 }

 #if CYTHON_CCOMPLEX
@@ -4476,6 +5404,25 @@
     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;
@@ -4723,7 +5670,11 @@
         PyOS_snprintf(warning, sizeof(warning),
             "%s.%s size changed, may indicate binary incompatibility",
             module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        PyErr_Warn(NULL, warning);
+        #else
         PyErr_WarnEx(NULL, warning, 0);
+        #endif
     }
     else if (((PyTypeObject *)result)->tp_basicsize != size) {
         PyErr_Format(PyExc_ValueError,
@@ -4864,8 +5815,8 @@
 /* Type Conversion Functions */

 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
-   if (x == Py_True) return 1;
-   else if ((x == Py_False) | (x == Py_None)) return 0;
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
    else return PyObject_IsTrue(x);
 }