Generated by Cython 0.29.16
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
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); /* 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_L6_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L1_error; } __pyx_L7:; } }
+023: for site_i in prange(msa.shape[1]):
if (unlikely(!__pyx_v_msa.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("msa"); __PYX_ERR(0, 23, __pyx_L6_error) } __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; if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_v_Fij.shape[0]; if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_v_Fij.shape[1]; if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_v_Fij.shape[2]; if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_v_Fij.shape[3]; __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; if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_v_Fij.shape[0]; if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_v_Fij.shape[1]; if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_v_Fij.shape[2]; if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_v_Fij.shape[3]; __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; if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_v_Fij.shape[0]; if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_v_Fij.shape[1]; if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_v_Fij.shape[2]; if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_v_Fij.shape[3]; __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; if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_v_Cij.shape[0]; if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_v_Cij.shape[1]; if (__pyx_t_38 < 0) __pyx_t_38 += __pyx_v_Cij.shape[2]; if (__pyx_t_39 < 0) __pyx_t_39 += __pyx_v_Cij.shape[3]; *((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); /* 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]):
if (unlikely(!__pyx_v_msa.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("msa"); __PYX_ERR(0, 39, __pyx_L4_error) } __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; if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_v_weight.shape[0]; __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_20 = __pyx_v_index_try; __pyx_t_21 = __pyx_v_site_i; if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_v_msa.shape[0]; if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_v_msa.shape[1]; __pyx_t_22 = __pyx_v_index_try; __pyx_t_23 = __pyx_v_site_j; if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_v_msa.shape[0]; if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_v_msa.shape[1]; __pyx_t_24 = __pyx_v_site_i; __pyx_t_25 = (*((char *) ( /* dim=1 */ ((char *) (((char *) ( /* dim=0 */ (__pyx_v_msa.data + __pyx_t_20 * __pyx_v_msa.strides[0]) )) + __pyx_t_21)) ))); __pyx_t_26 = __pyx_v_site_j; __pyx_t_27 = (*((char *) ( /* dim=1 */ ((char *) (((char *) ( /* dim=0 */ (__pyx_v_msa.data + __pyx_t_22 * __pyx_v_msa.strides[0]) )) + __pyx_t_23)) ))); if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_v_Fij.shape[0]; if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_v_Fij.shape[1]; if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_v_Fij.shape[2]; if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_v_Fij.shape[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]) )) += (__pyx_t_9 / __pyx_v_z); }
+043: for index_spin_1 in range(n_states):
__pyx_t_18 = __pyx_v_n_states; __pyx_t_28 = __pyx_t_18; for (__pyx_t_29 = 0; __pyx_t_29 < __pyx_t_28; __pyx_t_29+=1) { __pyx_v_index_spin_1 = __pyx_t_29;
+044: for index_spin_2 in range(n_states):
__pyx_t_30 = __pyx_v_n_states; __pyx_t_31 = __pyx_t_30; for (__pyx_t_32 = 0; __pyx_t_32 < __pyx_t_31; __pyx_t_32+=1) { __pyx_v_index_spin_2 = __pyx_t_32;
+045: if site_i != site_j:
__pyx_t_33 = ((__pyx_v_site_i != __pyx_v_site_j) != 0); if (__pyx_t_33) { /* … */ 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_34 = __Pyx_pow_long(((long)__pyx_v_n_states), 2); if (unlikely(__pyx_t_34 == 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_35 = __pyx_v_site_i; __pyx_t_36 = __pyx_v_index_spin_1; __pyx_t_37 = __pyx_v_site_j; __pyx_t_38 = __pyx_v_index_spin_2; if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_v_Fij.shape[0]; if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_v_Fij.shape[1]; if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_v_Fij.shape[2]; if (__pyx_t_38 < 0) __pyx_t_38 += __pyx_v_Fij.shape[3]; __pyx_t_39 = __pyx_v_site_i; __pyx_t_40 = __pyx_v_index_spin_1; __pyx_t_41 = __pyx_v_site_j; __pyx_t_42 = __pyx_v_index_spin_2; if (__pyx_t_39 < 0) __pyx_t_39 += __pyx_v_Fij.shape[0]; if (__pyx_t_40 < 0) __pyx_t_40 += __pyx_v_Fij.shape[1]; if (__pyx_t_41 < 0) __pyx_t_41 += __pyx_v_Fij.shape[2]; if (__pyx_t_42 < 0) __pyx_t_42 += __pyx_v_Fij.shape[3]; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_39)) ) + __pyx_t_40 * __pyx_v_Fij.strides[1]) ) + __pyx_t_41 * __pyx_v_Fij.strides[2]) ) + __pyx_t_42 * __pyx_v_Fij.strides[3]) )) = ((__pyx_v_pseudocount / ((double)__pyx_t_34)) + ((1.0 - __pyx_v_pseudocount) * (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_35)) ) + __pyx_t_36 * __pyx_v_Fij.strides[1]) ) + __pyx_t_37 * __pyx_v_Fij.strides[2]) ) + __pyx_t_38 * __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*(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_43 = __pyx_v_site_i; __pyx_t_44 = __pyx_v_index_spin_1; __pyx_t_45 = __pyx_v_site_j; __pyx_t_46 = __pyx_v_index_spin_2; if (__pyx_t_43 < 0) __pyx_t_43 += __pyx_v_Fij.shape[0]; if (__pyx_t_44 < 0) __pyx_t_44 += __pyx_v_Fij.shape[1]; if (__pyx_t_45 < 0) __pyx_t_45 += __pyx_v_Fij.shape[2]; if (__pyx_t_46 < 0) __pyx_t_46 += __pyx_v_Fij.shape[3]; __pyx_t_47 = __pyx_v_site_i; __pyx_t_48 = __pyx_v_index_spin_1; __pyx_t_49 = __pyx_v_site_j; __pyx_t_50 = __pyx_v_index_spin_2; if (__pyx_t_47 < 0) __pyx_t_47 += __pyx_v_Fij.shape[0]; if (__pyx_t_48 < 0) __pyx_t_48 += __pyx_v_Fij.shape[1]; if (__pyx_t_49 < 0) __pyx_t_49 += __pyx_v_Fij.shape[2]; if (__pyx_t_50 < 0) __pyx_t_50 += __pyx_v_Fij.shape[3]; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_Fij.data) + __pyx_t_47)) ) + __pyx_t_48 * __pyx_v_Fij.strides[1]) ) + __pyx_t_49 * __pyx_v_Fij.strides[2]) ) + __pyx_t_50 * __pyx_v_Fij.strides[3]) )) = ((((__pyx_v_index_spin_1 == __pyx_v_index_spin_2) * 1) * (__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_43)) ) + __pyx_t_44 * __pyx_v_Fij.strides[1]) ) + __pyx_t_45 * __pyx_v_Fij.strides[2]) ) + __pyx_t_46 * __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),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_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, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 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); /* 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); if (unlikely(!__pyx_v_msa.memview)) { __Pyx_RaiseUnboundLocalError("msa"); __PYX_ERR(0, 51, __pyx_L1_error) } __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_L5_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L1_error; } __pyx_L6:; } }
+058: for i in prange(msa.shape[0]-1):
if (unlikely(!__pyx_v_msa.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("msa"); __PYX_ERR(0, 58, __pyx_L5_error) } __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_shape = __pyx_v_msa.shape[0]; Py_ssize_t __pyx_tmp_stride = __pyx_v_msa.strides[0]; if (__pyx_tmp_idx < 0) __pyx_tmp_idx += __pyx_tmp_shape; if ((0)) __PYX_ERR(0, 60, __pyx_L9_error) __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_shape = __pyx_v_msa.shape[0]; Py_ssize_t __pyx_tmp_stride = __pyx_v_msa.strides[0]; if (__pyx_tmp_idx < 0) __pyx_tmp_idx += __pyx_tmp_shape; if ((0)) __PYX_ERR(0, 60, __pyx_L9_error) __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) { /* … */ } } goto __pyx_L15; __pyx_L9_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_L14; __pyx_L14:; #ifdef _OPENMP #pragma omp critical(__pyx_parallel_lastprivates1) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_i; __pyx_parallel_temp1 = __pyx_v_j; } __pyx_L15:; #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 */ __PYX_XDEC_MEMVIEW(&__pyx_t_13, 0); __PYX_XDEC_MEMVIEW(&__pyx_t_14, 0); #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_i = __pyx_parallel_temp0; __pyx_v_j = __pyx_parallel_temp1; 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_L5_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 }
+061: sum_dist[i] += 1
__pyx_t_15 = __pyx_v_i; if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_v_sum_dist.shape[0]; *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_sum_dist.data) + __pyx_t_15)) )) += 1.0;
+062: sum_dist[j] += 1
__pyx_t_16 = __pyx_v_j; if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_v_sum_dist.shape[0]; *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_sum_dist.data) + __pyx_t_16)) )) += 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_17 = __pyx_v_i; if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_v_sum_dist.shape[0]; __pyx_t_18 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_sum_dist.data) + __pyx_t_17)) ))) + 1.0); if (unlikely(__pyx_t_18 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 64, __pyx_L1_error) } __pyx_t_19 = __pyx_v_i; if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_v_weight.shape[0]; *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_weight.data) + __pyx_t_19)) )) = (1.0 / __pyx_t_18); }
+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; if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_v_a.shape[0]; __pyx_t_5 = __pyx_v_i; if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_v_b.shape[0]; __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); /* 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_L4_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L1_error; } __pyx_L5:; } }
+087: for protein1 in prange(MSA_Testing.shape[0]):
if (unlikely(!__pyx_v_MSA_Testing.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("MSA_Testing"); __PYX_ERR(0, 87, __pyx_L4_error) } __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; if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_v_MSA_Testing.shape[0]; if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_v_MSA_Testing.shape[1]; __pyx_t_21 = __pyx_v_protein2; __pyx_t_22 = __pyx_v_index_site_j; if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_v_MSA_Testing.shape[0]; if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_v_MSA_Testing.shape[1]; __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)) ))); if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_v_Jij.shape[0]; if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_v_Jij.shape[1]; if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_v_Jij.shape[2]; if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_v_Jij.shape[3]; __pyx_t_27 = __pyx_v_protein1; __pyx_t_28 = __pyx_v_protein2; if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_v_Eij.shape[0]; if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_v_Eij.shape[1]; *((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); /* 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_L4_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L1_error; } __pyx_L5:; } }
+104: for index_i in prange(Jij.shape[0]):
if (unlikely(!__pyx_v_Jij.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("Jij"); __PYX_ERR(0, 104, __pyx_L4_error) } __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; if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_v_Jij.shape[0]; if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_v_Jij.shape[1]; if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_v_Jij.shape[2]; if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_v_Jij.shape[3]; __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; if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_v_Jij_out.shape[0]; if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_v_Jij_out.shape[1]; if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_v_Jij_out.shape[2]; if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_v_Jij_out.shape[3]; *((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; if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_v_List.shape[0]; if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_v_List.shape[1]; if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_v_List.shape[2]; if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_v_List.shape[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]) )))); }
+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; if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_v_List.shape[0]; if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_v_List.shape[1]; if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_v_List.shape[2]; if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_v_List.shape[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; if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_v_List.shape[0]; if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_v_List.shape[1]; if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_v_List.shape[2]; if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_v_List.shape[3]; __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;