Generated by Cython 3.0.11
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: scan_helpers.c
+01: #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
__pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
02: #cython: language_level=3
03: cimport cython
+04: import numpy as np
__pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_7) < 0) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
05: cimport numpy as np
+06: np.import_array()
__pyx_t_9 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 6, __pyx_L1_error)
07:
+08: INT8 = np.int8
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT8, __pyx_t_4) < 0) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
09: ctypedef np.int8_t INT8_t
10:
+11: @cython.boundscheck(False) # turn off bounds-checking for entire function
/* Python wrapper */
static PyObject *__pyx_pw_11chromatinhd_4data_9motifscan_12scan_helpers_1seq_to_onehot(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_11chromatinhd_4data_9motifscan_12scan_helpers_1seq_to_onehot = {"seq_to_onehot", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_11chromatinhd_4data_9motifscan_12scan_helpers_1seq_to_onehot, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_11chromatinhd_4data_9motifscan_12scan_helpers_1seq_to_onehot(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_s = 0;
__Pyx_memviewslice __pyx_v_out_onehot = { 0, 0, { 0 }, { 0 }, { 0 } };
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("seq_to_onehot (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_s,&__pyx_n_s_out_onehot,0};
PyObject* values[2] = {0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_s)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 11, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_out_onehot)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 11, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("seq_to_onehot", 1, 2, 2, 1); __PYX_ERR(0, 11, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "seq_to_onehot") < 0)) __PYX_ERR(0, 11, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
}
__pyx_v_s = ((PyObject*)values[0]);
__pyx_v_out_onehot = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_out_onehot.memview)) __PYX_ERR(0, 14, __pyx_L3_error)
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("seq_to_onehot", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 11, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_out_onehot, 1);
__Pyx_AddTraceback("chromatinhd.data.motifscan.scan_helpers.seq_to_onehot", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_s), (&PyBytes_Type), 1, "s", 1))) __PYX_ERR(0, 14, __pyx_L1_error)
__pyx_r = __pyx_pf_11chromatinhd_4data_9motifscan_12scan_helpers_seq_to_onehot(__pyx_self, __pyx_v_s, __pyx_v_out_onehot);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__PYX_XCLEAR_MEMVIEW(&__pyx_v_out_onehot, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_11chromatinhd_4data_9motifscan_12scan_helpers_seq_to_onehot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s, __Pyx_memviewslice __pyx_v_out_onehot) {
char *__pyx_v_cstr;
int __pyx_v_i;
int __pyx_v_length;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("chromatinhd.data.motifscan.scan_helpers.seq_to_onehot", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__22 = PyTuple_Pack(5, __pyx_n_s_s, __pyx_n_s_out_onehot, __pyx_n_s_cstr, __pyx_n_s_i, __pyx_n_s_length); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__22);
__Pyx_GIVEREF(__pyx_tuple__22);
/* … */
__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_11chromatinhd_4data_9motifscan_12scan_helpers_1seq_to_onehot, 0, __pyx_n_s_seq_to_onehot, NULL, __pyx_n_s_chromatinhd_data_motifscan_scan, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_seq_to_onehot, __pyx_t_4) < 0) __PYX_ERR(0, 11, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12: @cython.wraparound(False) # turn off negative index wrapping for entire function
13: @cython.cdivision
14: def seq_to_onehot(bytes s, INT8_t [:,::1] out_onehot):
+15: cdef char* cstr = s
if (unlikely(__pyx_v_s == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(0, 15, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyBytes_AsWritableString(__pyx_v_s); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(0, 15, __pyx_L1_error)
__pyx_v_cstr = __pyx_t_1;
+16: cdef int i, length = len(s)
if (unlikely(__pyx_v_s == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
__PYX_ERR(0, 16, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyBytes_GET_SIZE(__pyx_v_s); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 16, __pyx_L1_error)
__pyx_v_length = __pyx_t_2;
17:
+18: for i in range(length):
__pyx_t_3 = __pyx_v_length;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_i = __pyx_t_5;
+19: if cstr[i] == b'A':
__pyx_t_6 = ((__pyx_v_cstr[__pyx_v_i]) == 'A');
if (__pyx_t_6) {
/* … */
goto __pyx_L5;
}
+20: out_onehot[i, 0] = 1
__pyx_t_7 = __pyx_v_i;
__pyx_t_8 = 0;
*((__pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t *) ( /* dim=0 */ (__pyx_v_out_onehot.data + __pyx_t_7 * __pyx_v_out_onehot.strides[0]) )) + __pyx_t_8)) )) = 1;
+21: elif cstr[i] == b'C':
__pyx_t_6 = ((__pyx_v_cstr[__pyx_v_i]) == 'C');
if (__pyx_t_6) {
/* … */
goto __pyx_L5;
}
+22: out_onehot[i, 1] = 1
__pyx_t_8 = __pyx_v_i;
__pyx_t_7 = 1;
*((__pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t *) ( /* dim=0 */ (__pyx_v_out_onehot.data + __pyx_t_8 * __pyx_v_out_onehot.strides[0]) )) + __pyx_t_7)) )) = 1;
+23: elif cstr[i] == b'G':
__pyx_t_6 = ((__pyx_v_cstr[__pyx_v_i]) == 'G');
if (__pyx_t_6) {
/* … */
goto __pyx_L5;
}
+24: out_onehot[i, 2] = 1
__pyx_t_7 = __pyx_v_i;
__pyx_t_8 = 2;
*((__pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t *) ( /* dim=0 */ (__pyx_v_out_onehot.data + __pyx_t_7 * __pyx_v_out_onehot.strides[0]) )) + __pyx_t_8)) )) = 1;
+25: elif cstr[i] == b'T':
__pyx_t_6 = ((__pyx_v_cstr[__pyx_v_i]) == 'T');
if (__pyx_t_6) {
/* … */
}
__pyx_L5:;
}
+26: out_onehot[i, 3] = 1
__pyx_t_8 = __pyx_v_i;
__pyx_t_7 = 3;
*((__pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t *) ( /* dim=0 */ (__pyx_v_out_onehot.data + __pyx_t_8 * __pyx_v_out_onehot.strides[0]) )) + __pyx_t_7)) )) = 1;
27:
+28: return out_onehot
__Pyx_XDECREF(__pyx_r); __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_out_onehot, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_11chromatinhd_4data_9motifscan_12scan_helpers_INT8_t, 0);; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0;