Generated by Cython 0.29.21
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: analyse_sequence.c
+001: # distutils: extra_compile_args=-fopenmp
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
002: # distutils: extra_link_args=-fopenmp
003: # cython: language_level=3, boundscheck=False, wraparound=False, initializedcheck=False
004:
+005: import numpy as np
__pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
006: cimport cython
007: from cython.parallel import prange
008:
+009: def Cij_cython(char[:,::1] msa,double pseudocount, int n_states, double theta):
/* Python wrapper */ static PyObject *__pyx_pw_11cython_code_16analyse_sequence_1Cij_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cython_code_16analyse_sequence_Cij_cython[] = "\n Return a Matrix of correleation with q-1 state (the last correlation because of gauge chosen is eij(q,)= 0)\n "; static PyMethodDef __pyx_mdef_11cython_code_16analyse_sequence_1Cij_cython = {"Cij_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cython_code_16analyse_sequence_1Cij_cython, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cython_code_16analyse_sequence_Cij_cython}; static PyObject *__pyx_pw_11cython_code_16analyse_sequence_1Cij_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_msa = { 0, 0, { 0 }, { 0 }, { 0 } }; double __pyx_v_pseudocount; int __pyx_v_n_states; double __pyx_v_theta; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Cij_cython (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msa,&__pyx_n_s_pseudocount,&__pyx_n_s_n_states,&__pyx_n_s_theta,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_msa)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pseudocount)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("Cij_cython", 1, 4, 4, 1); __PYX_ERR(0, 9, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_states)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("Cij_cython", 1, 4, 4, 2); __PYX_ERR(0, 9, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("Cij_cython", 1, 4, 4, 3); __PYX_ERR(0, 9, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Cij_cython") < 0)) __PYX_ERR(0, 9, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_msa = __Pyx_PyObject_to_MemoryviewSlice_d_dc_char(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_msa.memview)) __PYX_ERR(0, 9, __pyx_L3_error) __pyx_v_pseudocount = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_pseudocount == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 9, __pyx_L3_error) __pyx_v_n_states = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n_states == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 9, __pyx_L3_error) __pyx_v_theta = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_theta == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 9, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("Cij_cython", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cython_code.analyse_sequence.Cij_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cython_code_16analyse_sequence_Cij_cython(__pyx_self, __pyx_v_msa, __pyx_v_pseudocount, __pyx_v_n_states, __pyx_v_theta); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cython_code_16analyse_sequence_Cij_cython(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_msa, double __pyx_v_pseudocount, int __pyx_v_n_states, double __pyx_v_theta) { int __pyx_v_site_i; int __pyx_v_site_j; int __pyx_v_index_spin_1; int __pyx_v_index_spin_2; int __pyx_v_n_states_gauge; __Pyx_memviewslice __pyx_v_Cij = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_Fij = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_weight = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Cij_cython", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_10); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __Pyx_AddTraceback("cython_code.analyse_sequence.Cij_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_Cij, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_Fij, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_weight, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_msa, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__19 = PyTuple_Pack(12, __pyx_n_s_msa, __pyx_n_s_pseudocount, __pyx_n_s_n_states, __pyx_n_s_theta, __pyx_n_s_site_i, __pyx_n_s_site_j, __pyx_n_s_index_spin_1, __pyx_n_s_index_spin_2, __pyx_n_s_n_states_gauge, __pyx_n_s_Cij, __pyx_n_s_Fij, __pyx_n_s_weight); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); /* … */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11cython_code_16analyse_sequence_1Cij_cython, NULL, __pyx_n_s_cython_code_analyse_sequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Cij_cython, __pyx_t_1) < 0) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(4, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_analyse_sequence_pyx, __pyx_n_s_Cij_cython, 9, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 9, __pyx_L1_error)
010: """
011: Return a Matrix of correleation with q-1 state (the last correlation because of gauge chosen is eij(q,)= 0)
012: """
013: cdef :
+014: int site_i,site_j,index_spin_1,index_spin_2,n_states_gauge = int(n_states-1)
__pyx_v_n_states_gauge = ((int)(__pyx_v_n_states - 1));
015: ##PMI[site_i,site_j,spin_i,spin_j]
+016: double[::1,:,:,:] Cij = np.zeros((msa.shape[1],n_states_gauge,msa.shape[1],n_states_gauge),order = "F")
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_msa.shape[1])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_n_states_gauge); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_msa.shape[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_n_states_gauge); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_u_F) < 0) __PYX_ERR(0, 16, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dcd_d_d__double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_Cij = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
017: double[::1,:,:,:] Fij
018: double[::1] weight
019: ##Cython
+020: Fij, weight = two_body_freq_cython(msa, pseudocount, n_states, theta)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_two_body_freq_cython); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_msa, 2, (PyObject *(*)(char *)) __pyx_memview_get_char, (int (*)(char *, PyObject *)) __pyx_memview_set_char, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_pseudocount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_n_states); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_t_5, __pyx_t_2, __pyx_t_3, __pyx_t_1}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_t_5, __pyx_t_2, __pyx_t_3, __pyx_t_1}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_10 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_1); __pyx_t_5 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 20, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_10 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_10); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_11(__pyx_t_1); if (unlikely(!__pyx_t_6)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_10 = __pyx_t_11(__pyx_t_1); if (unlikely(!__pyx_t_10)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_10); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_1), 2) < 0) __PYX_ERR(0, 20, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 20, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dcd_d_d__double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_10, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_Fij = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __pyx_v_weight = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
021: ##
+022: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L7; } __pyx_L7:; } }
+023: for site_i in prange(msa.shape[1]):
__pyx_t_13 = (__pyx_v_msa.shape[1]); if ((1 == 0)) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) (x) #define unlikely(x) (x) #endif __pyx_t_15 = (__pyx_t_13 - 0 + 1 - 1/abs(1)) / 1; if (__pyx_t_15 > 0) { #ifdef _OPENMP #pragma omp parallel #endif /* _OPENMP */ { #ifdef _OPENMP #pragma omp for lastprivate(__pyx_v_index_spin_1) lastprivate(__pyx_v_index_spin_2) firstprivate(__pyx_v_site_i) lastprivate(__pyx_v_site_i) lastprivate(__pyx_v_site_j) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ { __pyx_v_site_i = (int)(0 + 1 * __pyx_t_14); /* Initialize private variables to invalid values */ __pyx_v_index_spin_1 = ((int)0xbad0bad0); __pyx_v_index_spin_2 = ((int)0xbad0bad0); __pyx_v_site_j = ((int)0xbad0bad0);
+024: for site_j in range(msa.shape[1]):
__pyx_t_16 = (__pyx_v_msa.shape[1]); __pyx_t_17 = __pyx_t_16; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_17; __pyx_t_9+=1) { __pyx_v_site_j = __pyx_t_9;
+025: for index_spin_1 in range(n_states_gauge):
__pyx_t_18 = __pyx_v_n_states_gauge; __pyx_t_19 = __pyx_t_18; for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) { __pyx_v_index_spin_1 = __pyx_t_20;
+026: for index_spin_2 in range(n_states_gauge):
__pyx_t_21 = __pyx_v_n_states_gauge; __pyx_t_22 = __pyx_t_21; for (__pyx_t_23 = 0; __pyx_t_23 < __pyx_t_22; __pyx_t_23+=1) { __pyx_v_index_spin_2 = __pyx_t_23;
+027: Cij[site_i,index_spin_1,site_j,index_spin_2] = Fij[site_i,index_spin_1,site_j,index_spin_2]-Fij[site_i,index_spin_1,site_i,index_spin_1]*Fij[site_j,index_spin_2,site_j,index_spin_2]
__pyx_t_24 = __pyx_v_site_i; __pyx_t_25 = __pyx_v_index_spin_1; __pyx_t_26 = __pyx_v_site_j; __pyx_t_27 = __pyx_v_index_spin_2; __pyx_t_28 = __pyx_v_site_i; __pyx_t_29 = __pyx_v_index_spin_1; __pyx_t_30 = __pyx_v_site_i; __pyx_t_31 = __pyx_v_index_spin_1; __pyx_t_32 = __pyx_v_site_j; __pyx_t_33 = __pyx_v_index_spin_2; __pyx_t_34 = __pyx_v_site_j; __pyx_t_35 = __pyx_v_index_spin_2; __pyx_t_36 = __pyx_v_site_i; __pyx_t_37 = __pyx_v_index_spin_1; __pyx_t_38 = __pyx_v_site_j; __pyx_t_39 = __pyx_v_index_spin_2; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Cij.data) + __pyx_t_36)) ) + __pyx_t_37 * __pyx_v_Cij.strides[1]) ) + __pyx_t_38 * __pyx_v_Cij.strides[2]) ) + __pyx_t_39 * __pyx_v_Cij.strides[3]) )) = ((*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_24)) ) + __pyx_t_25 * __pyx_v_Fij.strides[1]) ) + __pyx_t_26 * __pyx_v_Fij.strides[2]) ) + __pyx_t_27 * __pyx_v_Fij.strides[3]) ))) - ((*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_28)) ) + __pyx_t_29 * __pyx_v_Fij.strides[1]) ) + __pyx_t_30 * __pyx_v_Fij.strides[2]) ) + __pyx_t_31 * __pyx_v_Fij.strides[3]) ))) * (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_32)) ) + __pyx_t_33 * __pyx_v_Fij.strides[1]) ) + __pyx_t_34 * __pyx_v_Fij.strides[2]) ) + __pyx_t_35 * __pyx_v_Fij.strides[3]) ))))); } } } } } } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #endif }
+028: return np.asarray(Cij), weight
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_Cij, 4, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_weight, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_r = __pyx_t_10; __pyx_t_10 = 0; goto __pyx_L0;
029:
+030: def two_body_freq_cython(char[:,::1] msa, double pseudocount, int n_states, double theta):
/* Python wrapper */ static PyObject *__pyx_pw_11cython_code_16analyse_sequence_3two_body_freq_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11cython_code_16analyse_sequence_3two_body_freq_cython = {"two_body_freq_cython", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cython_code_16analyse_sequence_3two_body_freq_cython, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11cython_code_16analyse_sequence_3two_body_freq_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_msa = { 0, 0, { 0 }, { 0 }, { 0 } }; double __pyx_v_pseudocount; int __pyx_v_n_states; double __pyx_v_theta; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("two_body_freq_cython (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msa,&__pyx_n_s_pseudocount,&__pyx_n_s_n_states,&__pyx_n_s_theta,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_msa)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pseudocount)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("two_body_freq_cython", 1, 4, 4, 1); __PYX_ERR(0, 30, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_states)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("two_body_freq_cython", 1, 4, 4, 2); __PYX_ERR(0, 30, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("two_body_freq_cython", 1, 4, 4, 3); __PYX_ERR(0, 30, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "two_body_freq_cython") < 0)) __PYX_ERR(0, 30, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_msa = __Pyx_PyObject_to_MemoryviewSlice_d_dc_char(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_msa.memview)) __PYX_ERR(0, 30, __pyx_L3_error) __pyx_v_pseudocount = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_pseudocount == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 30, __pyx_L3_error) __pyx_v_n_states = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n_states == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 30, __pyx_L3_error) __pyx_v_theta = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_theta == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 30, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("two_body_freq_cython", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 30, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cython_code.analyse_sequence.two_body_freq_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cython_code_16analyse_sequence_2two_body_freq_cython(__pyx_self, __pyx_v_msa, __pyx_v_pseudocount, __pyx_v_n_states, __pyx_v_theta); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cython_code_16analyse_sequence_2two_body_freq_cython(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_msa, double __pyx_v_pseudocount, int __pyx_v_n_states, double __pyx_v_theta) { __Pyx_memviewslice __pyx_v_Fij = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_site_i; int __pyx_v_site_j; int __pyx_v_index_try; int __pyx_v_index_spin_1; int __pyx_v_index_spin_2; double __pyx_v_z; __Pyx_memviewslice __pyx_v_weight = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("two_body_freq_cython", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __Pyx_AddTraceback("cython_code.analyse_sequence.two_body_freq_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_Fij, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_weight, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_msa, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__21 = PyTuple_Pack(12, __pyx_n_s_msa, __pyx_n_s_pseudocount, __pyx_n_s_n_states, __pyx_n_s_theta, __pyx_n_s_Fij, __pyx_n_s_site_i, __pyx_n_s_site_j, __pyx_n_s_index_try, __pyx_n_s_index_spin_1, __pyx_n_s_index_spin_2, __pyx_n_s_z, __pyx_n_s_weight); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); /* … */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11cython_code_16analyse_sequence_3two_body_freq_cython, NULL, __pyx_n_s_cython_code_analyse_sequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_two_body_freq_cython, __pyx_t_1) < 0) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(4, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_analyse_sequence_pyx, __pyx_n_s_two_body_freq_cython, 30, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 30, __pyx_L1_error)
031: cdef:
+032: double[::1,:,:,:] Fij = np.zeros((msa.shape[1],n_states,msa.shape[1],n_states),order = "F")
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_msa.shape[1])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_n_states); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_msa.shape[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_n_states); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_u_F) < 0) __PYX_ERR(0, 32, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dcd_d_d__double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_Fij = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
033: int site_i,site_j,index_try,index_spin_1,index_spin_2
034: double z
035: double[::1] weight
+036: weight = weight_msa(msa, theta)
__pyx_t_8 = __pyx_f_11cython_code_16analyse_sequence_weight_msa(__pyx_v_msa, __pyx_v_theta, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 36, __pyx_L1_error)
__pyx_v_weight = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+037: z = np.sum(weight)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sum); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_weight, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_z = __pyx_t_9;
+038: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L4_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L1_error; } __pyx_L5:; } }
+039: for site_i in prange(msa.shape[1]):
__pyx_t_10 = (__pyx_v_msa.shape[1]); if ((1 == 0)) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) (x) #define unlikely(x) (x) #endif __pyx_t_12 = (__pyx_t_10 - 0 + 1 - 1/abs(1)) / 1; if (__pyx_t_12 > 0) { #ifdef _OPENMP #pragma omp parallel #endif /* _OPENMP */ { #ifdef _OPENMP #pragma omp for lastprivate(__pyx_v_index_spin_1) lastprivate(__pyx_v_index_spin_2) lastprivate(__pyx_v_index_try) firstprivate(__pyx_v_site_i) lastprivate(__pyx_v_site_i) lastprivate(__pyx_v_site_j) #endif /* _OPENMP */ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_12; __pyx_t_11++){ { __pyx_v_site_i = (int)(0 + 1 * __pyx_t_11); /* Initialize private variables to invalid values */ __pyx_v_index_spin_1 = ((int)0xbad0bad0); __pyx_v_index_spin_2 = ((int)0xbad0bad0); __pyx_v_index_try = ((int)0xbad0bad0); __pyx_v_site_j = ((int)0xbad0bad0);
+040: for site_j in range(msa.shape[1]):
__pyx_t_13 = (__pyx_v_msa.shape[1]); __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_site_j = __pyx_t_15;
+041: for index_try in range(msa.shape[0]):
__pyx_t_16 = (__pyx_v_msa.shape[0]); __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_index_try = __pyx_t_18;
+042: Fij[site_i, msa[index_try,site_i], site_j, msa[index_try,site_j]] += weight[index_try]/z
__pyx_t_19 = __pyx_v_index_try; __pyx_t_9 = (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_weight.data) + __pyx_t_19)) ))); if (unlikely(__pyx_v_z == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 42, __pyx_L8_error) } __pyx_t_19 = __pyx_v_index_try; __pyx_t_20 = __pyx_v_site_i; __pyx_t_21 = __pyx_v_index_try; __pyx_t_22 = __pyx_v_site_j; __pyx_t_23 = __pyx_v_site_i; __pyx_t_24 = (*((char *) ( /* dim=1 */ ((char *) (((char *) ( /* dim=0 */ (__pyx_v_msa.data + __pyx_t_19 * __pyx_v_msa.strides[0]) )) + __pyx_t_20)) ))); __pyx_t_25 = __pyx_v_site_j; __pyx_t_26 = (*((char *) ( /* dim=1 */ ((char *) (((char *) ( /* dim=0 */ (__pyx_v_msa.data + __pyx_t_21 * __pyx_v_msa.strides[0]) )) + __pyx_t_22)) ))); *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_23)) ) + __pyx_t_24 * __pyx_v_Fij.strides[1]) ) + __pyx_t_25 * __pyx_v_Fij.strides[2]) ) + __pyx_t_26 * __pyx_v_Fij.strides[3]) )) += (__pyx_t_9 / __pyx_v_z); }
+043: for index_spin_1 in range(n_states):
__pyx_t_18 = __pyx_v_n_states; __pyx_t_27 = __pyx_t_18; for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_27; __pyx_t_28+=1) { __pyx_v_index_spin_1 = __pyx_t_28;
+044: for index_spin_2 in range(n_states):
__pyx_t_29 = __pyx_v_n_states; __pyx_t_30 = __pyx_t_29; for (__pyx_t_31 = 0; __pyx_t_31 < __pyx_t_30; __pyx_t_31+=1) { __pyx_v_index_spin_2 = __pyx_t_31;
+045: if site_i != site_j:
__pyx_t_32 = ((__pyx_v_site_i != __pyx_v_site_j) != 0); if (__pyx_t_32) { /* … */ goto __pyx_L18; }
+046: Fij[site_i,index_spin_1,site_j,index_spin_2] = pseudocount/(n_states**2) + (1-pseudocount)*Fij[site_i,index_spin_1,site_j,index_spin_2]
__pyx_t_33 = __Pyx_pow_long(((long)__pyx_v_n_states), 2); if (unlikely(__pyx_t_33 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 46, __pyx_L8_error) } __pyx_t_22 = __pyx_v_site_i; __pyx_t_21 = __pyx_v_index_spin_1; __pyx_t_20 = __pyx_v_site_j; __pyx_t_19 = __pyx_v_index_spin_2; __pyx_t_26 = __pyx_v_site_i; __pyx_t_25 = __pyx_v_index_spin_1; __pyx_t_24 = __pyx_v_site_j; __pyx_t_23 = __pyx_v_index_spin_2; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_26)) ) + __pyx_t_25 * __pyx_v_Fij.strides[1]) ) + __pyx_t_24 * __pyx_v_Fij.strides[2]) ) + __pyx_t_23 * __pyx_v_Fij.strides[3]) )) = ((__pyx_v_pseudocount / ((double)__pyx_t_33)) + ((1.0 - __pyx_v_pseudocount) * (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_22)) ) + __pyx_t_21 * __pyx_v_Fij.strides[1]) ) + __pyx_t_20 * __pyx_v_Fij.strides[2]) ) + __pyx_t_19 * __pyx_v_Fij.strides[3]) )))));
047: else:
+048: Fij[site_i,index_spin_1,site_j,index_spin_2] = (index_spin_1 == index_spin_2)*1.0*(pseudocount/n_states) + (1-pseudocount)*Fij[site_i,index_spin_1,site_j,index_spin_2]
/*else*/ { if (unlikely(__pyx_v_n_states == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 48, __pyx_L8_error) } __pyx_t_19 = __pyx_v_site_i; __pyx_t_20 = __pyx_v_index_spin_1; __pyx_t_21 = __pyx_v_site_j; __pyx_t_22 = __pyx_v_index_spin_2; __pyx_t_23 = __pyx_v_site_i; __pyx_t_24 = __pyx_v_index_spin_1; __pyx_t_25 = __pyx_v_site_j; __pyx_t_26 = __pyx_v_index_spin_2; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_23)) ) + __pyx_t_24 * __pyx_v_Fij.strides[1]) ) + __pyx_t_25 * __pyx_v_Fij.strides[2]) ) + __pyx_t_26 * __pyx_v_Fij.strides[3]) )) = ((((__pyx_v_index_spin_1 == __pyx_v_index_spin_2) * 1.0) * (__pyx_v_pseudocount / ((double)__pyx_v_n_states))) + ((1.0 - __pyx_v_pseudocount) * (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_19)) ) + __pyx_t_20 * __pyx_v_Fij.strides[1]) ) + __pyx_t_21 * __pyx_v_Fij.strides[2]) ) + __pyx_t_22 * __pyx_v_Fij.strides[3]) ))))); } __pyx_L18:; } } } goto __pyx_L20; __pyx_L8_error:; { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif #ifdef _OPENMP #pragma omp flush(__pyx_parallel_exc_type) #endif /* _OPENMP */ if (!__pyx_parallel_exc_type) { __Pyx_ErrFetchWithState(&__pyx_parallel_exc_type, &__pyx_parallel_exc_value, &__pyx_parallel_exc_tb); __pyx_parallel_filename = __pyx_filename; __pyx_parallel_lineno = __pyx_lineno; __pyx_parallel_clineno = __pyx_clineno; __Pyx_GOTREF(__pyx_parallel_exc_type); } #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } __pyx_parallel_why = 4; goto __pyx_L19; __pyx_L19:; #ifdef _OPENMP #pragma omp critical(__pyx_parallel_lastprivates0) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_index_spin_1; __pyx_parallel_temp1 = __pyx_v_index_spin_2; __pyx_parallel_temp2 = __pyx_v_index_try; __pyx_parallel_temp3 = __pyx_v_site_i; __pyx_parallel_temp4 = __pyx_v_site_j; } __pyx_L20:; #ifdef _OPENMP #pragma omp flush(__pyx_parallel_why) #endif /* _OPENMP */ } } #ifdef _OPENMP Py_END_ALLOW_THREADS #else { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif #endif /* _OPENMP */ /* Clean up any temporaries */ #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif #ifndef _OPENMP } #endif /* _OPENMP */ } } if (__pyx_parallel_exc_type) { /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */ __pyx_parallel_why = 4; } if (__pyx_parallel_why) { __pyx_v_index_spin_1 = __pyx_parallel_temp0; __pyx_v_index_spin_2 = __pyx_parallel_temp1; __pyx_v_index_try = __pyx_parallel_temp2; __pyx_v_site_i = __pyx_parallel_temp3; __pyx_v_site_j = __pyx_parallel_temp4; switch (__pyx_parallel_why) { case 4: { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_GIVEREF(__pyx_parallel_exc_type); __Pyx_ErrRestoreWithState(__pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb); __pyx_filename = __pyx_parallel_filename; __pyx_lineno = __pyx_parallel_lineno; __pyx_clineno = __pyx_parallel_clineno; #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } goto __pyx_L4_error; } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #endif }
+049: return np.asarray(Fij), np.asarray(weight)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_Fij, 4, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_weight, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_6 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
050:
+051: cpdef double[::1] weight_msa(char[:,::1] msa, double theta):
static PyObject *__pyx_pw_11cython_code_16analyse_sequence_5weight_msa(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static __Pyx_memviewslice __pyx_f_11cython_code_16analyse_sequence_weight_msa(__Pyx_memviewslice __pyx_v_msa, double __pyx_v_theta, CYTHON_UNUSED int __pyx_skip_dispatch) { __Pyx_memviewslice __pyx_v_weight = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_sum_dist = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_i; int __pyx_v_j; __Pyx_memviewslice __pyx_r = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("weight_msa", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_14, 1); __pyx_r.data = NULL; __pyx_r.memview = NULL; __Pyx_AddTraceback("cython_code.analyse_sequence.weight_msa", __pyx_clineno, __pyx_lineno, __pyx_filename); goto __pyx_L2; __pyx_L0:; if (unlikely(!__pyx_r.memview)) { PyErr_SetString(PyExc_TypeError, "Memoryview return value is not initialized"); } __pyx_L2:; __PYX_XDEC_MEMVIEW(&__pyx_v_weight, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_sum_dist, 1); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_11cython_code_16analyse_sequence_5weight_msa(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_11cython_code_16analyse_sequence_5weight_msa(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_msa = { 0, 0, { 0 }, { 0 }, { 0 } }; double __pyx_v_theta; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("weight_msa (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msa,&__pyx_n_s_theta,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_msa)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("weight_msa", 1, 2, 2, 1); __PYX_ERR(0, 51, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "weight_msa") < 0)) __PYX_ERR(0, 51, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_msa = __Pyx_PyObject_to_MemoryviewSlice_d_dc_char(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_msa.memview)) __PYX_ERR(0, 51, __pyx_L3_error) __pyx_v_theta = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_theta == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 51, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("weight_msa", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 51, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cython_code.analyse_sequence.weight_msa", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cython_code_16analyse_sequence_4weight_msa(__pyx_self, __pyx_v_msa, __pyx_v_theta); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cython_code_16analyse_sequence_4weight_msa(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_msa, double __pyx_v_theta) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("weight_msa", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cython_code_16analyse_sequence_weight_msa(__pyx_v_msa, __pyx_v_theta, 0); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 51, __pyx_L1_error) __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_t_1, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __PYX_XDEC_MEMVIEW(&__pyx_t_1, 1); __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_1, 1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cython_code.analyse_sequence.weight_msa", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_msa, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
052: cdef:
+053: double[::1] weight = np.ones((msa.shape[0]))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_msa.shape[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_weight = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+054: double[::1] sum_dist = np.zeros((msa.shape[0]))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_msa.shape[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_sum_dist = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
055: int i,j
+056: if theta>0:
__pyx_t_6 = ((__pyx_v_theta > 0.0) != 0); if (__pyx_t_6) { /* … */ }
+057: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L6; } __pyx_L6:; } }
+058: for i in prange(msa.shape[0]-1):
__pyx_t_7 = ((__pyx_v_msa.shape[0]) - 1); if ((1 == 0)) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) (x) #define unlikely(x) (x) #endif __pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1; if (__pyx_t_9 > 0) { #ifdef _OPENMP #pragma omp parallel #endif /* _OPENMP */ { #ifdef _OPENMP #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) #endif /* _OPENMP */ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){ { __pyx_v_i = (int)(0 + 1 * __pyx_t_8); /* Initialize private variables to invalid values */ __pyx_v_j = ((int)0xbad0bad0);
+059: for j in range(i+1,msa.shape[0]):
__pyx_t_10 = (__pyx_v_msa.shape[0]); __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = (__pyx_v_i + 1); __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_j = __pyx_t_12;
+060: if hamming_dist(msa[i],msa[j])<theta:
__pyx_t_13.data = __pyx_v_msa.data; __pyx_t_13.memview = __pyx_v_msa.memview; __PYX_INC_MEMVIEW(&__pyx_t_13, 0); { Py_ssize_t __pyx_tmp_idx = __pyx_v_i; Py_ssize_t __pyx_tmp_stride = __pyx_v_msa.strides[0]; __pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_13.shape[0] = __pyx_v_msa.shape[1]; __pyx_t_13.strides[0] = __pyx_v_msa.strides[1]; __pyx_t_13.suboffsets[0] = -1; __pyx_t_14.data = __pyx_v_msa.data; __pyx_t_14.memview = __pyx_v_msa.memview; __PYX_INC_MEMVIEW(&__pyx_t_14, 0); { Py_ssize_t __pyx_tmp_idx = __pyx_v_j; Py_ssize_t __pyx_tmp_stride = __pyx_v_msa.strides[0]; __pyx_t_14.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_14.shape[0] = __pyx_v_msa.shape[1]; __pyx_t_14.strides[0] = __pyx_v_msa.strides[1]; __pyx_t_14.suboffsets[0] = -1; __pyx_t_6 = ((__pyx_f_11cython_code_16analyse_sequence_hamming_dist(__pyx_t_13, __pyx_t_14) < __pyx_v_theta) != 0); __PYX_XDEC_MEMVIEW(&__pyx_t_13, 0); __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_14, 0); __pyx_t_14.memview = NULL; __pyx_t_14.data = NULL; if (__pyx_t_6) { /* … */ } } } } } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #endif }
+061: sum_dist[i] += 1
__pyx_t_15 = __pyx_v_i; *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_sum_dist.data) + __pyx_t_15)) )) += 1.0;
+062: sum_dist[j] += 1
__pyx_t_15 = __pyx_v_j; *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_sum_dist.data) + __pyx_t_15)) )) += 1.0;
+063: for i in range(msa.shape[0]):
__pyx_t_9 = (__pyx_v_msa.shape[0]); __pyx_t_8 = __pyx_t_9; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_8; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
+064: weight[i] = 1/(sum_dist[i]+1) #dont take into account the diagonal
__pyx_t_15 = __pyx_v_i; __pyx_t_16 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_sum_dist.data) + __pyx_t_15)) ))) + 1.0); if (unlikely(__pyx_t_16 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 64, __pyx_L1_error) } __pyx_t_15 = __pyx_v_i; *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_weight.data) + __pyx_t_15)) )) = (1.0 / __pyx_t_16); }
+065: return weight
__PYX_INC_MEMVIEW(&__pyx_v_weight, 0); __pyx_r = __pyx_v_weight; goto __pyx_L0;
066:
+067: cdef double hamming_dist(char[::1] a, char[::1] b) nogil:
static double __pyx_f_11cython_code_16analyse_sequence_hamming_dist(__Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_b) {
int __pyx_v_i;
double __pyx_v_dist;
double __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_WriteUnraisable("cython_code.analyse_sequence.hamming_dist", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
__pyx_r = 0;
__pyx_L0:;
return __pyx_r;
}
068: cdef:
069: int i
+070: double dist = 0.0
__pyx_v_dist = 0.0;
+071: for i in range(a.shape[0]):
__pyx_t_1 = (__pyx_v_a.shape[0]); __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3;
+072: dist+= (a[i]!=b[i])*1.0
__pyx_t_4 = __pyx_v_i; __pyx_t_5 = __pyx_v_i; __pyx_v_dist = (__pyx_v_dist + (((*((char *) ( /* dim=0 */ ((char *) (((char *) __pyx_v_a.data) + __pyx_t_4)) ))) != (*((char *) ( /* dim=0 */ ((char *) (((char *) __pyx_v_b.data) + __pyx_t_5)) )))) * 1.0)); }
+073: return dist/a.shape[0]
if (unlikely((__pyx_v_a.shape[0]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 73, __pyx_L1_error) } __pyx_r = (__pyx_v_dist / ((double)(__pyx_v_a.shape[0]))); goto __pyx_L0;
074:
+075: def Energy_Partner(char[:,::1] MSA_Testing, double[:,:,:,::1] Jij, int middle_index):
/* Python wrapper */ static PyObject *__pyx_pw_11cython_code_16analyse_sequence_7Energy_Partner(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cython_code_16analyse_sequence_6Energy_Partner[] = "\n Input :\n MSA_Testing\n Jij = Coupling inferred on MSA_training\n Output \n Eij = Energy protein in MSA_L1 with protein in MSA_L2\n "; static PyMethodDef __pyx_mdef_11cython_code_16analyse_sequence_7Energy_Partner = {"Energy_Partner", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cython_code_16analyse_sequence_7Energy_Partner, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cython_code_16analyse_sequence_6Energy_Partner}; static PyObject *__pyx_pw_11cython_code_16analyse_sequence_7Energy_Partner(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_MSA_Testing = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_Jij = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_middle_index; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Energy_Partner (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_MSA_Testing,&__pyx_n_s_Jij,&__pyx_n_s_middle_index,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_MSA_Testing)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Jij)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("Energy_Partner", 1, 3, 3, 1); __PYX_ERR(0, 75, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_middle_index)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("Energy_Partner", 1, 3, 3, 2); __PYX_ERR(0, 75, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Energy_Partner") < 0)) __PYX_ERR(0, 75, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_MSA_Testing = __Pyx_PyObject_to_MemoryviewSlice_d_dc_char(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_MSA_Testing.memview)) __PYX_ERR(0, 75, __pyx_L3_error) __pyx_v_Jij = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_Jij.memview)) __PYX_ERR(0, 75, __pyx_L3_error) __pyx_v_middle_index = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_middle_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 75, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("Energy_Partner", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 75, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cython_code.analyse_sequence.Energy_Partner", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cython_code_16analyse_sequence_6Energy_Partner(__pyx_self, __pyx_v_MSA_Testing, __pyx_v_Jij, __pyx_v_middle_index); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cython_code_16analyse_sequence_6Energy_Partner(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_MSA_Testing, __Pyx_memviewslice __pyx_v_Jij, int __pyx_v_middle_index) { int __pyx_v_protein1; int __pyx_v_protein2; int __pyx_v_index_site_i; int __pyx_v_index_site_j; __Pyx_memviewslice __pyx_v_Eij = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Energy_Partner", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_AddTraceback("cython_code.analyse_sequence.Energy_Partner", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_Eij, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_MSA_Testing, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_Jij, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__23 = PyTuple_Pack(8, __pyx_n_s_MSA_Testing, __pyx_n_s_Jij, __pyx_n_s_middle_index, __pyx_n_s_protein1, __pyx_n_s_protein2, __pyx_n_s_index_site_i, __pyx_n_s_index_site_j, __pyx_n_s_Eij); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); /* … */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11cython_code_16analyse_sequence_7Energy_Partner, NULL, __pyx_n_s_cython_code_analyse_sequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Energy_Partner, __pyx_t_1) < 0) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_analyse_sequence_pyx, __pyx_n_s_Energy_Partner, 75, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 75, __pyx_L1_error)
076: """
077: Input :
078: MSA_Testing
079: Jij = Coupling inferred on MSA_training
080: Output
081: Eij = Energy protein in MSA_L1 with protein in MSA_L2
082: """
083: cdef:
084: int protein1, protein2, index_site_i, index_site_j
+085: double[:,::1] Eij = np.zeros((MSA_Testing.shape[0],MSA_Testing.shape[0]))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_MSA_Testing.shape[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_MSA_Testing.shape[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_Eij = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+086: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L5:; } }
+087: for protein1 in prange(MSA_Testing.shape[0]):
__pyx_t_7 = (__pyx_v_MSA_Testing.shape[0]); if ((1 == 0)) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) (x) #define unlikely(x) (x) #endif __pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1; if (__pyx_t_9 > 0) { #ifdef _OPENMP #pragma omp parallel #endif /* _OPENMP */ { #ifdef _OPENMP #pragma omp for lastprivate(__pyx_v_index_site_i) lastprivate(__pyx_v_index_site_j) firstprivate(__pyx_v_protein1) lastprivate(__pyx_v_protein1) lastprivate(__pyx_v_protein2) #endif /* _OPENMP */ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){ { __pyx_v_protein1 = (int)(0 + 1 * __pyx_t_8); /* Initialize private variables to invalid values */ __pyx_v_index_site_i = ((int)0xbad0bad0); __pyx_v_index_site_j = ((int)0xbad0bad0); __pyx_v_protein2 = ((int)0xbad0bad0);
+088: for protein2 in range(MSA_Testing.shape[0]):
__pyx_t_10 = (__pyx_v_MSA_Testing.shape[0]); __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_protein2 = __pyx_t_12;
+089: for index_site_i in range(middle_index):
__pyx_t_13 = __pyx_v_middle_index; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_index_site_i = __pyx_t_15;
+090: for index_site_j in range(middle_index,MSA_Testing.shape[1]):
__pyx_t_16 = (__pyx_v_MSA_Testing.shape[1]); __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = __pyx_v_middle_index; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_index_site_j = __pyx_t_18;
+091: Eij[protein1,protein2] -= Jij[index_site_i, MSA_Testing[protein1,index_site_i], index_site_j, MSA_Testing[protein2,index_site_j]]
__pyx_t_19 = __pyx_v_protein1; __pyx_t_20 = __pyx_v_index_site_i; __pyx_t_21 = __pyx_v_protein2; __pyx_t_22 = __pyx_v_index_site_j; __pyx_t_23 = __pyx_v_index_site_i; __pyx_t_24 = (*((char *) ( /* dim=1 */ ((char *) (((char *) ( /* dim=0 */ (__pyx_v_MSA_Testing.data + __pyx_t_19 * __pyx_v_MSA_Testing.strides[0]) )) + __pyx_t_20)) ))); __pyx_t_25 = __pyx_v_index_site_j; __pyx_t_26 = (*((char *) ( /* dim=1 */ ((char *) (((char *) ( /* dim=0 */ (__pyx_v_MSA_Testing.data + __pyx_t_21 * __pyx_v_MSA_Testing.strides[0]) )) + __pyx_t_22)) ))); __pyx_t_27 = __pyx_v_protein1; __pyx_t_28 = __pyx_v_protein2; *((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_Eij.data + __pyx_t_27 * __pyx_v_Eij.strides[0]) )) + __pyx_t_28)) )) -= (*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_Jij.data + __pyx_t_23 * __pyx_v_Jij.strides[0]) ) + __pyx_t_24 * __pyx_v_Jij.strides[1]) ) + __pyx_t_25 * __pyx_v_Jij.strides[2]) )) + __pyx_t_26)) ))); } } } } } } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #endif }
+092: return np.asarray(Eij)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_Eij, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
093:
+094: def Ising_gauge_Jij(double[::1,:,:,:] Jij):
/* Python wrapper */ static PyObject *__pyx_pw_11cython_code_16analyse_sequence_9Ising_gauge_Jij(PyObject *__pyx_self, PyObject *__pyx_arg_Jij); /*proto*/ static char __pyx_doc_11cython_code_16analyse_sequence_8Ising_gauge_Jij[] = "\n In : Jij L*(q-1) gauge Jij[:,q] = 0\n Out : Jij L*q gauge Ising\n "; static PyMethodDef __pyx_mdef_11cython_code_16analyse_sequence_9Ising_gauge_Jij = {"Ising_gauge_Jij", (PyCFunction)__pyx_pw_11cython_code_16analyse_sequence_9Ising_gauge_Jij, METH_O, __pyx_doc_11cython_code_16analyse_sequence_8Ising_gauge_Jij}; static PyObject *__pyx_pw_11cython_code_16analyse_sequence_9Ising_gauge_Jij(PyObject *__pyx_self, PyObject *__pyx_arg_Jij) { __Pyx_memviewslice __pyx_v_Jij = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Ising_gauge_Jij (wrapper)", 0); assert(__pyx_arg_Jij); { __pyx_v_Jij = __Pyx_PyObject_to_MemoryviewSlice_dcd_d_d__double(__pyx_arg_Jij, PyBUF_WRITABLE); if (unlikely(!__pyx_v_Jij.memview)) __PYX_ERR(0, 94, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; __Pyx_AddTraceback("cython_code.analyse_sequence.Ising_gauge_Jij", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cython_code_16analyse_sequence_8Ising_gauge_Jij(__pyx_self, __pyx_v_Jij); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cython_code_16analyse_sequence_8Ising_gauge_Jij(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_Jij) { int __pyx_v_index_i; int __pyx_v_index_j; int __pyx_v_state_1; int __pyx_v_state_2; int __pyx_v_n_states_gauge; double __pyx_v_mean_second_site; double __pyx_v_mean_first_site; double __pyx_v_mean_two_sites; __Pyx_memviewslice __pyx_v_Jij_out = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Ising_gauge_Jij", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __Pyx_AddTraceback("cython_code.analyse_sequence.Ising_gauge_Jij", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_Jij, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_Jij_out, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__25 = PyTuple_Pack(11, __pyx_n_s_Jij, __pyx_n_s_Jij, __pyx_n_s_index_i, __pyx_n_s_index_j, __pyx_n_s_state_1, __pyx_n_s_state_2, __pyx_n_s_n_states_gauge, __pyx_n_s_mean_second_site, __pyx_n_s_mean_first_site, __pyx_n_s_mean_two_sites, __pyx_n_s_Jij_out); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); /* … */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11cython_code_16analyse_sequence_9Ising_gauge_Jij, NULL, __pyx_n_s_cython_code_analyse_sequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Ising_gauge_Jij, __pyx_t_1) < 0) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_analyse_sequence_pyx, __pyx_n_s_Ising_gauge_Jij, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 94, __pyx_L1_error)
095: """
096: In : Jij L*(q-1) gauge Jij[:,q] = 0
097: Out : Jij L*q gauge Ising
098: """
099: cdef:
+100: int index_i, index_j, state_1, state_2, n_states_gauge = Jij.shape[1]
__pyx_v_n_states_gauge = (__pyx_v_Jij.shape[1]);
101: double mean_second_site, mean_first_site, mean_two_sites
+102: double[:,:,:,::1] Jij_out = np.zeros((Jij.shape[0],Jij.shape[1]+1,Jij.shape[2],Jij.shape[3]+1))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_Jij.shape[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(((__pyx_v_Jij.shape[1]) + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromSsize_t((__pyx_v_Jij.shape[2])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyInt_FromSsize_t(((__pyx_v_Jij.shape[3]) + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_Jij_out = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+103: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L5:; } }
+104: for index_i in prange(Jij.shape[0]):
__pyx_t_9 = (__pyx_v_Jij.shape[0]); if ((1 == 0)) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) (x) #define unlikely(x) (x) #endif __pyx_t_11 = (__pyx_t_9 - 0 + 1 - 1/abs(1)) / 1; if (__pyx_t_11 > 0) { #ifdef _OPENMP #pragma omp parallel #endif /* _OPENMP */ { #ifdef _OPENMP #pragma omp for firstprivate(__pyx_v_index_i) lastprivate(__pyx_v_index_i) lastprivate(__pyx_v_index_j) lastprivate(__pyx_v_mean_first_site) lastprivate(__pyx_v_mean_second_site) lastprivate(__pyx_v_mean_two_sites) lastprivate(__pyx_v_state_1) lastprivate(__pyx_v_state_2) #endif /* _OPENMP */ for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_11; __pyx_t_10++){ { __pyx_v_index_i = (int)(0 + 1 * __pyx_t_10); /* Initialize private variables to invalid values */ __pyx_v_index_j = ((int)0xbad0bad0); __pyx_v_mean_first_site = ((double)__PYX_NAN()); __pyx_v_mean_second_site = ((double)__PYX_NAN()); __pyx_v_mean_two_sites = ((double)__PYX_NAN()); __pyx_v_state_1 = ((int)0xbad0bad0); __pyx_v_state_2 = ((int)0xbad0bad0);
+105: for index_j in range(Jij.shape[2]):
__pyx_t_12 = (__pyx_v_Jij.shape[2]); __pyx_t_13 = __pyx_t_12; for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_index_j = __pyx_t_14;
+106: mean_two_sites = mean_list_2(Jij,index_i,index_j)
__pyx_v_mean_two_sites = __pyx_f_11cython_code_16analyse_sequence_mean_list_2(__pyx_v_Jij, __pyx_v_index_i, __pyx_v_index_j);
+107: for state_1 in range(n_states_gauge):
__pyx_t_15 = __pyx_v_n_states_gauge; __pyx_t_16 = __pyx_t_15; for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { __pyx_v_state_1 = __pyx_t_17;
+108: mean_second_site = mean_list(Jij,index_i,state_1,index_j)
__pyx_v_mean_second_site = __pyx_f_11cython_code_16analyse_sequence_mean_list(__pyx_v_Jij, __pyx_v_index_i, __pyx_v_state_1, __pyx_v_index_j);
+109: for state_2 in range(n_states_gauge):
__pyx_t_18 = __pyx_v_n_states_gauge; __pyx_t_19 = __pyx_t_18; for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) { __pyx_v_state_2 = __pyx_t_20;
+110: mean_first_site = mean_list_1(Jij,index_i,index_j,state_2)
__pyx_v_mean_first_site = __pyx_f_11cython_code_16analyse_sequence_mean_list_1(__pyx_v_Jij, __pyx_v_index_i, __pyx_v_index_j, __pyx_v_state_2);
+111: Jij_out[index_i,state_1,index_j,state_2] = Jij[index_i,state_1,index_j,state_2] - mean_first_site - mean_second_site + mean_two_sites
__pyx_t_21 = __pyx_v_index_i; __pyx_t_22 = __pyx_v_state_1; __pyx_t_23 = __pyx_v_index_j; __pyx_t_24 = __pyx_v_state_2; __pyx_t_25 = __pyx_v_index_i; __pyx_t_26 = __pyx_v_state_1; __pyx_t_27 = __pyx_v_index_j; __pyx_t_28 = __pyx_v_state_2; *((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_Jij_out.data + __pyx_t_25 * __pyx_v_Jij_out.strides[0]) ) + __pyx_t_26 * __pyx_v_Jij_out.strides[1]) ) + __pyx_t_27 * __pyx_v_Jij_out.strides[2]) )) + __pyx_t_28)) )) = ((((*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Jij.data) + __pyx_t_21)) ) + __pyx_t_22 * __pyx_v_Jij.strides[1]) ) + __pyx_t_23 * __pyx_v_Jij.strides[2]) ) + __pyx_t_24 * __pyx_v_Jij.strides[3]) ))) - __pyx_v_mean_first_site) - __pyx_v_mean_second_site) + __pyx_v_mean_two_sites); } } } } } } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #endif }
+112: return np.asarray(Jij_out)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_Jij_out, 4, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
113:
+114: cdef double mean_list(double[::1,:,:,:] List, int index_fix, int index_fix_2,int index_fix_3 ) nogil:
static double __pyx_f_11cython_code_16analyse_sequence_mean_list(__Pyx_memviewslice __pyx_v_List, int __pyx_v_index_fix, int __pyx_v_index_fix_2, int __pyx_v_index_fix_3) {
double __pyx_v_mean;
int __pyx_v_index_list;
double __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_WriteUnraisable("cython_code.analyse_sequence.mean_list", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
__pyx_r = 0;
__pyx_L0:;
return __pyx_r;
}
115: cdef:
+116: double mean = 0.0
__pyx_v_mean = 0.0;
117: int index_list
+118: for index_list in range(List.shape[3]):
__pyx_t_1 = (__pyx_v_List.shape[3]); __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_index_list = __pyx_t_3;
+119: mean += List[index_fix,index_fix_2,index_fix_3,index_list]
__pyx_t_4 = __pyx_v_index_fix; __pyx_t_5 = __pyx_v_index_fix_2; __pyx_t_6 = __pyx_v_index_fix_3; __pyx_t_7 = __pyx_v_index_list; __pyx_v_mean = (__pyx_v_mean + (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_List.data) + __pyx_t_4)) ) + __pyx_t_5 * __pyx_v_List.strides[1]) ) + __pyx_t_6 * __pyx_v_List.strides[2]) ) + __pyx_t_7 * __pyx_v_List.strides[3]) )))); }
+120: return mean/(List.shape[3]+1) #zero of gauge excluded in list
__pyx_t_1 = ((__pyx_v_List.shape[3]) + 1); if (unlikely(__pyx_t_1 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 120, __pyx_L1_error) } __pyx_r = (__pyx_v_mean / ((double)__pyx_t_1)); goto __pyx_L0;
121:
+122: cdef double mean_list_1(double[::1,:,:,:] List, int index_fix, int index_fix_2, int index_fix_3 ) nogil:
static double __pyx_f_11cython_code_16analyse_sequence_mean_list_1(__Pyx_memviewslice __pyx_v_List, int __pyx_v_index_fix, int __pyx_v_index_fix_2, int __pyx_v_index_fix_3) {
double __pyx_v_mean;
int __pyx_v_index_list;
double __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_WriteUnraisable("cython_code.analyse_sequence.mean_list_1", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
__pyx_r = 0;
__pyx_L0:;
return __pyx_r;
}
123: cdef:
+124: double mean = 0.0
__pyx_v_mean = 0.0;
125: int index_list
+126: for index_list in range(List.shape[1]):
__pyx_t_1 = (__pyx_v_List.shape[1]); __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_index_list = __pyx_t_3;
+127: mean += List[index_fix,index_list,index_fix_2,index_fix_3]
__pyx_t_4 = __pyx_v_index_fix; __pyx_t_5 = __pyx_v_index_list; __pyx_t_6 = __pyx_v_index_fix_2; __pyx_t_7 = __pyx_v_index_fix_3; __pyx_v_mean = (__pyx_v_mean + (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_List.data) + __pyx_t_4)) ) + __pyx_t_5 * __pyx_v_List.strides[1]) ) + __pyx_t_6 * __pyx_v_List.strides[2]) ) + __pyx_t_7 * __pyx_v_List.strides[3]) )))); }
+128: return mean/(List.shape[1]+1)#zero of gauge excluded in list
__pyx_t_1 = ((__pyx_v_List.shape[1]) + 1); if (unlikely(__pyx_t_1 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 128, __pyx_L1_error) } __pyx_r = (__pyx_v_mean / ((double)__pyx_t_1)); goto __pyx_L0;
129:
+130: cdef double mean_list_2(double[::1,:,:,:] List, int index_fix_0,int index_fix_2) nogil:
static double __pyx_f_11cython_code_16analyse_sequence_mean_list_2(__Pyx_memviewslice __pyx_v_List, int __pyx_v_index_fix_0, int __pyx_v_index_fix_2) {
double __pyx_v_mean;
int __pyx_v_index_list;
int __pyx_v_index_list_2;
double __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_WriteUnraisable("cython_code.analyse_sequence.mean_list_2", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
__pyx_r = 0;
__pyx_L0:;
return __pyx_r;
}
131: cdef:
+132: double mean = 0.0
__pyx_v_mean = 0.0;
133: int index_list, index_list_2
+134: for index_list in range(List.shape[1]):
__pyx_t_1 = (__pyx_v_List.shape[1]); __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_index_list = __pyx_t_3;
+135: for index_list_2 in range(List.shape[3]):
__pyx_t_4 = (__pyx_v_List.shape[3]); __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_index_list_2 = __pyx_t_6;
+136: mean += List[index_fix_0,index_list,index_fix_2,index_list_2]
__pyx_t_7 = __pyx_v_index_fix_0; __pyx_t_8 = __pyx_v_index_list; __pyx_t_9 = __pyx_v_index_fix_2; __pyx_t_10 = __pyx_v_index_list_2; __pyx_v_mean = (__pyx_v_mean + (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_List.data) + __pyx_t_7)) ) + __pyx_t_8 * __pyx_v_List.strides[1]) ) + __pyx_t_9 * __pyx_v_List.strides[2]) ) + __pyx_t_10 * __pyx_v_List.strides[3]) )))); } }
+137: return mean/((List.shape[1]+1)*(List.shape[3]+1))#zero of gauge excluded in list
__pyx_t_1 = (((__pyx_v_List.shape[1]) + 1) * ((__pyx_v_List.shape[3]) + 1)); if (unlikely(__pyx_t_1 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 137, __pyx_L1_error) } __pyx_r = (__pyx_v_mean / ((double)__pyx_t_1)); goto __pyx_L0;
138:
139:
+140: def image_plot_freq(double[:,:,:,:] freqs1, double[:,:,:,:] freqs2, int val=1000, double xmin=0, double xmax=1):
/* Python wrapper */ static PyObject *__pyx_pw_11cython_code_16analyse_sequence_11image_plot_freq(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11cython_code_16analyse_sequence_11image_plot_freq = {"image_plot_freq", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cython_code_16analyse_sequence_11image_plot_freq, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11cython_code_16analyse_sequence_11image_plot_freq(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_freqs1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_freqs2 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_val; double __pyx_v_xmin; double __pyx_v_xmax; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("image_plot_freq (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_freqs1,&__pyx_n_s_freqs2,&__pyx_n_s_val,&__pyx_n_s_xmin,&__pyx_n_s_xmax,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_freqs1)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_freqs2)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("image_plot_freq", 0, 2, 5, 1); __PYX_ERR(0, 140, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_val); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xmin); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xmax); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "image_plot_freq") < 0)) __PYX_ERR(0, 140, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_freqs1 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_freqs1.memview)) __PYX_ERR(0, 140, __pyx_L3_error) __pyx_v_freqs2 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_freqs2.memview)) __PYX_ERR(0, 140, __pyx_L3_error) if (values[2]) { __pyx_v_val = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L3_error) } else { __pyx_v_val = ((int)0x3E8); } if (values[3]) { __pyx_v_xmin = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_xmin == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L3_error) } else { __pyx_v_xmin = ((double)0.0); } if (values[4]) { __pyx_v_xmax = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_xmax == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L3_error) } else { __pyx_v_xmax = ((double)1.0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("image_plot_freq", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 140, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cython_code.analyse_sequence.image_plot_freq", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cython_code_16analyse_sequence_10image_plot_freq(__pyx_self, __pyx_v_freqs1, __pyx_v_freqs2, __pyx_v_val, __pyx_v_xmin, __pyx_v_xmax); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cython_code_16analyse_sequence_10image_plot_freq(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_freqs1, __Pyx_memviewslice __pyx_v_freqs2, int __pyx_v_val, double __pyx_v_xmin, double __pyx_v_xmax) { __Pyx_memviewslice __pyx_v_ima = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_i; int __pyx_v_j; int __pyx_v_k; int __pyx_v_l; int __pyx_v_pos1; int __pyx_v_pos2; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("image_plot_freq", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_AddTraceback("cython_code.analyse_sequence.image_plot_freq", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_ima, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_freqs1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_freqs2, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__27 = PyTuple_Pack(12, __pyx_n_s_freqs1, __pyx_n_s_freqs2, __pyx_n_s_val, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ima, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_l, __pyx_n_s_pos1, __pyx_n_s_pos2); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); /* … */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11cython_code_16analyse_sequence_11image_plot_freq, NULL, __pyx_n_s_cython_code_analyse_sequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_image_plot_freq, __pyx_t_1) < 0) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(5, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_analyse_sequence_pyx, __pyx_n_s_image_plot_freq, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 140, __pyx_L1_error)
141: cdef:
+142: int[:,::1] ima = np.zeros((val,val), dtype=np.intc)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_intc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_int(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_ima = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
143: int i,j,k,l,pos1,pos2
144:
145: #assert freqs1.shape == freqs2.shape
146: #assert len(freqs1.shape) == 4
147:
+148: for i in prange(freqs1.shape[0] - 2, nogil=True):
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { __pyx_t_7 = ((__pyx_v_freqs1.shape[0]) - 2); if ((1 == 0)) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) (x) #define unlikely(x) (x) #endif __pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1; if (__pyx_t_9 > 0) { #ifdef _OPENMP #pragma omp parallel #endif /* _OPENMP */ { #ifdef _OPENMP #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_k) lastprivate(__pyx_v_l) lastprivate(__pyx_v_pos1) lastprivate(__pyx_v_pos2) #endif /* _OPENMP */ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){ { __pyx_v_i = (int)(0 + 1 * __pyx_t_8); /* Initialize private variables to invalid values */ __pyx_v_j = ((int)0xbad0bad0); __pyx_v_k = ((int)0xbad0bad0); __pyx_v_l = ((int)0xbad0bad0); __pyx_v_pos1 = ((int)0xbad0bad0); __pyx_v_pos2 = ((int)0xbad0bad0); /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L5:; } }
+149: for j in range(freqs1.shape[1]):
__pyx_t_10 = (__pyx_v_freqs1.shape[1]); __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_j = __pyx_t_12;
+150: for k in range(i+1, freqs1.shape[2]):
__pyx_t_13 = (__pyx_v_freqs1.shape[2]); __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = (__pyx_v_i + 1); __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_k = __pyx_t_15;
+151: for l in range(freqs1.shape[3]):
__pyx_t_16 = (__pyx_v_freqs1.shape[3]); __pyx_t_17 = __pyx_t_16; for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_l = __pyx_t_18;
+152: pos1 = freq_to_pos(freqs1[i,j,k,l], val, xmin, xmax)
__pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_j; __pyx_t_21 = __pyx_v_k; __pyx_t_22 = __pyx_v_l; __pyx_v_pos1 = __pyx_f_11cython_code_16analyse_sequence_freq_to_pos((*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_freqs1.data + __pyx_t_19 * __pyx_v_freqs1.strides[0]) ) + __pyx_t_20 * __pyx_v_freqs1.strides[1]) ) + __pyx_t_21 * __pyx_v_freqs1.strides[2]) ) + __pyx_t_22 * __pyx_v_freqs1.strides[3]) ))), __pyx_v_val, __pyx_v_xmin, __pyx_v_xmax);
+153: pos2 = freq_to_pos(freqs2[i,j,k,l], val, xmin, xmax)
__pyx_t_22 = __pyx_v_i; __pyx_t_21 = __pyx_v_j; __pyx_t_20 = __pyx_v_k; __pyx_t_19 = __pyx_v_l; __pyx_v_pos2 = __pyx_f_11cython_code_16analyse_sequence_freq_to_pos((*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_freqs2.data + __pyx_t_22 * __pyx_v_freqs2.strides[0]) ) + __pyx_t_21 * __pyx_v_freqs2.strides[1]) ) + __pyx_t_20 * __pyx_v_freqs2.strides[2]) ) + __pyx_t_19 * __pyx_v_freqs2.strides[3]) ))), __pyx_v_val, __pyx_v_xmin, __pyx_v_xmax);
+154: ima[pos1, pos2] += 1
__pyx_t_19 = __pyx_v_pos1; __pyx_t_20 = __pyx_v_pos2; *((int *) ( /* dim=1 */ ((char *) (((int *) ( /* dim=0 */ (__pyx_v_ima.data + __pyx_t_19 * __pyx_v_ima.strides[0]) )) + __pyx_t_20)) )) += 1; } } } } } } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #endif }
+155: return np.asarray(ima)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_ima, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
156:
+157: def image_plot_freq_simple(double[::1] freqs1, double[::1] freqs2, int val=1000, double xmin=0, double xmax=1):
/* Python wrapper */ static PyObject *__pyx_pw_11cython_code_16analyse_sequence_13image_plot_freq_simple(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11cython_code_16analyse_sequence_13image_plot_freq_simple = {"image_plot_freq_simple", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cython_code_16analyse_sequence_13image_plot_freq_simple, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11cython_code_16analyse_sequence_13image_plot_freq_simple(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_freqs1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_freqs2 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_val; double __pyx_v_xmin; double __pyx_v_xmax; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("image_plot_freq_simple (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_freqs1,&__pyx_n_s_freqs2,&__pyx_n_s_val,&__pyx_n_s_xmin,&__pyx_n_s_xmax,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_freqs1)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_freqs2)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("image_plot_freq_simple", 0, 2, 5, 1); __PYX_ERR(0, 157, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_val); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xmin); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xmax); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "image_plot_freq_simple") < 0)) __PYX_ERR(0, 157, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_freqs1 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_freqs1.memview)) __PYX_ERR(0, 157, __pyx_L3_error) __pyx_v_freqs2 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_freqs2.memview)) __PYX_ERR(0, 157, __pyx_L3_error) if (values[2]) { __pyx_v_val = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L3_error) } else { __pyx_v_val = ((int)0x3E8); } if (values[3]) { __pyx_v_xmin = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_xmin == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L3_error) } else { __pyx_v_xmin = ((double)0.0); } if (values[4]) { __pyx_v_xmax = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_xmax == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L3_error) } else { __pyx_v_xmax = ((double)1.0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("image_plot_freq_simple", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 157, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cython_code.analyse_sequence.image_plot_freq_simple", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cython_code_16analyse_sequence_12image_plot_freq_simple(__pyx_self, __pyx_v_freqs1, __pyx_v_freqs2, __pyx_v_val, __pyx_v_xmin, __pyx_v_xmax); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cython_code_16analyse_sequence_12image_plot_freq_simple(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_freqs1, __Pyx_memviewslice __pyx_v_freqs2, int __pyx_v_val, double __pyx_v_xmin, double __pyx_v_xmax) { __Pyx_memviewslice __pyx_v_ima = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_i; int __pyx_v_pos1; int __pyx_v_pos2; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("image_plot_freq_simple", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_AddTraceback("cython_code.analyse_sequence.image_plot_freq_simple", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_ima, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_freqs1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_freqs2, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__29 = PyTuple_Pack(9, __pyx_n_s_freqs1, __pyx_n_s_freqs2, __pyx_n_s_val, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ima, __pyx_n_s_i, __pyx_n_s_pos1, __pyx_n_s_pos2); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 157, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); /* … */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11cython_code_16analyse_sequence_13image_plot_freq_simple, NULL, __pyx_n_s_cython_code_analyse_sequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_image_plot_freq_simple, __pyx_t_1) < 0) __PYX_ERR(0, 157, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(5, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_analyse_sequence_pyx, __pyx_n_s_image_plot_freq_simple, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 157, __pyx_L1_error)
158: cdef:
+159: int[:,::1] ima = np.zeros((val,val), dtype=np.intc)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_intc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_int(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_ima = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
160: int i,pos1,pos2
161:
+162: for i in prange(freqs1.shape[0], nogil=True):
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { __pyx_t_7 = (__pyx_v_freqs1.shape[0]); if ((1 == 0)) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) (x) #define unlikely(x) (x) #endif __pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1; if (__pyx_t_9 > 0) { #ifdef _OPENMP #pragma omp parallel #endif /* _OPENMP */ { #ifdef _OPENMP #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_pos1) lastprivate(__pyx_v_pos2) #endif /* _OPENMP */ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){ { __pyx_v_i = (int)(0 + 1 * __pyx_t_8); /* Initialize private variables to invalid values */ __pyx_v_pos1 = ((int)0xbad0bad0); __pyx_v_pos2 = ((int)0xbad0bad0); /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L5:; } }
+163: pos1 = freq_to_pos(freqs1[i], val, xmin, xmax)
__pyx_t_10 = __pyx_v_i; __pyx_v_pos1 = __pyx_f_11cython_code_16analyse_sequence_freq_to_pos((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_freqs1.data) + __pyx_t_10)) ))), __pyx_v_val, __pyx_v_xmin, __pyx_v_xmax);
+164: pos2 = freq_to_pos(freqs2[i], val, xmin, xmax)
__pyx_t_10 = __pyx_v_i; __pyx_v_pos2 = __pyx_f_11cython_code_16analyse_sequence_freq_to_pos((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_freqs2.data) + __pyx_t_10)) ))), __pyx_v_val, __pyx_v_xmin, __pyx_v_xmax);
+165: ima[pos1, pos2] += 1
__pyx_t_10 = __pyx_v_pos1; __pyx_t_11 = __pyx_v_pos2; *((int *) ( /* dim=1 */ ((char *) (((int *) ( /* dim=0 */ (__pyx_v_ima.data + __pyx_t_10 * __pyx_v_ima.strides[0]) )) + __pyx_t_11)) )) += 1; } } } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #endif }
+166: return np.asarray(ima)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_ima, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
167:
168:
+169: cdef int freq_to_pos(double freq, int val, double xmin, double xmax) nogil:
static int __pyx_f_11cython_code_16analyse_sequence_freq_to_pos(double __pyx_v_freq, int __pyx_v_val, double __pyx_v_xmin, double __pyx_v_xmax) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_WriteUnraisable("cython_code.analyse_sequence.freq_to_pos", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
__pyx_r = 0;
__pyx_L0:;
return __pyx_r;
}
+170: return int((freq-xmin)*(val-1)/(xmax-xmin))
__pyx_t_1 = ((__pyx_v_freq - __pyx_v_xmin) * (__pyx_v_val - 1)); __pyx_t_2 = (__pyx_v_xmax - __pyx_v_xmin); if (unlikely(__pyx_t_2 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 170, __pyx_L1_error) } __pyx_r = ((int)(__pyx_t_1 / __pyx_t_2)); goto __pyx_L0;