Generated by Cython 3.0.0
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: utils_cython.c
+001: # cython -a src/utils_cython.pyx && python src/setup.py build_ext --inplace
__pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
002: # cd src/ && cython -a utils_cython.pyx && python setup.py build_ext --inplace && cd ..
003: # cython: language_level=3, boundscheck=False, wraparound=False
004:
+005: language_level = 3
if (PyDict_SetItem(__pyx_d, __pyx_n_s_language_level, __pyx_int_3) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
+006: import numpy as np
__pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
007: cimport numpy as np
008: cimport cython
009: from libc.stdlib cimport rand, RAND_MAX
010: from libc.time cimport clock, CLOCKS_PER_SEC
011:
012: cdef extern from "math.h":
013: double sin(double x)
014: double sqrt(double x)
015: double cos(double x)
016: double exp(double x)
017: double fabs(double x)
018:
019: cdef:
+020: float M_PI = 3.14159265358979323846
__pyx_v_12utils_cython_M_PI = 3.14159265358979323846;
+021: int pixel_num_1m = 4
__pyx_v_12utils_cython_pixel_num_1m = 4;
022:
+023: cdef int get_round(float a):
static int __pyx_f_12utils_cython_get_round(float __pyx_v_a) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_round", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("utils_cython.get_round", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+024: if a > 0:
__pyx_t_1 = (__pyx_v_a > 0.0); if (__pyx_t_1) { /* … */ }
+025: return int(a + 0.5)
__pyx_r = ((int)(__pyx_v_a + 0.5)); goto __pyx_L0;
026: else:
+027: return -int(fabs(a) + 0.5)
/*else*/ { __pyx_t_2 = __Pyx_PyInt_FromDouble((fabs(__pyx_v_a) + 0.5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 27, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; goto __pyx_L0; }
028:
+029: cdef np.float32_t get_dis_point(np.float32_t a, np.float32_t b):
static __pyx_t_5numpy_float32_t __pyx_f_12utils_cython_get_dis_point(__pyx_t_5numpy_float32_t __pyx_v_a, __pyx_t_5numpy_float32_t __pyx_v_b) { __pyx_t_5numpy_float32_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_dis_point", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+030: return sqrt(a * a + b * b)
__pyx_r = sqrt(((__pyx_v_a * __pyx_v_a) + (__pyx_v_b * __pyx_v_b))); goto __pyx_L0;
031:
+032: cdef np.float32_t get_point_for_ratio(np.ndarray[np.float32_t, ndim=1] point, np.ndarray[np.float32_t, ndim=1] end,
static __pyx_t_5numpy_float32_t __pyx_f_12utils_cython_get_point_for_ratio(PyArrayObject *__pyx_v_point, PyArrayObject *__pyx_v_end, __pyx_t_5numpy_float32_t __pyx_v_ratio, int __pyx_v_c) { __Pyx_LocalBuf_ND __pyx_pybuffernd_end; __Pyx_Buffer __pyx_pybuffer_end; __Pyx_LocalBuf_ND __pyx_pybuffernd_point; __Pyx_Buffer __pyx_pybuffer_point; __pyx_t_5numpy_float32_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_point_for_ratio", 0); __pyx_pybuffer_point.pybuffer.buf = NULL; __pyx_pybuffer_point.refcount = 0; __pyx_pybuffernd_point.data = NULL; __pyx_pybuffernd_point.rcbuffer = &__pyx_pybuffer_point; __pyx_pybuffer_end.pybuffer.buf = NULL; __pyx_pybuffer_end.refcount = 0; __pyx_pybuffernd_end.data = NULL; __pyx_pybuffernd_end.rcbuffer = &__pyx_pybuffer_end; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_point.rcbuffer->pybuffer, (PyObject*)__pyx_v_point, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 32, __pyx_L1_error) } __pyx_pybuffernd_point.diminfo[0].strides = __pyx_pybuffernd_point.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_point.diminfo[0].shape = __pyx_pybuffernd_point.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_end.rcbuffer->pybuffer, (PyObject*)__pyx_v_end, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 32, __pyx_L1_error) } __pyx_pybuffernd_end.diminfo[0].strides = __pyx_pybuffernd_end.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_end.diminfo[0].shape = __pyx_pybuffernd_end.rcbuffer->pybuffer.shape[0]; /* … */ /* function exit code */ __pyx_L1_error:; { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_end.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython.get_point_for_ratio", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_end.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer); __pyx_L2:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
033: np.float32_t ratio, int c):
+034: return point[c] * (1.0 - ratio) + end[c] * ratio
__pyx_t_1 = __pyx_v_c; __pyx_t_2 = __pyx_v_c; __pyx_r = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_point.diminfo[0].strides)) * (1.0 - __pyx_v_ratio)) + ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_end.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_end.diminfo[0].strides)) * __pyx_v_ratio)); goto __pyx_L0;
035:
+036: def _normalize(np.ndarray[np.float32_t, ndim=2] polygon, np.float32_t angle, np.float32_t center_point_y):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_1_normalize(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_1_normalize = {"_normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_1_normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_1_normalize(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyArrayObject *__pyx_v_polygon = 0; __pyx_t_5numpy_float32_t __pyx_v_angle; __pyx_t_5numpy_float32_t __pyx_v_center_point_y; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_normalize (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_polygon,&__pyx_n_s_angle,&__pyx_n_s_center_point_y,0}; PyObject* values[3] = {0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_polygon)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_normalize", 1, 3, 3, 1); __PYX_ERR(0, 36, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_center_point_y)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_normalize", 1, 3, 3, 2); __PYX_ERR(0, 36, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_normalize") < 0)) __PYX_ERR(0, 36, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_polygon = ((PyArrayObject *)values[0]); __pyx_v_angle = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_angle == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) __pyx_v_center_point_y = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_center_point_y == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_normalize", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 36, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython._normalize", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_polygon), __pyx_ptype_5numpy_ndarray, 1, "polygon", 0))) __PYX_ERR(0, 36, __pyx_L1_error) __pyx_r = __pyx_pf_12utils_cython__normalize(__pyx_self, __pyx_v_polygon, __pyx_v_angle, __pyx_v_center_point_y); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython__normalize(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_polygon, __pyx_t_5numpy_float32_t __pyx_v_angle, __pyx_t_5numpy_float32_t __pyx_v_center_point_y) { __pyx_t_5numpy_float32_t __pyx_v_cos_; __pyx_t_5numpy_float32_t __pyx_v_sin_; __pyx_t_5numpy_float32_t __pyx_v_min_sqr_dis; __pyx_t_5numpy_float32_t __pyx_v_temp; int __pyx_v_i; int __pyx_v_n; PyArrayObject *__pyx_v_new_points = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_new_points; __Pyx_Buffer __pyx_pybuffer_new_points; __Pyx_LocalBuf_ND __pyx_pybuffernd_polygon; __Pyx_Buffer __pyx_pybuffer_polygon; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_normalize", 0); __pyx_pybuffer_new_points.pybuffer.buf = NULL; __pyx_pybuffer_new_points.refcount = 0; __pyx_pybuffernd_new_points.data = NULL; __pyx_pybuffernd_new_points.rcbuffer = &__pyx_pybuffer_new_points; __pyx_pybuffer_polygon.pybuffer.buf = NULL; __pyx_pybuffer_polygon.refcount = 0; __pyx_pybuffernd_polygon.data = NULL; __pyx_pybuffernd_polygon.rcbuffer = &__pyx_pybuffer_polygon; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_polygon.rcbuffer->pybuffer, (PyObject*)__pyx_v_polygon, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 36, __pyx_L1_error) } __pyx_pybuffernd_polygon.diminfo[0].strides = __pyx_pybuffernd_polygon.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_polygon.diminfo[0].shape = __pyx_pybuffernd_polygon.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_polygon.diminfo[1].strides = __pyx_pybuffernd_polygon.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_polygon.diminfo[1].shape = __pyx_pybuffernd_polygon.rcbuffer->pybuffer.shape[1]; /* … */ /* function exit code */ __pyx_L1_error:; __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); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_polygon.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython._normalize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_polygon.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_new_points); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__15 = PyTuple_Pack(10, __pyx_n_s_polygon, __pyx_n_s_angle, __pyx_n_s_center_point_y, __pyx_n_s_cos, __pyx_n_s_sin, __pyx_n_s_min_sqr_dis, __pyx_n_s_temp, __pyx_n_s_i, __pyx_n_s_n, __pyx_n_s_new_points); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_1_normalize, 0, __pyx_n_s_normalize, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_normalize, __pyx_t_2) < 0) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_normalize, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 36, __pyx_L1_error)
037: cdef np.float32_t cos_, sin_, min_sqr_dis, temp
+038: min_sqr_dis = 10000.0
__pyx_v_min_sqr_dis = 10000.0;
039: cdef int i, n
+040: cos_ = cos(angle)
__pyx_v_cos_ = cos(__pyx_v_angle);
+041: sin_ = sin(angle)
__pyx_v_sin_ = sin(__pyx_v_angle);
+042: n = polygon.shape[0]
__pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_polygon)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 42, __pyx_L1_error)
__pyx_v_n = (__pyx_t_1[0]);
+043: cdef np.ndarray[np.float32_t, ndim=2] new_points = np.zeros((n, 2), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __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, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 43, __pyx_L1_error) __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_points.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_new_points = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_new_points.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 43, __pyx_L1_error) } else {__pyx_pybuffernd_new_points.diminfo[0].strides = __pyx_pybuffernd_new_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_new_points.diminfo[0].shape = __pyx_pybuffernd_new_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_new_points.diminfo[1].strides = __pyx_pybuffernd_new_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_new_points.diminfo[1].shape = __pyx_pybuffernd_new_points.rcbuffer->pybuffer.shape[1]; } } __pyx_t_7 = 0; __pyx_v_new_points = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
+044: for i in range(n):
__pyx_t_8 = __pyx_v_n; __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_i = __pyx_t_10;
+045: new_points[i, 0] = polygon[i, 0] * cos_ - polygon[i, 1] * sin_
__pyx_t_11 = __pyx_v_i; __pyx_t_12 = 0; __pyx_t_13 = __pyx_v_i; __pyx_t_14 = 1; __pyx_t_15 = __pyx_v_i; __pyx_t_16 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_new_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_new_points.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_new_points.diminfo[1].strides) = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygon.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_polygon.diminfo[0].strides, __pyx_t_12, __pyx_pybuffernd_polygon.diminfo[1].strides)) * __pyx_v_cos_) - ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygon.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_polygon.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_polygon.diminfo[1].strides)) * __pyx_v_sin_));
+046: new_points[i, 1] = polygon[i, 0] * sin_ + polygon[i, 1] * cos_
__pyx_t_14 = __pyx_v_i; __pyx_t_13 = 0; __pyx_t_12 = __pyx_v_i; __pyx_t_11 = 1; __pyx_t_16 = __pyx_v_i; __pyx_t_15 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_new_points.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_new_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_new_points.diminfo[1].strides) = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygon.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_polygon.diminfo[0].strides, __pyx_t_13, __pyx_pybuffernd_polygon.diminfo[1].strides)) * __pyx_v_sin_) + ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygon.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_polygon.diminfo[0].strides, __pyx_t_11, __pyx_pybuffernd_polygon.diminfo[1].strides)) * __pyx_v_cos_));
+047: temp = center_point_y - new_points[i, 1]
__pyx_t_11 = __pyx_v_i; __pyx_t_12 = 1; __pyx_v_temp = (__pyx_v_center_point_y - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_new_points.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_new_points.diminfo[0].strides, __pyx_t_12, __pyx_pybuffernd_new_points.diminfo[1].strides)));
+048: min_sqr_dis = min(min_sqr_dis, new_points[i, 0] * new_points[i, 0] + temp * temp)
__pyx_t_12 = __pyx_v_i; __pyx_t_11 = 0; __pyx_t_13 = __pyx_v_i; __pyx_t_14 = 0; __pyx_t_17 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_new_points.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_new_points.diminfo[0].strides, __pyx_t_11, __pyx_pybuffernd_new_points.diminfo[1].strides)) * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_new_points.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_new_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_new_points.diminfo[1].strides))) + (__pyx_v_temp * __pyx_v_temp)); __pyx_t_18 = __pyx_v_min_sqr_dis; if ((__pyx_t_17 < __pyx_t_18)) { __pyx_t_19 = __pyx_t_17; } else { __pyx_t_19 = __pyx_t_18; } __pyx_v_min_sqr_dis = __pyx_t_19; }
+049: return new_points, min_sqr_dis
__Pyx_XDECREF(__pyx_r); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_min_sqr_dis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF((PyObject *)__pyx_v_new_points); __Pyx_GIVEREF((PyObject *)__pyx_v_new_points); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_new_points)); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
050:
+051: def normalize(polygon, cent_x, cent_y, angle, center_point):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_3normalize(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_3normalize = {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_3normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_3normalize(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_polygon = 0; PyObject *__pyx_v_cent_x = 0; PyObject *__pyx_v_cent_y = 0; PyObject *__pyx_v_angle = 0; PyObject *__pyx_v_center_point = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("normalize (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_polygon,&__pyx_n_s_cent_x,&__pyx_n_s_cent_y,&__pyx_n_s_angle,&__pyx_n_s_center_point,0}; PyObject* values[5] = {0,0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_polygon)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 51, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cent_x)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 51, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("normalize", 1, 5, 5, 1); __PYX_ERR(0, 51, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cent_y)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 51, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("normalize", 1, 5, 5, 2); __PYX_ERR(0, 51, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 51, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("normalize", 1, 5, 5, 3); __PYX_ERR(0, 51, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_center_point)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 51, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("normalize", 1, 5, 5, 4); __PYX_ERR(0, 51, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "normalize") < 0)) __PYX_ERR(0, 51, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 5)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); } __pyx_v_polygon = values[0]; __pyx_v_cent_x = values[1]; __pyx_v_cent_y = values[2]; __pyx_v_angle = values[3]; __pyx_v_center_point = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("normalize", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 51, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_12utils_cython_2normalize(__pyx_self, __pyx_v_polygon, __pyx_v_cent_x, __pyx_v_cent_y, __pyx_v_angle, __pyx_v_center_point); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_2normalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_polygon, PyObject *__pyx_v_cent_x, PyObject *__pyx_v_cent_y, PyObject *__pyx_v_angle, PyObject *__pyx_v_center_point) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("normalize", 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_AddTraceback("utils_cython.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__17 = PyTuple_Pack(5, __pyx_n_s_polygon, __pyx_n_s_cent_x, __pyx_n_s_cent_y, __pyx_n_s_angle, __pyx_n_s_center_point); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_3normalize, 0, __pyx_n_s_normalize_2, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_normalize_2, __pyx_t_2) < 0) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_normalize_2, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 51, __pyx_L1_error)
+052: polygon[:, 0] -= cent_x
__pyx_slice__3 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__3)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__3); __Pyx_GIVEREF(__pyx_slice__3); /* … */ __Pyx_INCREF(__pyx_tuple__4); __pyx_t_1 = __pyx_tuple__4; __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_polygon, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_v_cent_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely((PyObject_SetItem(__pyx_v_polygon, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_tuple__4 = PyTuple_Pack(2, __pyx_slice__3, __pyx_int_0); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4);
+053: polygon[:, 1] -= cent_y
__Pyx_INCREF(__pyx_tuple__5); __pyx_t_1 = __pyx_tuple__5; __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_polygon, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_v_cent_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely((PyObject_SetItem(__pyx_v_polygon, __pyx_t_1, __pyx_t_2) < 0))) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__5 = PyTuple_Pack(2, __pyx_slice__3, __pyx_int_1); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5);
+054: return _normalize(polygon, angle, center_point[1])
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_normalize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_center_point, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } { PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_polygon, __pyx_v_angle, __pyx_t_4}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; 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_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
055:
+056: cdef np.float32_t get_sqr_dis_point(np.float32_t a, np.float32_t b):
static __pyx_t_5numpy_float32_t __pyx_f_12utils_cython_get_sqr_dis_point(__pyx_t_5numpy_float32_t __pyx_v_a, __pyx_t_5numpy_float32_t __pyx_v_b) { __pyx_t_5numpy_float32_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_sqr_dis_point", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+057: return a * a + b * b
__pyx_r = ((__pyx_v_a * __pyx_v_a) + (__pyx_v_b * __pyx_v_b)); goto __pyx_L0;
058:
+059: def _get_pseudo_label(np.ndarray[np.float32_t, ndim=2] predicts, np.ndarray[np.float32_t, ndim=2] labels,
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_5_get_pseudo_label(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_5_get_pseudo_label = {"_get_pseudo_label", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_5_get_pseudo_label, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_5_get_pseudo_label(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyArrayObject *__pyx_v_predicts = 0; PyArrayObject *__pyx_v_labels = 0; PyArrayObject *__pyx_v_self_cost = 0; int __pyx_v_is_manhatan; int __pyx_v_match_l2; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_pseudo_label (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_predicts,&__pyx_n_s_labels,&__pyx_n_s_self_cost,&__pyx_n_s_is_manhatan,&__pyx_n_s_match_l2,0}; PyObject* values[5] = {0,0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_predicts)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_labels)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_pseudo_label", 1, 5, 5, 1); __PYX_ERR(0, 59, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self_cost)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_pseudo_label", 1, 5, 5, 2); __PYX_ERR(0, 59, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_manhatan)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_pseudo_label", 1, 5, 5, 3); __PYX_ERR(0, 59, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_match_l2)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_pseudo_label", 1, 5, 5, 4); __PYX_ERR(0, 59, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_get_pseudo_label") < 0)) __PYX_ERR(0, 59, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 5)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); } __pyx_v_predicts = ((PyArrayObject *)values[0]); __pyx_v_labels = ((PyArrayObject *)values[1]); __pyx_v_self_cost = ((PyArrayObject *)values[2]); __pyx_v_is_manhatan = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_is_manhatan == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) __pyx_v_match_l2 = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_match_l2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_get_pseudo_label", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 59, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython._get_pseudo_label", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_predicts), __pyx_ptype_5numpy_ndarray, 1, "predicts", 0))) __PYX_ERR(0, 59, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) __PYX_ERR(0, 59, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_self_cost), __pyx_ptype_5numpy_ndarray, 1, "self_cost", 0))) __PYX_ERR(0, 60, __pyx_L1_error) __pyx_r = __pyx_pf_12utils_cython_4_get_pseudo_label(__pyx_self, __pyx_v_predicts, __pyx_v_labels, __pyx_v_self_cost, __pyx_v_is_manhatan, __pyx_v_match_l2); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_4_get_pseudo_label(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_predicts, PyArrayObject *__pyx_v_labels, PyArrayObject *__pyx_v_self_cost, int __pyx_v_is_manhatan, int __pyx_v_match_l2) { int __pyx_v_i; int __pyx_v_n; int __pyx_v_j; int __pyx_v_t; int __pyx_v_k; int __pyx_v_r; PyArrayObject *__pyx_v_C = 0; PyArrayObject *__pyx_v_pseudo_label = 0; PyObject *__pyx_v_matched = NULL; PyObject *__pyx_v_linear_sum_assignment = NULL; PyObject *__pyx_v_r_list = NULL; PyObject *__pyx_v_c_list = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_C; __Pyx_Buffer __pyx_pybuffer_C; __Pyx_LocalBuf_ND __pyx_pybuffernd_labels; __Pyx_Buffer __pyx_pybuffer_labels; __Pyx_LocalBuf_ND __pyx_pybuffernd_predicts; __Pyx_Buffer __pyx_pybuffer_predicts; __Pyx_LocalBuf_ND __pyx_pybuffernd_pseudo_label; __Pyx_Buffer __pyx_pybuffer_pseudo_label; __Pyx_LocalBuf_ND __pyx_pybuffernd_self_cost; __Pyx_Buffer __pyx_pybuffer_self_cost; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_pseudo_label", 0); __pyx_pybuffer_C.pybuffer.buf = NULL; __pyx_pybuffer_C.refcount = 0; __pyx_pybuffernd_C.data = NULL; __pyx_pybuffernd_C.rcbuffer = &__pyx_pybuffer_C; __pyx_pybuffer_pseudo_label.pybuffer.buf = NULL; __pyx_pybuffer_pseudo_label.refcount = 0; __pyx_pybuffernd_pseudo_label.data = NULL; __pyx_pybuffernd_pseudo_label.rcbuffer = &__pyx_pybuffer_pseudo_label; __pyx_pybuffer_predicts.pybuffer.buf = NULL; __pyx_pybuffer_predicts.refcount = 0; __pyx_pybuffernd_predicts.data = NULL; __pyx_pybuffernd_predicts.rcbuffer = &__pyx_pybuffer_predicts; __pyx_pybuffer_labels.pybuffer.buf = NULL; __pyx_pybuffer_labels.refcount = 0; __pyx_pybuffernd_labels.data = NULL; __pyx_pybuffernd_labels.rcbuffer = &__pyx_pybuffer_labels; __pyx_pybuffer_self_cost.pybuffer.buf = NULL; __pyx_pybuffer_self_cost.refcount = 0; __pyx_pybuffernd_self_cost.data = NULL; __pyx_pybuffernd_self_cost.rcbuffer = &__pyx_pybuffer_self_cost; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_predicts.rcbuffer->pybuffer, (PyObject*)__pyx_v_predicts, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 59, __pyx_L1_error) } __pyx_pybuffernd_predicts.diminfo[0].strides = __pyx_pybuffernd_predicts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_predicts.diminfo[0].shape = __pyx_pybuffernd_predicts.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_predicts.diminfo[1].strides = __pyx_pybuffernd_predicts.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_predicts.diminfo[1].shape = __pyx_pybuffernd_predicts.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_labels.rcbuffer->pybuffer, (PyObject*)__pyx_v_labels, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 59, __pyx_L1_error) } __pyx_pybuffernd_labels.diminfo[0].strides = __pyx_pybuffernd_labels.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_labels.diminfo[0].shape = __pyx_pybuffernd_labels.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_labels.diminfo[1].strides = __pyx_pybuffernd_labels.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_labels.diminfo[1].shape = __pyx_pybuffernd_labels.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_self_cost.rcbuffer->pybuffer, (PyObject*)__pyx_v_self_cost, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 59, __pyx_L1_error) } __pyx_pybuffernd_self_cost.diminfo[0].strides = __pyx_pybuffernd_self_cost.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_self_cost.diminfo[0].shape = __pyx_pybuffernd_self_cost.rcbuffer->pybuffer.shape[0]; /* … */ /* function exit code */ __pyx_L1_error:; __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); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_C.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_predicts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_self_cost.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython._get_pseudo_label", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_C.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_predicts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_self_cost.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_C); __Pyx_XDECREF((PyObject *)__pyx_v_pseudo_label); __Pyx_XDECREF(__pyx_v_matched); __Pyx_XDECREF(__pyx_v_linear_sum_assignment); __Pyx_XDECREF(__pyx_v_r_list); __Pyx_XDECREF(__pyx_v_c_list); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__19 = PyTuple_Pack(18, __pyx_n_s_predicts, __pyx_n_s_labels, __pyx_n_s_self_cost, __pyx_n_s_is_manhatan, __pyx_n_s_match_l2, __pyx_n_s_a, __pyx_n_s_i, __pyx_n_s_n, __pyx_n_s_j, __pyx_n_s_t, __pyx_n_s_k, __pyx_n_s_r, __pyx_n_s_C, __pyx_n_s_pseudo_label, __pyx_n_s_matched, __pyx_n_s_linear_sum_assignment, __pyx_n_s_r_list, __pyx_n_s_c_list); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_5_get_pseudo_label, 0, __pyx_n_s_get_pseudo_label, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_pseudo_label, __pyx_t_2) < 0) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 18, 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_utils_cython_pyx, __pyx_n_s_get_pseudo_label, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 59, __pyx_L1_error)
060: np.ndarray[np.float32_t, ndim=1] self_cost, int is_manhatan, int match_l2):
061: cdef np.float32_t a
062: cdef int i, n, j, t, k, r
+063: n = predicts.shape[0]
__pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_predicts)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 63, __pyx_L1_error)
__pyx_v_n = (__pyx_t_1[0]);
+064: k = labels.shape[0]
__pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_labels)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 64, __pyx_L1_error)
__pyx_v_k = (__pyx_t_1[0]);
+065: assert n >= k
#ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(__pyx_assertions_enabled())) { __pyx_t_2 = (__pyx_v_n >= __pyx_v_k); if (unlikely(!__pyx_t_2)) { __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); __PYX_ERR(0, 65, __pyx_L1_error) } } #else if ((1)); else __PYX_ERR(0, 65, __pyx_L1_error) #endif
+066: cdef np.ndarray[np.float32_t, ndim=2] C = np.zeros((n, k), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_k); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 66, __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, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 66, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_7); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_C.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_C = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_C.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 66, __pyx_L1_error) } else {__pyx_pybuffernd_C.diminfo[0].strides = __pyx_pybuffernd_C.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_C.diminfo[0].shape = __pyx_pybuffernd_C.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_C.diminfo[1].strides = __pyx_pybuffernd_C.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_C.diminfo[1].shape = __pyx_pybuffernd_C.rcbuffer->pybuffer.shape[1]; } } __pyx_t_8 = 0; __pyx_v_C = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0;
+067: cdef np.ndarray[np.float32_t, ndim=2] pseudo_label = np.zeros((n, 2), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_2); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 67, __pyx_L1_error) __pyx_t_9 = ((PyArrayObject *)__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_pseudo_label = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 67, __pyx_L1_error) } else {__pyx_pybuffernd_pseudo_label.diminfo[0].strides = __pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pseudo_label.diminfo[0].shape = __pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_pseudo_label.diminfo[1].strides = __pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_pseudo_label.diminfo[1].shape = __pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer.shape[1]; } } __pyx_t_9 = 0; __pyx_v_pseudo_label = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+068: matched = np.zeros(n, dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_matched = __pyx_t_4; __pyx_t_4 = 0;
069:
+070: if match_l2:
__pyx_t_2 = (__pyx_v_match_l2 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+071: for i in range(n):
__pyx_t_10 = __pyx_v_n; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
+072: for j in range(k):
__pyx_t_13 = __pyx_v_k; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_j = __pyx_t_15;
+073: C[i, j] = get_sqr_dis_point(predicts[i, 0] - labels[j, 0], predicts[i, 1] - labels[j, 1]) + self_cost[i]
__pyx_t_16 = __pyx_v_i; __pyx_t_17 = 0; __pyx_t_18 = __pyx_v_j; __pyx_t_19 = 0; __pyx_t_20 = __pyx_v_i; __pyx_t_21 = 1; __pyx_t_22 = __pyx_v_j; __pyx_t_23 = 1; __pyx_t_24 = __pyx_f_12utils_cython_get_sqr_dis_point(((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_predicts.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_predicts.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_predicts.diminfo[1].strides)) - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_labels.diminfo[0].strides, __pyx_t_19, __pyx_pybuffernd_labels.diminfo[1].strides))), ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_predicts.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_predicts.diminfo[0].strides, __pyx_t_21, __pyx_pybuffernd_predicts.diminfo[1].strides)) - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_labels.diminfo[0].strides, __pyx_t_23, __pyx_pybuffernd_labels.diminfo[1].strides)))); if (unlikely(__pyx_t_24 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 73, __pyx_L1_error) __pyx_t_23 = __pyx_v_i; __pyx_t_22 = __pyx_v_i; __pyx_t_21 = __pyx_v_j; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_C.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_C.diminfo[0].strides, __pyx_t_21, __pyx_pybuffernd_C.diminfo[1].strides) = (__pyx_t_24 + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_self_cost.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_self_cost.diminfo[0].strides))); } }
+074: elif is_manhatan:
__pyx_t_2 = (__pyx_v_is_manhatan != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+075: for i in range(n):
__pyx_t_10 = __pyx_v_n; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
+076: for j in range(k):
__pyx_t_13 = __pyx_v_k; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_j = __pyx_t_15;
+077: C[i, j] = fabs(predicts[i, 0] - labels[j, 0]) + fabs(predicts[i, 1] - labels[j, 1]) + self_cost[i]
__pyx_t_23 = __pyx_v_i; __pyx_t_21 = 0; __pyx_t_22 = __pyx_v_j; __pyx_t_20 = 0; __pyx_t_19 = __pyx_v_i; __pyx_t_18 = 1; __pyx_t_17 = __pyx_v_j; __pyx_t_16 = 1; __pyx_t_25 = __pyx_v_i; __pyx_t_26 = __pyx_v_i; __pyx_t_27 = __pyx_v_j; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_C.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_C.diminfo[0].strides, __pyx_t_27, __pyx_pybuffernd_C.diminfo[1].strides) = ((fabs(((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_predicts.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_predicts.diminfo[0].strides, __pyx_t_21, __pyx_pybuffernd_predicts.diminfo[1].strides)) - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_labels.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_labels.diminfo[1].strides)))) + fabs(((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_predicts.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_predicts.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_predicts.diminfo[1].strides)) - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_labels.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_labels.diminfo[1].strides))))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_self_cost.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_self_cost.diminfo[0].strides))); } }
078: else:
+079: for i in range(n):
/*else*/ { __pyx_t_10 = __pyx_v_n; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
+080: for j in range(k):
__pyx_t_13 = __pyx_v_k; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_j = __pyx_t_15;
+081: C[i, j] = get_dis_point(predicts[i, 0] - labels[j, 0], predicts[i, 1] - labels[j, 1]) + self_cost[i]
__pyx_t_25 = __pyx_v_i; __pyx_t_16 = 0; __pyx_t_17 = __pyx_v_j; __pyx_t_18 = 0; __pyx_t_19 = __pyx_v_i; __pyx_t_20 = 1; __pyx_t_22 = __pyx_v_j; __pyx_t_21 = 1; __pyx_t_24 = __pyx_f_12utils_cython_get_dis_point(((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_predicts.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_predicts.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_predicts.diminfo[1].strides)) - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_labels.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_labels.diminfo[1].strides))), ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_predicts.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_predicts.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_predicts.diminfo[1].strides)) - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_labels.diminfo[0].strides, __pyx_t_21, __pyx_pybuffernd_labels.diminfo[1].strides)))); if (unlikely(__pyx_t_24 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 81, __pyx_L1_error) __pyx_t_21 = __pyx_v_i; __pyx_t_22 = __pyx_v_i; __pyx_t_20 = __pyx_v_j; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_C.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_C.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_C.diminfo[1].strides) = (__pyx_t_24 + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_self_cost.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_self_cost.diminfo[0].strides))); } } } __pyx_L3:;
082:
083: # remove out of function
+084: from scipy.optimize import linear_sum_assignment
__pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 84, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_s_linear_sum_assignment); __Pyx_GIVEREF(__pyx_n_s_linear_sum_assignment); PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_linear_sum_assignment); __pyx_t_3 = __Pyx_Import(__pyx_n_s_scipy_optimize, __pyx_t_4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_linear_sum_assignment); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 84, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_4); __pyx_v_linear_sum_assignment = __pyx_t_4; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+085: r_list, c_list = linear_sum_assignment(C)
__Pyx_INCREF(__pyx_v_linear_sum_assignment); __pyx_t_4 = __pyx_v_linear_sum_assignment; __pyx_t_7 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_10 = 1; } } { PyObject *__pyx_callargs[2] = {__pyx_t_7, ((PyObject *)__pyx_v_C)}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; 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, 85, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_28 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); index = 0; __pyx_t_4 = __pyx_t_28(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L16_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_7 = __pyx_t_28(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L16_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_28(__pyx_t_5), 2) < 0) __PYX_ERR(0, 85, __pyx_L1_error) __pyx_t_28 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L17_unpacking_done; __pyx_L16_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_28 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 85, __pyx_L1_error) __pyx_L17_unpacking_done:; } __pyx_v_r_list = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_c_list = __pyx_t_7; __pyx_t_7 = 0;
+086: r_list = r_list.astype(np.int32)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_r_list, __pyx_n_s_astype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_10 = 1; } } { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF_SET(__pyx_v_r_list, __pyx_t_3); __pyx_t_3 = 0;
+087: c_list = c_list.astype(np.int32)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_c_list, __pyx_n_s_astype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_10 = 1; } } { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF_SET(__pyx_v_c_list, __pyx_t_3); __pyx_t_3 = 0;
088:
+089: for i in range(k):
__pyx_t_10 = __pyx_v_k; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
+090: t = c_list[i]
__pyx_t_3 = __Pyx_GetItemInt(__pyx_v_c_list, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_t = __pyx_t_13;
+091: r = r_list[i]
__pyx_t_3 = __Pyx_GetItemInt(__pyx_v_r_list, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_r = __pyx_t_13;
+092: matched[r] = 1
if (unlikely((__Pyx_SetItemInt(__pyx_v_matched, __pyx_v_r, __pyx_int_1, int, 1, __Pyx_PyInt_From_int, 0, 0, 0) < 0))) __PYX_ERR(0, 92, __pyx_L1_error)
+093: pseudo_label[r, 0] = labels[t, 0]
__pyx_t_21 = __pyx_v_t; __pyx_t_20 = 0; __pyx_t_22 = __pyx_v_r; __pyx_t_19 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_pseudo_label.diminfo[0].strides, __pyx_t_19, __pyx_pybuffernd_pseudo_label.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_labels.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_labels.diminfo[1].strides));
+094: pseudo_label[r, 1] = labels[t, 1]
__pyx_t_20 = __pyx_v_t; __pyx_t_21 = 1; __pyx_t_19 = __pyx_v_r; __pyx_t_22 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_pseudo_label.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_pseudo_label.diminfo[0].strides, __pyx_t_22, __pyx_pybuffernd_pseudo_label.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_labels.diminfo[0].strides, __pyx_t_21, __pyx_pybuffernd_labels.diminfo[1].strides)); }
095:
+096: return pseudo_label, C[r_list, c_list].sum(), matched
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_r_list); __Pyx_GIVEREF(__pyx_v_r_list); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_r_list); __Pyx_INCREF(__pyx_v_c_list); __Pyx_GIVEREF(__pyx_v_c_list); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_c_list); __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_C), __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_10 = 1; } } { PyObject *__pyx_callargs[1] = {__pyx_t_4, }; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF((PyObject *)__pyx_v_pseudo_label); __Pyx_GIVEREF((PyObject *)__pyx_v_pseudo_label); PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_pseudo_label)); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3); __Pyx_INCREF(__pyx_v_matched); __Pyx_GIVEREF(__pyx_v_matched); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_matched); __pyx_t_3 = 0; __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
097:
+098: def get_pseudo_label(predicts, labels, self_cost, kwargs):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_7get_pseudo_label(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_7get_pseudo_label = {"get_pseudo_label", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_7get_pseudo_label, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_7get_pseudo_label(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_predicts = 0; PyObject *__pyx_v_labels = 0; PyObject *__pyx_v_self_cost = 0; PyObject *__pyx_v_kwargs = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_pseudo_label (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_predicts,&__pyx_n_s_labels,&__pyx_n_s_self_cost,&__pyx_n_s_kwargs,0}; PyObject* values[4] = {0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_predicts)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_labels)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_pseudo_label", 1, 4, 4, 1); __PYX_ERR(0, 98, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self_cost)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_pseudo_label", 1, 4, 4, 2); __PYX_ERR(0, 98, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_pseudo_label", 1, 4, 4, 3); __PYX_ERR(0, 98, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_pseudo_label") < 0)) __PYX_ERR(0, 98, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 4)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); } __pyx_v_predicts = values[0]; __pyx_v_labels = values[1]; __pyx_v_self_cost = values[2]; __pyx_v_kwargs = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get_pseudo_label", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 98, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython.get_pseudo_label", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_12utils_cython_6get_pseudo_label(__pyx_self, __pyx_v_predicts, __pyx_v_labels, __pyx_v_self_cost, __pyx_v_kwargs); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_6get_pseudo_label(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_predicts, PyObject *__pyx_v_labels, PyObject *__pyx_v_self_cost, PyObject *__pyx_v_kwargs) { PyObject *__pyx_v_is_manhatan = NULL; PyObject *__pyx_v_match_l2 = NULL; PyObject *__pyx_v_pseudo_label = NULL; PyObject *__pyx_v_cost = NULL; PyObject *__pyx_v_matched = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_pseudo_label", 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_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("utils_cython.get_pseudo_label", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_is_manhatan); __Pyx_XDECREF(__pyx_v_match_l2); __Pyx_XDECREF(__pyx_v_pseudo_label); __Pyx_XDECREF(__pyx_v_cost); __Pyx_XDECREF(__pyx_v_matched); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__21 = PyTuple_Pack(9, __pyx_n_s_predicts, __pyx_n_s_labels, __pyx_n_s_self_cost, __pyx_n_s_kwargs, __pyx_n_s_is_manhatan, __pyx_n_s_match_l2, __pyx_n_s_pseudo_label, __pyx_n_s_cost, __pyx_n_s_matched); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_7get_pseudo_label, 0, __pyx_n_s_get_pseudo_label_2, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_pseudo_label_2, __pyx_t_2) < 0) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 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_utils_cython_pyx, __pyx_n_s_get_pseudo_label_2, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 98, __pyx_L1_error)
+099: is_manhatan = kwargs.get('is_manhatan', False)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_kwargs, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_is_manhatan = __pyx_t_2; __pyx_t_2 = 0; /* … */ __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_u_is_manhatan, Py_False); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7);
+100: match_l2 = kwargs.get('match_l2', False)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_kwargs, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_match_l2 = __pyx_t_1; __pyx_t_1 = 0; /* … */ __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_u_match_l2, Py_False); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8);
+101: pseudo_label, cost, matched = _get_pseudo_label(predicts, labels, self_cost, is_manhatan, match_l2)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_pseudo_label); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } { PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_v_predicts, __pyx_v_labels, __pyx_v_self_cost, __pyx_v_is_manhatan, __pyx_v_match_l2}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 101, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 101, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 101, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_pseudo_label = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_cost = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_matched = __pyx_t_5; __pyx_t_5 = 0;
+102: pseudo_label = pseudo_label[np.nonzero(matched)[0]]
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_matched}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 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_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_pseudo_label, __pyx_t_3); 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_DECREF_SET(__pyx_v_pseudo_label, __pyx_t_1); __pyx_t_1 = 0;
+103: return pseudo_label, cost, matched
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_pseudo_label); __Pyx_GIVEREF(__pyx_v_pseudo_label); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pseudo_label); __Pyx_INCREF(__pyx_v_cost); __Pyx_GIVEREF(__pyx_v_cost); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_cost); __Pyx_INCREF(__pyx_v_matched); __Pyx_GIVEREF(__pyx_v_matched); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_matched); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
104:
+105: def get_rotate_lane_matrix(lane_matrix, x, y, angle):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_9get_rotate_lane_matrix(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_9get_rotate_lane_matrix = {"get_rotate_lane_matrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_9get_rotate_lane_matrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_9get_rotate_lane_matrix(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_lane_matrix = 0; PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; PyObject *__pyx_v_angle = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_rotate_lane_matrix (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lane_matrix,&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_angle,0}; PyObject* values[4] = {0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lane_matrix)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_rotate_lane_matrix", 1, 4, 4, 1); __PYX_ERR(0, 105, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_rotate_lane_matrix", 1, 4, 4, 2); __PYX_ERR(0, 105, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_rotate_lane_matrix", 1, 4, 4, 3); __PYX_ERR(0, 105, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_rotate_lane_matrix") < 0)) __PYX_ERR(0, 105, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 4)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); } __pyx_v_lane_matrix = values[0]; __pyx_v_x = values[1]; __pyx_v_y = values[2]; __pyx_v_angle = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get_rotate_lane_matrix", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 105, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython.get_rotate_lane_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_12utils_cython_8get_rotate_lane_matrix(__pyx_self, __pyx_v_lane_matrix, __pyx_v_x, __pyx_v_y, __pyx_v_angle); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_8get_rotate_lane_matrix(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lane_matrix, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_angle) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_rotate_lane_matrix", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("utils_cython.get_rotate_lane_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__23 = PyTuple_Pack(4, __pyx_n_s_lane_matrix, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_angle); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_9get_rotate_lane_matrix, 0, __pyx_n_s_get_rotate_lane_matrix_2, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_rotate_lane_matrix_2, __pyx_t_2) < 0) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 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_utils_cython_pyx, __pyx_n_s_get_rotate_lane_matrix_2, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 105, __pyx_L1_error)
+106: return _get_rotate_lane_matrix(lane_matrix, x, y, angle)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_rotate_lane_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } { PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_v_lane_matrix, __pyx_v_x, __pyx_v_y, __pyx_v_angle}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
107:
+108: def _get_rotate_lane_matrix(np.ndarray[np.float32_t, ndim=2] lane_matrix, np.float32_t x, np.float32_t y, np.float32_t angle):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_11_get_rotate_lane_matrix(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_11_get_rotate_lane_matrix = {"_get_rotate_lane_matrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_11_get_rotate_lane_matrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_11_get_rotate_lane_matrix(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyArrayObject *__pyx_v_lane_matrix = 0; __pyx_t_5numpy_float32_t __pyx_v_x; __pyx_t_5numpy_float32_t __pyx_v_y; __pyx_t_5numpy_float32_t __pyx_v_angle; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_rotate_lane_matrix (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lane_matrix,&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_angle,0}; PyObject* values[4] = {0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lane_matrix)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_rotate_lane_matrix", 1, 4, 4, 1); __PYX_ERR(0, 108, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_rotate_lane_matrix", 1, 4, 4, 2); __PYX_ERR(0, 108, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_rotate_lane_matrix", 1, 4, 4, 3); __PYX_ERR(0, 108, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_get_rotate_lane_matrix") < 0)) __PYX_ERR(0, 108, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 4)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); } __pyx_v_lane_matrix = ((PyArrayObject *)values[0]); __pyx_v_x = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_x == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) __pyx_v_y = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_y == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) __pyx_v_angle = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_angle == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_get_rotate_lane_matrix", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 108, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython._get_rotate_lane_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lane_matrix), __pyx_ptype_5numpy_ndarray, 1, "lane_matrix", 0))) __PYX_ERR(0, 108, __pyx_L1_error) __pyx_r = __pyx_pf_12utils_cython_10_get_rotate_lane_matrix(__pyx_self, __pyx_v_lane_matrix, __pyx_v_x, __pyx_v_y, __pyx_v_angle); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_10_get_rotate_lane_matrix(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_lane_matrix, __pyx_t_5numpy_float32_t __pyx_v_x, __pyx_t_5numpy_float32_t __pyx_v_y, __pyx_t_5numpy_float32_t __pyx_v_angle) { __pyx_t_5numpy_float32_t __pyx_v_sin_; __pyx_t_5numpy_float32_t __pyx_v_cos_; __pyx_t_5numpy_float32_t __pyx_v_dx; __pyx_t_5numpy_float32_t __pyx_v_dy; int __pyx_v_i; int __pyx_v_n; PyArrayObject *__pyx_v_res = 0; int __pyx_v_r; __Pyx_LocalBuf_ND __pyx_pybuffernd_lane_matrix; __Pyx_Buffer __pyx_pybuffer_lane_matrix; __Pyx_LocalBuf_ND __pyx_pybuffernd_res; __Pyx_Buffer __pyx_pybuffer_res; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_rotate_lane_matrix", 0); __pyx_pybuffer_res.pybuffer.buf = NULL; __pyx_pybuffer_res.refcount = 0; __pyx_pybuffernd_res.data = NULL; __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res; __pyx_pybuffer_lane_matrix.pybuffer.buf = NULL; __pyx_pybuffer_lane_matrix.refcount = 0; __pyx_pybuffernd_lane_matrix.data = NULL; __pyx_pybuffernd_lane_matrix.rcbuffer = &__pyx_pybuffer_lane_matrix; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer, (PyObject*)__pyx_v_lane_matrix, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 108, __pyx_L1_error) } __pyx_pybuffernd_lane_matrix.diminfo[0].strides = __pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lane_matrix.diminfo[0].shape = __pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_lane_matrix.diminfo[1].strides = __pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_lane_matrix.diminfo[1].shape = __pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer.shape[1]; /* … */ /* function exit code */ __pyx_L1_error:; __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); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython._get_rotate_lane_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_res); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__25 = PyTuple_Pack(12, __pyx_n_s_lane_matrix, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_angle, __pyx_n_s_sin, __pyx_n_s_cos, __pyx_n_s_dx, __pyx_n_s_dy, __pyx_n_s_i, __pyx_n_s_n, __pyx_n_s_res, __pyx_n_s_r); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_11_get_rotate_lane_matrix, 0, __pyx_n_s_get_rotate_lane_matrix, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_rotate_lane_matrix, __pyx_t_2) < 0) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 12, 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_utils_cython_pyx, __pyx_n_s_get_rotate_lane_matrix, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 108, __pyx_L1_error)
109: cdef np.float32_t sin_, cos_, dx, dy
110: cdef int i, n
+111: cos_ = cos(angle)
__pyx_v_cos_ = cos(__pyx_v_angle);
+112: sin_ = sin(angle)
__pyx_v_sin_ = sin(__pyx_v_angle);
+113: n = lane_matrix.shape[0]
__pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_lane_matrix)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 113, __pyx_L1_error)
__pyx_v_n = (__pyx_t_1[0]);
+114: cdef np.ndarray[np.float32_t, ndim=2] res = np.zeros((n, 20), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __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, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_20); __Pyx_GIVEREF(__pyx_int_20); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_20); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 114, __pyx_L1_error) __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_res = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_res.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 114, __pyx_L1_error) } else {__pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_res.diminfo[1].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_res.diminfo[1].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[1]; } } __pyx_t_7 = 0; __pyx_v_res = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
+115: for r in range(n):
__pyx_t_8 = __pyx_v_n; __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_r = __pyx_t_10;
+116: for i in range(10):
for (__pyx_t_11 = 0; __pyx_t_11 < 10; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11;
+117: dx = lane_matrix[r, i * 2] - x
__pyx_t_12 = __pyx_v_r; __pyx_t_13 = (__pyx_v_i * 2); __pyx_v_dx = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_lane_matrix.diminfo[0].strides, __pyx_t_13, __pyx_pybuffernd_lane_matrix.diminfo[1].strides)) - __pyx_v_x);
+118: dy = lane_matrix[r, i * 2 + 1] - y
__pyx_t_13 = __pyx_v_r; __pyx_t_12 = ((__pyx_v_i * 2) + 1); __pyx_v_dy = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_lane_matrix.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_lane_matrix.diminfo[0].strides, __pyx_t_12, __pyx_pybuffernd_lane_matrix.diminfo[1].strides)) - __pyx_v_y);
+119: res[r, i * 2] = dx * cos_ - dy * sin_
__pyx_t_12 = __pyx_v_r; __pyx_t_13 = (__pyx_v_i * 2); *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_res.diminfo[0].strides, __pyx_t_13, __pyx_pybuffernd_res.diminfo[1].strides) = ((__pyx_v_dx * __pyx_v_cos_) - (__pyx_v_dy * __pyx_v_sin_));
+120: res[r, i * 2 + 1] = dx * sin_ + dy * cos_
__pyx_t_13 = __pyx_v_r; __pyx_t_12 = ((__pyx_v_i * 2) + 1); *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_res.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_res.diminfo[0].strides, __pyx_t_12, __pyx_pybuffernd_res.diminfo[1].strides) = ((__pyx_v_dx * __pyx_v_sin_) + (__pyx_v_dy * __pyx_v_cos_)); } }
+121: return res
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_res); __pyx_r = ((PyObject *)__pyx_v_res); goto __pyx_L0;
122:
+123: cdef np.float32_t get_rand(np.float32_t l, np.float32_t r):
static __pyx_t_5numpy_float32_t __pyx_f_12utils_cython_get_rand(__pyx_t_5numpy_float32_t __pyx_v_l, __pyx_t_5numpy_float32_t __pyx_v_r) { __pyx_t_5numpy_float32_t __pyx_v_t; __pyx_t_5numpy_float32_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_rand", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("utils_cython.get_rand", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+124: cdef np.float32_t t = rand()
__pyx_v_t = rand();
+125: return l + t / RAND_MAX * (r - l)
if (unlikely(RAND_MAX == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 125, __pyx_L1_error) } __pyx_r = (__pyx_v_l + ((__pyx_v_t / ((__pyx_t_5numpy_float32_t)RAND_MAX)) * (__pyx_v_r - __pyx_v_l))); goto __pyx_L0;
126:
+127: cdef int get_rand_int(int l, int r):
static int __pyx_f_12utils_cython_get_rand_int(int __pyx_v_l, int __pyx_v_r) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_rand_int", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("utils_cython.get_rand_int", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+128: return l + rand() % (r - l + 1)
__pyx_t_1 = rand(); __pyx_t_2 = ((__pyx_v_r - __pyx_v_l) + 1); if (unlikely(__pyx_t_2 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 128, __pyx_L1_error) } __pyx_r = (__pyx_v_l + __Pyx_mod_long(__pyx_t_1, __pyx_t_2)); goto __pyx_L0;
129:
+130: cdef np.float32_t get_value(np.ndarray[np.float32_t, ndim=2] goals_2D, np.ndarray[np.float32_t, ndim=1] scores,
static __pyx_t_5numpy_float32_t __pyx_f_12utils_cython_get_value(PyArrayObject *__pyx_v_goals_2D, PyArrayObject *__pyx_v_scores, PyArrayObject *__pyx_v_selected_points, int __pyx_v_n, CYTHON_UNUSED PyObject *__pyx_v_objective, int __pyx_v_cnt_sample, __pyx_t_5numpy_float32_t __pyx_v_MRratio, CYTHON_UNUSED PyObject *__pyx_v_kwargs) { __pyx_t_5numpy_float32_t __pyx_v_value; __pyx_t_5numpy_float32_t __pyx_v_x; __pyx_t_5numpy_float32_t __pyx_v_y; __pyx_t_5numpy_float32_t __pyx_v_sum; __pyx_t_5numpy_float32_t __pyx_v_minFDE; __pyx_t_5numpy_float32_t __pyx_v_t_float; __pyx_t_5numpy_float32_t __pyx_v_miss_error; __pyx_t_5numpy_float32_t __pyx_v_stride; __pyx_t_5numpy_float32_t __pyx_v_s_x; __pyx_t_5numpy_float32_t __pyx_v_s_y; int __pyx_v_i; int __pyx_v_j; int __pyx_v_cnt; int __pyx_v_t_int; int __pyx_v_cnt_len; int __pyx_v_a; int __pyx_v_b; PyArrayObject *__pyx_v_point = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_goals_2D; __Pyx_Buffer __pyx_pybuffer_goals_2D; __Pyx_LocalBuf_ND __pyx_pybuffernd_point; __Pyx_Buffer __pyx_pybuffer_point; __Pyx_LocalBuf_ND __pyx_pybuffernd_scores; __Pyx_Buffer __pyx_pybuffer_scores; __Pyx_LocalBuf_ND __pyx_pybuffernd_selected_points; __Pyx_Buffer __pyx_pybuffer_selected_points; __pyx_t_5numpy_float32_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_value", 0); __pyx_pybuffer_point.pybuffer.buf = NULL; __pyx_pybuffer_point.refcount = 0; __pyx_pybuffernd_point.data = NULL; __pyx_pybuffernd_point.rcbuffer = &__pyx_pybuffer_point; __pyx_pybuffer_goals_2D.pybuffer.buf = NULL; __pyx_pybuffer_goals_2D.refcount = 0; __pyx_pybuffernd_goals_2D.data = NULL; __pyx_pybuffernd_goals_2D.rcbuffer = &__pyx_pybuffer_goals_2D; __pyx_pybuffer_scores.pybuffer.buf = NULL; __pyx_pybuffer_scores.refcount = 0; __pyx_pybuffernd_scores.data = NULL; __pyx_pybuffernd_scores.rcbuffer = &__pyx_pybuffer_scores; __pyx_pybuffer_selected_points.pybuffer.buf = NULL; __pyx_pybuffer_selected_points.refcount = 0; __pyx_pybuffernd_selected_points.data = NULL; __pyx_pybuffernd_selected_points.rcbuffer = &__pyx_pybuffer_selected_points; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer, (PyObject*)__pyx_v_goals_2D, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 130, __pyx_L1_error) } __pyx_pybuffernd_goals_2D.diminfo[0].strides = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_goals_2D.diminfo[0].shape = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_goals_2D.diminfo[1].strides = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_goals_2D.diminfo[1].shape = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_scores.rcbuffer->pybuffer, (PyObject*)__pyx_v_scores, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 130, __pyx_L1_error) } __pyx_pybuffernd_scores.diminfo[0].strides = __pyx_pybuffernd_scores.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_scores.diminfo[0].shape = __pyx_pybuffernd_scores.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer, (PyObject*)__pyx_v_selected_points, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 130, __pyx_L1_error) } __pyx_pybuffernd_selected_points.diminfo[0].strides = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_selected_points.diminfo[0].shape = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_selected_points.diminfo[1].strides = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_selected_points.diminfo[1].shape = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.shape[1]; /* … */ /* 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); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_scores.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython.get_value", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_scores.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_point); __Pyx_RefNannyFinishContext(); return __pyx_r; }
131: np.ndarray[np.float32_t, ndim=2] selected_points, int n, objective, int cnt_sample, np.float32_t MRratio,
132: kwargs):
+133: cdef np.float32_t value = 0.0, cnt_hit, x, y, sum, minFDE, t_float, miss_error, stride, s_x, s_y
__pyx_v_value = 0.0;
+134: cdef int i, j, k, need, cnt, t_int, objective_int, cnt_len = 0, a, b
__pyx_v_cnt_len = 0;
+135: cdef np.ndarray[np.float32_t, ndim=1] point = np.zeros(2, dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __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, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 135, __pyx_L1_error) __pyx_t_5 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_point.rcbuffer->pybuffer, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_point = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_point.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 135, __pyx_L1_error) } else {__pyx_pybuffernd_point.diminfo[0].strides = __pyx_pybuffernd_point.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_point.diminfo[0].shape = __pyx_pybuffernd_point.rcbuffer->pybuffer.shape[0]; } } __pyx_t_5 = 0; __pyx_v_point = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_int_2); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9);
136:
+137: for i in range(100):
for (__pyx_t_6 = 0; __pyx_t_6 < 0x64; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6;
+138: if i * i == cnt_sample:
__pyx_t_7 = ((__pyx_v_i * __pyx_v_i) == __pyx_v_cnt_sample); if (__pyx_t_7) { /* … */ } }
+139: cnt_len = i
__pyx_v_cnt_len = __pyx_v_i;
+140: if cnt_len == 0:
__pyx_t_7 = (__pyx_v_cnt_len == 0); if (__pyx_t_7) { /* … */ }
+141: assert False, 'cnt_sample != square'
#ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(__pyx_assertions_enabled())) { if (unlikely(!0)) { __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_kp_u_cnt_sample_square, 0, 0); __PYX_ERR(0, 141, __pyx_L1_error) } } #else if ((1)); else __PYX_ERR(0, 141, __pyx_L1_error) #endif
142:
+143: for i in range(n):
__pyx_t_6 = __pyx_v_n; __pyx_t_8 = __pyx_t_6; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_i = __pyx_t_9;
+144: point[0], point[1] = goals_2D[i, 0], goals_2D[i, 1]
__pyx_t_10 = __pyx_v_i; __pyx_t_11 = 0; __pyx_t_12 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_11, __pyx_pybuffernd_goals_2D.diminfo[1].strides)); __pyx_t_11 = __pyx_v_i; __pyx_t_10 = 1; __pyx_t_13 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_10, __pyx_pybuffernd_goals_2D.diminfo[1].strides)); __pyx_t_10 = 0; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_point.diminfo[0].strides) = __pyx_t_12; __pyx_t_10 = 1; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_point.diminfo[0].strides) = __pyx_t_13;
+145: sum = 0.0
__pyx_v_sum = 0.0;
+146: t_int = int(scores[i] * 1000)
__pyx_t_10 = __pyx_v_i; __pyx_v_t_int = ((int)((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_scores.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_scores.diminfo[0].strides)) * 1000.0));
147:
+148: if t_int > 10:
__pyx_t_7 = (__pyx_v_t_int > 10); if (__pyx_t_7) { /* … */ goto __pyx_L9; }
+149: cnt = cnt_len * 3
__pyx_v_cnt = (__pyx_v_cnt_len * 3);
+150: elif t_int > 5:
__pyx_t_7 = (__pyx_v_t_int > 5); if (__pyx_t_7) { /* … */ goto __pyx_L9; }
+151: cnt = cnt_len * 2
__pyx_v_cnt = (__pyx_v_cnt_len * 2);
152: else:
+153: cnt = cnt_len
/*else*/ { __pyx_v_cnt = __pyx_v_cnt_len; } __pyx_L9:;
154:
+155: t_float = cnt
__pyx_v_t_float = __pyx_v_cnt;
+156: stride = 1.0 / t_float
if (unlikely(__pyx_v_t_float == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 156, __pyx_L1_error) } __pyx_v_stride = (1.0 / ((double)__pyx_v_t_float));
157:
+158: s_x = point[0] - 0.5 + stride / 2.0
__pyx_t_10 = 0; __pyx_v_s_x = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_point.diminfo[0].strides)) - 0.5) + (((double)__pyx_v_stride) / 2.0));
+159: s_y = point[1] - 0.5 + stride / 2.0
__pyx_t_10 = 1; __pyx_v_s_y = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_point.diminfo[0].strides)) - 0.5) + (((double)__pyx_v_stride) / 2.0));
160:
+161: for a in range(cnt):
__pyx_t_14 = __pyx_v_cnt; __pyx_t_15 = __pyx_t_14; for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) { __pyx_v_a = __pyx_t_16;
+162: for b in range(cnt):
__pyx_t_17 = __pyx_v_cnt; __pyx_t_18 = __pyx_t_17; for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) { __pyx_v_b = __pyx_t_19;
163: # x = get_rand(point[0] - 0.5, point[0] + 0.5)
164: # y = get_rand(point[1] - 0.5, point[1] + 0.5)
+165: x = s_x + a * stride
__pyx_v_x = (__pyx_v_s_x + (__pyx_v_a * __pyx_v_stride));
+166: y = s_y + b * stride
__pyx_v_y = (__pyx_v_s_y + (__pyx_v_b * __pyx_v_stride));
+167: minFDE = 10000.0
__pyx_v_minFDE = 10000.0;
+168: miss_error = 10.0
__pyx_v_miss_error = 10.0;
+169: for j in range(6):
for (__pyx_t_20 = 0; __pyx_t_20 < 6; __pyx_t_20+=1) { __pyx_v_j = __pyx_t_20;
+170: t_float = get_dis_point(x - selected_points[j, 0], y - selected_points[j, 1])
__pyx_t_10 = __pyx_v_j; __pyx_t_11 = 0; __pyx_t_21 = __pyx_v_j; __pyx_t_22 = 1; __pyx_t_13 = __pyx_f_12utils_cython_get_dis_point((__pyx_v_x - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_selected_points.diminfo[0].strides, __pyx_t_11, __pyx_pybuffernd_selected_points.diminfo[1].strides))), (__pyx_v_y - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_selected_points.diminfo[0].strides, __pyx_t_22, __pyx_pybuffernd_selected_points.diminfo[1].strides)))); if (unlikely(__pyx_t_13 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 170, __pyx_L1_error) __pyx_v_t_float = __pyx_t_13;
+171: if t_float < minFDE:
__pyx_t_7 = (__pyx_v_t_float < __pyx_v_minFDE); if (__pyx_t_7) { /* … */ } }
+172: minFDE = t_float
__pyx_v_minFDE = __pyx_v_t_float;
+173: if minFDE <= 2.0:
__pyx_t_7 = (__pyx_v_minFDE <= 2.0); if (__pyx_t_7) { /* … */ }
+174: miss_error = 0.0
__pyx_v_miss_error = 0.0;
+175: sum += minFDE * (1.0 - MRratio) + miss_error * MRratio
__pyx_v_sum = (__pyx_v_sum + ((__pyx_v_minFDE * (1.0 - __pyx_v_MRratio)) + (__pyx_v_miss_error * __pyx_v_MRratio))); } }
+176: sum /= cnt * cnt
__pyx_t_14 = (__pyx_v_cnt * __pyx_v_cnt); if (unlikely(__pyx_t_14 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 176, __pyx_L1_error) } __pyx_v_sum = (__pyx_v_sum / __pyx_t_14);
+177: value += scores[i] * sum
__pyx_t_22 = __pyx_v_i; __pyx_v_value = (__pyx_v_value + ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_scores.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_scores.diminfo[0].strides)) * __pyx_v_sum)); }
178:
+179: return value
__pyx_r = __pyx_v_value; goto __pyx_L0;
180:
+181: args = None
if (PyDict_SetItem(__pyx_d, __pyx_n_s_args, Py_None) < 0) __PYX_ERR(0, 181, __pyx_L1_error)
182:
+183: def _get_optimal_targets(np.ndarray[np.float32_t, ndim=2] goals_2D, np.ndarray[np.float32_t, ndim=1] scores,
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_13_get_optimal_targets(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_13_get_optimal_targets = {"_get_optimal_targets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_13_get_optimal_targets, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_13_get_optimal_targets(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyArrayObject *__pyx_v_goals_2D = 0; PyArrayObject *__pyx_v_scores = 0; CYTHON_UNUSED PyObject *__pyx_v_file_name = 0; PyObject *__pyx_v_objective = 0; int __pyx_v_num_step; int __pyx_v_cnt_sample; PyObject *__pyx_v_MRratio = 0; float __pyx_v_opti_time; PyObject *__pyx_v_kwargs = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_optimal_targets (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_goals_2D,&__pyx_n_s_scores,&__pyx_n_s_file_name,&__pyx_n_s_objective,&__pyx_n_s_num_step,&__pyx_n_s_cnt_sample,&__pyx_n_s_MRratio,&__pyx_n_s_opti_time,&__pyx_n_s_kwargs,0}; PyObject* values[9] = {0,0,0,0,0,0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 9: values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8); CYTHON_FALLTHROUGH; case 8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7); CYTHON_FALLTHROUGH; case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_goals_2D)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scores)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, 1); __PYX_ERR(0, 183, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_name)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, 2); __PYX_ERR(0, 183, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_objective)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, 3); __PYX_ERR(0, 183, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_num_step)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, 4); __PYX_ERR(0, 183, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cnt_sample)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, 5); __PYX_ERR(0, 183, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_MRratio)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, 6); __PYX_ERR(0, 183, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 7: if (likely((values[7] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_opti_time)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, 7); __PYX_ERR(0, 183, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 8: if (likely((values[8] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, 8); __PYX_ERR(0, 183, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_get_optimal_targets") < 0)) __PYX_ERR(0, 183, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 9)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7); values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8); } __pyx_v_goals_2D = ((PyArrayObject *)values[0]); __pyx_v_scores = ((PyArrayObject *)values[1]); __pyx_v_file_name = values[2]; __pyx_v_objective = values[3]; __pyx_v_num_step = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_num_step == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L3_error) __pyx_v_cnt_sample = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_cnt_sample == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L3_error) __pyx_v_MRratio = values[6]; __pyx_v_opti_time = __pyx_PyFloat_AsFloat(values[7]); if (unlikely((__pyx_v_opti_time == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L3_error) __pyx_v_kwargs = values[8]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_get_optimal_targets", 1, 9, 9, __pyx_nargs); __PYX_ERR(0, 183, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython._get_optimal_targets", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_goals_2D), __pyx_ptype_5numpy_ndarray, 1, "goals_2D", 0))) __PYX_ERR(0, 183, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scores), __pyx_ptype_5numpy_ndarray, 1, "scores", 0))) __PYX_ERR(0, 183, __pyx_L1_error) __pyx_r = __pyx_pf_12utils_cython_12_get_optimal_targets(__pyx_self, __pyx_v_goals_2D, __pyx_v_scores, __pyx_v_file_name, __pyx_v_objective, __pyx_v_num_step, __pyx_v_cnt_sample, __pyx_v_MRratio, __pyx_v_opti_time, __pyx_v_kwargs); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_12_get_optimal_targets(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_goals_2D, PyArrayObject *__pyx_v_scores, CYTHON_UNUSED PyObject *__pyx_v_file_name, PyObject *__pyx_v_objective, int __pyx_v_num_step, int __pyx_v_cnt_sample, PyObject *__pyx_v_MRratio, float __pyx_v_opti_time, PyObject *__pyx_v_kwargs) { __pyx_t_5numpy_float32_t __pyx_v_t; __pyx_t_5numpy_float32_t __pyx_v_threshold; __pyx_t_5numpy_float32_t __pyx_v_expectation; __pyx_t_5numpy_float32_t __pyx_v_nxt_expectation; __pyx_t_5numpy_float32_t __pyx_v_lr; __pyx_t_5numpy_float32_t __pyx_v_ratio; __pyx_t_5numpy_float32_t __pyx_v_fire_prob; __pyx_t_5numpy_float32_t __pyx_v_min_expectation; int __pyx_v_i; int __pyx_v_j; int __pyx_v_n; int __pyx_v_m; int __pyx_v_t_int; int __pyx_v_step; int __pyx_v_op; int __pyx_v_ok; int __pyx_v_go; PyArrayObject *__pyx_v_ans_points = 0; PyArrayObject *__pyx_v_nxt_points = 0; PyArrayObject *__pyx_v_pred_probs = 0; float __pyx_v_best_expectation; PyArrayObject *__pyx_v_best_points = 0; float __pyx_v_start_time; long __pyx_v_argmin; long __pyx_v_k; __Pyx_LocalBuf_ND __pyx_pybuffernd_ans_points; __Pyx_Buffer __pyx_pybuffer_ans_points; __Pyx_LocalBuf_ND __pyx_pybuffernd_best_points; __Pyx_Buffer __pyx_pybuffer_best_points; __Pyx_LocalBuf_ND __pyx_pybuffernd_goals_2D; __Pyx_Buffer __pyx_pybuffer_goals_2D; __Pyx_LocalBuf_ND __pyx_pybuffernd_nxt_points; __Pyx_Buffer __pyx_pybuffer_nxt_points; __Pyx_LocalBuf_ND __pyx_pybuffernd_pred_probs; __Pyx_Buffer __pyx_pybuffer_pred_probs; __Pyx_LocalBuf_ND __pyx_pybuffernd_scores; __Pyx_Buffer __pyx_pybuffer_scores; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_optimal_targets", 0); __pyx_pybuffer_ans_points.pybuffer.buf = NULL; __pyx_pybuffer_ans_points.refcount = 0; __pyx_pybuffernd_ans_points.data = NULL; __pyx_pybuffernd_ans_points.rcbuffer = &__pyx_pybuffer_ans_points; __pyx_pybuffer_nxt_points.pybuffer.buf = NULL; __pyx_pybuffer_nxt_points.refcount = 0; __pyx_pybuffernd_nxt_points.data = NULL; __pyx_pybuffernd_nxt_points.rcbuffer = &__pyx_pybuffer_nxt_points; __pyx_pybuffer_pred_probs.pybuffer.buf = NULL; __pyx_pybuffer_pred_probs.refcount = 0; __pyx_pybuffernd_pred_probs.data = NULL; __pyx_pybuffernd_pred_probs.rcbuffer = &__pyx_pybuffer_pred_probs; __pyx_pybuffer_best_points.pybuffer.buf = NULL; __pyx_pybuffer_best_points.refcount = 0; __pyx_pybuffernd_best_points.data = NULL; __pyx_pybuffernd_best_points.rcbuffer = &__pyx_pybuffer_best_points; __pyx_pybuffer_goals_2D.pybuffer.buf = NULL; __pyx_pybuffer_goals_2D.refcount = 0; __pyx_pybuffernd_goals_2D.data = NULL; __pyx_pybuffernd_goals_2D.rcbuffer = &__pyx_pybuffer_goals_2D; __pyx_pybuffer_scores.pybuffer.buf = NULL; __pyx_pybuffer_scores.refcount = 0; __pyx_pybuffernd_scores.data = NULL; __pyx_pybuffernd_scores.rcbuffer = &__pyx_pybuffer_scores; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer, (PyObject*)__pyx_v_goals_2D, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 183, __pyx_L1_error) } __pyx_pybuffernd_goals_2D.diminfo[0].strides = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_goals_2D.diminfo[0].shape = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_goals_2D.diminfo[1].strides = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_goals_2D.diminfo[1].shape = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_scores.rcbuffer->pybuffer, (PyObject*)__pyx_v_scores, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 183, __pyx_L1_error) } __pyx_pybuffernd_scores.diminfo[0].strides = __pyx_pybuffernd_scores.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_scores.diminfo[0].shape = __pyx_pybuffernd_scores.rcbuffer->pybuffer.shape[0]; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ans_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_best_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_nxt_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pred_probs.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_scores.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython._get_optimal_targets", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ans_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_best_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_nxt_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pred_probs.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_scores.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_ans_points); __Pyx_XDECREF((PyObject *)__pyx_v_nxt_points); __Pyx_XDECREF((PyObject *)__pyx_v_pred_probs); __Pyx_XDECREF((PyObject *)__pyx_v_best_points); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__27 = PyTuple_Pack(34, __pyx_n_s_goals_2D, __pyx_n_s_scores, __pyx_n_s_file_name, __pyx_n_s_objective, __pyx_n_s_num_step, __pyx_n_s_cnt_sample, __pyx_n_s_MRratio, __pyx_n_s_opti_time, __pyx_n_s_kwargs, __pyx_n_s_t, __pyx_n_s_threshold, __pyx_n_s_expectation, __pyx_n_s_nxt_expectation, __pyx_n_s_lr, __pyx_n_s_ratio, __pyx_n_s_fire_prob, __pyx_n_s_min_expectation, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_n, __pyx_n_s_m, __pyx_n_s_t_int, __pyx_n_s_step, __pyx_n_s_op, __pyx_n_s_ok, __pyx_n_s_go, __pyx_n_s_ans_points, __pyx_n_s_nxt_points, __pyx_n_s_pred_probs, __pyx_n_s_best_expectation, __pyx_n_s_best_points, __pyx_n_s_start_time, __pyx_n_s_argmin, __pyx_n_s_k); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_13_get_optimal_targets, 0, __pyx_n_s_get_optimal_targets, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_optimal_targets, __pyx_t_2) < 0) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(9, 0, 0, 34, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_get_optimal_targets, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 183, __pyx_L1_error)
184: file_name, objective, int num_step, int cnt_sample, MRratio, float opti_time, kwargs):
185: cdef np.float32_t t, threshold, expectation, nxt_expectation, lr, ratio, fire_prob, min_expectation
186: cdef int i, j, n, m, t_int, step, op, ok, go
+187: n = goals_2D.shape[0]
__pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_goals_2D)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L1_error)
__pyx_v_n = (__pyx_t_1[0]);
+188: m = 0
__pyx_v_m = 0;
+189: threshold = 0.001
__pyx_v_threshold = 0.001;
+190: cdef np.ndarray[np.float32_t, ndim=2] ans_points = np.zeros((6, 2), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __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, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_tuple__10 = PyTuple_Pack(2, __pyx_int_6, __pyx_int_2); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 190, __pyx_L1_error) __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ans_points.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_ans_points = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 190, __pyx_L1_error) } else {__pyx_pybuffernd_ans_points.diminfo[0].strides = __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ans_points.diminfo[0].shape = __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_ans_points.diminfo[1].strides = __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_ans_points.diminfo[1].shape = __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.shape[1]; } } __pyx_t_6 = 0; __pyx_v_ans_points = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; __pyx_tuple__11 = PyTuple_Pack(1, __pyx_tuple__10); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11);
+191: cdef np.ndarray[np.float32_t, ndim=2] nxt_points = np.zeros((6, 2), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __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; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 191, __pyx_L1_error) __pyx_t_7 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_nxt_points.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_nxt_points = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 191, __pyx_L1_error) } else {__pyx_pybuffernd_nxt_points.diminfo[0].strides = __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_nxt_points.diminfo[0].shape = __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_nxt_points.diminfo[1].strides = __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_nxt_points.diminfo[1].shape = __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.shape[1]; } } __pyx_t_7 = 0; __pyx_v_nxt_points = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+192: cdef np.ndarray[np.float32_t, ndim=1] pred_probs = np.zeros(6, dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__12, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 192, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pred_probs.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_pred_probs = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_pred_probs.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 192, __pyx_L1_error) } else {__pyx_pybuffernd_pred_probs.diminfo[0].strides = __pyx_pybuffernd_pred_probs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pred_probs.diminfo[0].shape = __pyx_pybuffernd_pred_probs.rcbuffer->pybuffer.shape[0]; } } __pyx_t_8 = 0; __pyx_v_pred_probs = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; /* … */ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_int_6); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12);
193: cdef:
+194: float best_expectation = 10000.0
__pyx_v_best_expectation = 10000.0;
+195: np.ndarray[np.float32_t, ndim=2] best_points = np.zeros((6, 2), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__11, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 195, __pyx_L1_error) __pyx_t_9 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_best_points.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_best_points = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_best_points.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 195, __pyx_L1_error) } else {__pyx_pybuffernd_best_points.diminfo[0].strides = __pyx_pybuffernd_best_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_best_points.diminfo[0].shape = __pyx_pybuffernd_best_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_best_points.diminfo[1].strides = __pyx_pybuffernd_best_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_best_points.diminfo[1].shape = __pyx_pybuffernd_best_points.rcbuffer->pybuffer.shape[1]; } } __pyx_t_9 = 0; __pyx_v_best_points = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
196:
+197: cdef float start_time = clock()
__pyx_v_start_time = clock();
+198: if opti_time < 100.0:
__pyx_t_10 = (__pyx_v_opti_time < 100.0); if (__pyx_t_10) { /* … */ }
+199: num_step = 1000_000
__pyx_v_num_step = 0xF4240;
200:
+201: for i in range(n):
__pyx_t_11 = __pyx_v_n; __pyx_t_12 = __pyx_t_11; for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) { __pyx_v_i = __pyx_t_13;
+202: if scores[i] >= threshold:
__pyx_t_14 = __pyx_v_i; __pyx_t_10 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_scores.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_scores.diminfo[0].strides)) >= __pyx_v_threshold); if (__pyx_t_10) { /* … */ } }
+203: goals_2D[m, 0] = goals_2D[i, 0]
__pyx_t_14 = __pyx_v_i; __pyx_t_15 = 0; __pyx_t_16 = __pyx_v_m; __pyx_t_17 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_goals_2D.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_goals_2D.diminfo[1].strides));
+204: goals_2D[m, 1] = goals_2D[i, 1]
__pyx_t_15 = __pyx_v_i; __pyx_t_14 = 1; __pyx_t_17 = __pyx_v_m; __pyx_t_16 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_goals_2D.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_goals_2D.diminfo[1].strides));
+205: scores[m] = scores[i]
__pyx_t_14 = __pyx_v_i; __pyx_t_15 = __pyx_v_m; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_scores.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_scores.diminfo[0].strides) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_scores.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_scores.diminfo[0].strides));
+206: m += 1
__pyx_v_m = (__pyx_v_m + 1);
+207: if m == 0:
__pyx_t_10 = (__pyx_v_m == 0); if (__pyx_t_10) { /* … */ }
+208: print('warning: m == 0')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_warning_m_0); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__13); __Pyx_GIVEREF(__pyx_tuple__13);
+209: m = n
__pyx_v_m = __pyx_v_n;
210:
+211: n = m
__pyx_v_n = __pyx_v_m;
212:
+213: for j in range(6):
for (__pyx_t_11 = 0; __pyx_t_11 < 6; __pyx_t_11+=1) { __pyx_v_j = __pyx_t_11;
+214: t_int = get_rand_int(0, n - 1)
__pyx_t_12 = __pyx_f_12utils_cython_get_rand_int(0, (__pyx_v_n - 1)); if (unlikely(__pyx_t_12 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 214, __pyx_L1_error) __pyx_v_t_int = __pyx_t_12;
+215: ans_points[j, 0] = goals_2D[t_int, 0]
__pyx_t_14 = __pyx_v_t_int; __pyx_t_15 = 0; __pyx_t_16 = __pyx_v_j; __pyx_t_17 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_ans_points.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_ans_points.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_goals_2D.diminfo[1].strides));
+216: ans_points[j, 1] = goals_2D[t_int, 1]
__pyx_t_15 = __pyx_v_t_int; __pyx_t_14 = 1; __pyx_t_17 = __pyx_v_j; __pyx_t_16 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ans_points.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_ans_points.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_goals_2D.diminfo[1].strides)); }
217:
+218: expectation = get_value(goals_2D, scores, ans_points, n, objective, cnt_sample, MRratio, kwargs)
__pyx_t_18 = __pyx_PyFloat_AsFloat(__pyx_v_MRratio); if (unlikely((__pyx_t_18 == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 218, __pyx_L1_error) __pyx_t_19 = __pyx_f_12utils_cython_get_value(((PyArrayObject *)__pyx_v_goals_2D), ((PyArrayObject *)__pyx_v_scores), ((PyArrayObject *)__pyx_v_ans_points), __pyx_v_n, __pyx_v_objective, __pyx_v_cnt_sample, __pyx_t_18, __pyx_v_kwargs); if (unlikely(__pyx_t_19 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 218, __pyx_L1_error) __pyx_v_expectation = __pyx_t_19;
+219: for step in range(num_step):
__pyx_t_11 = __pyx_v_num_step; __pyx_t_12 = __pyx_t_11; for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) { __pyx_v_step = __pyx_t_13;
+220: if (clock() - start_time) / CLOCKS_PER_SEC >= opti_time:
__pyx_t_20 = (clock() - __pyx_v_start_time); if (unlikely(CLOCKS_PER_SEC == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 220, __pyx_L1_error) } __pyx_t_10 = ((__pyx_t_20 / ((float)CLOCKS_PER_SEC)) >= __pyx_v_opti_time); if (__pyx_t_10) { /* … */ }
+221: break
goto __pyx_L11_break;
222:
+223: ratio = step
__pyx_v_ratio = __pyx_v_step;
+224: ratio = ratio / num_step
if (unlikely(__pyx_v_num_step == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 224, __pyx_L1_error) } __pyx_v_ratio = (__pyx_v_ratio / ((__pyx_t_5numpy_float32_t)__pyx_v_num_step));
225:
+226: lr = exp(-(ratio * 2))
__pyx_v_lr = exp((-(__pyx_v_ratio * 2.0)));
+227: for j in range(6):
for (__pyx_t_21 = 0; __pyx_t_21 < 6; __pyx_t_21+=1) { __pyx_v_j = __pyx_t_21;
+228: nxt_points[j, 0] = ans_points[j, 0]
__pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; __pyx_t_16 = __pyx_v_j; __pyx_t_17 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_nxt_points.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_ans_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_ans_points.diminfo[1].strides));
+229: nxt_points[j, 1] = ans_points[j, 1]
__pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; __pyx_t_17 = __pyx_v_j; __pyx_t_16 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_nxt_points.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_ans_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_ans_points.diminfo[1].strides)); }
230:
+231: op = get_rand_int(0, 0)
__pyx_t_21 = __pyx_f_12utils_cython_get_rand_int(0, 0); if (unlikely(__pyx_t_21 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) __pyx_v_op = __pyx_t_21;
+232: if op == 0:
__pyx_t_10 = (__pyx_v_op == 0); if (__pyx_t_10) { /* … */ }
+233: while True:
while (1) {
+234: ok = 0
__pyx_v_ok = 0;
+235: for j in range(6):
for (__pyx_t_21 = 0; __pyx_t_21 < 6; __pyx_t_21+=1) { __pyx_v_j = __pyx_t_21;
+236: if get_rand(0.0, 1.0) < 0.3:
__pyx_t_19 = __pyx_f_12utils_cython_get_rand(0.0, 1.0); if (unlikely(__pyx_t_19 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 236, __pyx_L1_error) __pyx_t_10 = (__pyx_t_19 < 0.3); if (__pyx_t_10) { /* … */ } }
+237: nxt_points[j, 0] += get_rand(-lr, lr)
__pyx_t_19 = __pyx_f_12utils_cython_get_rand((-__pyx_v_lr), __pyx_v_lr); if (unlikely(__pyx_t_19 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 237, __pyx_L1_error) __pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[1].strides) += __pyx_t_19;
+238: nxt_points[j, 1] += get_rand(-lr, lr)
__pyx_t_19 = __pyx_f_12utils_cython_get_rand((-__pyx_v_lr), __pyx_v_lr); if (unlikely(__pyx_t_19 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 238, __pyx_L1_error) __pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[1].strides) += __pyx_t_19;
+239: ok = 1
__pyx_v_ok = 1;
+240: if ok:
__pyx_t_10 = (__pyx_v_ok != 0); if (__pyx_t_10) { /* … */ } } __pyx_L17_break:;
+241: break
goto __pyx_L17_break;
242:
+243: nxt_expectation = get_value(goals_2D, scores, nxt_points, n, objective, cnt_sample, MRratio, kwargs)
__pyx_t_19 = __pyx_PyFloat_AsFloat(__pyx_v_MRratio); if (unlikely((__pyx_t_19 == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) __pyx_t_18 = __pyx_f_12utils_cython_get_value(((PyArrayObject *)__pyx_v_goals_2D), ((PyArrayObject *)__pyx_v_scores), ((PyArrayObject *)__pyx_v_nxt_points), __pyx_v_n, __pyx_v_objective, __pyx_v_cnt_sample, __pyx_t_19, __pyx_v_kwargs); if (unlikely(__pyx_t_18 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) __pyx_v_nxt_expectation = __pyx_t_18;
244:
+245: go = 0
__pyx_v_go = 0;
+246: if nxt_expectation < expectation:
__pyx_t_10 = (__pyx_v_nxt_expectation < __pyx_v_expectation); if (__pyx_t_10) { /* … */ goto __pyx_L22; }
+247: go = 1
__pyx_v_go = 1;
248: else:
+249: fire_prob = 0.01
/*else*/ { __pyx_v_fire_prob = 0.01;
+250: if get_rand(0.0, 1.0) < fire_prob:
__pyx_t_18 = __pyx_f_12utils_cython_get_rand(0.0, 1.0); if (unlikely(__pyx_t_18 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 250, __pyx_L1_error) __pyx_t_10 = (__pyx_t_18 < __pyx_v_fire_prob); if (__pyx_t_10) { /* … */ } } __pyx_L22:;
+251: go = 1
__pyx_v_go = 1;
252:
+253: if go:
__pyx_t_10 = (__pyx_v_go != 0); if (__pyx_t_10) { /* … */ }
+254: expectation = nxt_expectation
__pyx_v_expectation = __pyx_v_nxt_expectation;
+255: for j in range(6):
for (__pyx_t_21 = 0; __pyx_t_21 < 6; __pyx_t_21+=1) { __pyx_v_j = __pyx_t_21;
+256: ans_points[j, 0] = nxt_points[j, 0]
__pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; __pyx_t_16 = __pyx_v_j; __pyx_t_17 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_ans_points.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_ans_points.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[1].strides));
+257: ans_points[j, 1] = nxt_points[j, 1]
__pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; __pyx_t_17 = __pyx_v_j; __pyx_t_16 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ans_points.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_ans_points.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[1].strides)); }
258:
+259: if expectation < best_expectation:
__pyx_t_10 = (__pyx_v_expectation < __pyx_v_best_expectation); if (__pyx_t_10) { /* … */ } } __pyx_L11_break:;
+260: best_expectation = expectation
__pyx_v_best_expectation = __pyx_v_expectation;
+261: for j in range(6):
for (__pyx_t_21 = 0; __pyx_t_21 < 6; __pyx_t_21+=1) { __pyx_v_j = __pyx_t_21;
+262: best_points[j, 0], best_points[j, 1] = ans_points[j, 0], ans_points[j, 1]
__pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; __pyx_t_18 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_ans_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_ans_points.diminfo[1].strides)); __pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; __pyx_t_19 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_ans_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_ans_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_ans_points.diminfo[1].strides)); __pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_best_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_best_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_best_points.diminfo[1].strides) = __pyx_t_18; __pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_best_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_best_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_best_points.diminfo[1].strides) = __pyx_t_19; }
263:
+264: min_expectation = 10000.0
__pyx_v_min_expectation = 10000.0;
+265: argmin = 0
__pyx_v_argmin = 0;
266:
+267: for j in range(6):
for (__pyx_t_11 = 0; __pyx_t_11 < 6; __pyx_t_11+=1) { __pyx_v_j = __pyx_t_11;
+268: for k in range(6):
for (__pyx_t_22 = 0; __pyx_t_22 < 6; __pyx_t_22+=1) { __pyx_v_k = __pyx_t_22;
+269: nxt_points[k, 0], nxt_points[k, 1] = best_points[j, 0], best_points[j, 1]
__pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; __pyx_t_19 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_best_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_best_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_best_points.diminfo[1].strides)); __pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; __pyx_t_18 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_best_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_best_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_best_points.diminfo[1].strides)); __pyx_t_14 = __pyx_v_k; __pyx_t_15 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[1].strides) = __pyx_t_19; __pyx_t_15 = __pyx_v_k; __pyx_t_14 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[1].strides) = __pyx_t_18; }
+270: t = get_value(goals_2D, scores, nxt_points, n, 'minFDE', cnt_sample, MRratio, kwargs)
__pyx_t_18 = __pyx_PyFloat_AsFloat(__pyx_v_MRratio); if (unlikely((__pyx_t_18 == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 270, __pyx_L1_error) __pyx_t_19 = __pyx_f_12utils_cython_get_value(((PyArrayObject *)__pyx_v_goals_2D), ((PyArrayObject *)__pyx_v_scores), ((PyArrayObject *)__pyx_v_nxt_points), __pyx_v_n, __pyx_n_u_minFDE, __pyx_v_cnt_sample, __pyx_t_18, __pyx_v_kwargs); if (unlikely(__pyx_t_19 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 270, __pyx_L1_error) __pyx_v_t = __pyx_t_19;
+271: pred_probs[j] = 1.0 - get_value(goals_2D, scores, nxt_points, n, objective, cnt_sample, MRratio, kwargs)
__pyx_t_19 = __pyx_PyFloat_AsFloat(__pyx_v_MRratio); if (unlikely((__pyx_t_19 == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 271, __pyx_L1_error) __pyx_t_18 = __pyx_f_12utils_cython_get_value(((PyArrayObject *)__pyx_v_goals_2D), ((PyArrayObject *)__pyx_v_scores), ((PyArrayObject *)__pyx_v_nxt_points), __pyx_v_n, __pyx_v_objective, __pyx_v_cnt_sample, __pyx_t_19, __pyx_v_kwargs); if (unlikely(__pyx_t_18 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 271, __pyx_L1_error) __pyx_t_14 = __pyx_v_j; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_pred_probs.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_pred_probs.diminfo[0].strides) = (1.0 - __pyx_t_18);
+272: if t < min_expectation:
__pyx_t_10 = (__pyx_v_t < __pyx_v_min_expectation); if (__pyx_t_10) { /* … */ } }
+273: min_expectation = t
__pyx_v_min_expectation = __pyx_v_t;
+274: argmin = j
__pyx_v_argmin = __pyx_v_j;
275:
+276: return best_expectation, best_points, argmin, pred_probs
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_best_expectation); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v_argmin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_INCREF((PyObject *)__pyx_v_best_points); __Pyx_GIVEREF((PyObject *)__pyx_v_best_points); PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_best_points)); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __Pyx_INCREF((PyObject *)__pyx_v_pred_probs); __Pyx_GIVEREF((PyObject *)__pyx_v_pred_probs); PyTuple_SET_ITEM(__pyx_t_4, 3, ((PyObject *)__pyx_v_pred_probs)); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
277:
+278: def get_optimal_targets(goals_2D, scores, file_name, objective, opti_time, kwargs: dict = None):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_15get_optimal_targets(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_15get_optimal_targets = {"get_optimal_targets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_15get_optimal_targets, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_15get_optimal_targets(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_goals_2D = 0; PyObject *__pyx_v_scores = 0; PyObject *__pyx_v_file_name = 0; PyObject *__pyx_v_objective = 0; PyObject *__pyx_v_opti_time = 0; PyObject *__pyx_v_kwargs = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_optimal_targets (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_goals_2D,&__pyx_n_s_scores,&__pyx_n_s_file_name,&__pyx_n_s_objective,&__pyx_n_s_opti_time,&__pyx_n_s_kwargs,0}; PyObject* values[6] = {0,0,0,0,0,0}; values[5] = ((PyObject*)((PyObject *)Py_None)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_goals_2D)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scores)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_optimal_targets", 0, 5, 6, 1); __PYX_ERR(0, 278, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_name)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_optimal_targets", 0, 5, 6, 2); __PYX_ERR(0, 278, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_objective)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_optimal_targets", 0, 5, 6, 3); __PYX_ERR(0, 278, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_opti_time)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_optimal_targets", 0, 5, 6, 4); __PYX_ERR(0, 278, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs); if (value) { values[5] = value; kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_optimal_targets") < 0)) __PYX_ERR(0, 278, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_goals_2D = values[0]; __pyx_v_scores = values[1]; __pyx_v_file_name = values[2]; __pyx_v_objective = values[3]; __pyx_v_opti_time = values[4]; __pyx_v_kwargs = ((PyObject*)values[5]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get_optimal_targets", 0, 5, 6, __pyx_nargs); __PYX_ERR(0, 278, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython.get_optimal_targets", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_kwargs), (&PyDict_Type), 1, "kwargs", 1))) __PYX_ERR(0, 278, __pyx_L1_error) __pyx_r = __pyx_pf_12utils_cython_14get_optimal_targets(__pyx_self, __pyx_v_goals_2D, __pyx_v_scores, __pyx_v_file_name, __pyx_v_objective, __pyx_v_opti_time, __pyx_v_kwargs); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_14get_optimal_targets(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_goals_2D, PyObject *__pyx_v_scores, PyObject *__pyx_v_file_name, PyObject *__pyx_v_objective, PyObject *__pyx_v_opti_time, PyObject *__pyx_v_kwargs) { PyObject *__pyx_v_MRratio = NULL; PyObject *__pyx_v_cnt_sample = NULL; PyObject *__pyx_v_num_step = NULL; PyObject *__pyx_v_expectation = NULL; PyObject *__pyx_v_ans_points = NULL; CYTHON_UNUSED PyObject *__pyx_v_argmin = NULL; PyObject *__pyx_v_pred_probs = NULL; PyObject *__pyx_v_argsort = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_optimal_targets", 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_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("utils_cython.get_optimal_targets", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_MRratio); __Pyx_XDECREF(__pyx_v_cnt_sample); __Pyx_XDECREF(__pyx_v_num_step); __Pyx_XDECREF(__pyx_v_expectation); __Pyx_XDECREF(__pyx_v_ans_points); __Pyx_XDECREF(__pyx_v_argmin); __Pyx_XDECREF(__pyx_v_pred_probs); __Pyx_XDECREF(__pyx_v_argsort); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__29 = PyTuple_Pack(14, __pyx_n_s_goals_2D, __pyx_n_s_scores, __pyx_n_s_file_name, __pyx_n_s_objective, __pyx_n_s_opti_time, __pyx_n_s_kwargs, __pyx_n_s_MRratio, __pyx_n_s_cnt_sample, __pyx_n_s_num_step, __pyx_n_s_expectation, __pyx_n_s_ans_points, __pyx_n_s_argmin, __pyx_n_s_pred_probs, __pyx_n_s_argsort); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_get_optimal_targets_2, 278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 278, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_kwargs, __pyx_n_s_dict) < 0) __PYX_ERR(0, 278, __pyx_L1_error) __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_15get_optimal_targets, 0, __pyx_n_s_get_optimal_targets_2, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__31); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_optimal_targets_2, __pyx_t_3) < 0) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_tuple__31 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31);
+279: MRratio = kwargs.get('MRratio', 1.0)
if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); __PYX_ERR(0, 279, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_u_MRratio, __pyx_float_1_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_MRratio = __pyx_t_1; __pyx_t_1 = 0;
+280: cnt_sample = kwargs.get('cnt_sample', 2)
if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); __PYX_ERR(0, 280, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_u_cnt_sample, __pyx_int_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_cnt_sample = __pyx_t_1; __pyx_t_1 = 0;
+281: num_step = kwargs.get('num_step', 4000)
if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); __PYX_ERR(0, 281, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_u_num_step, __pyx_int_4000); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_num_step = __pyx_t_1; __pyx_t_1 = 0;
+282: expectation, ans_points, argmin, pred_probs = _get_optimal_targets(goals_2D, scores, file_name, objective, num_step, cnt_sample,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_optimal_targets); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* … */ __pyx_v_expectation = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_ans_points = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_argmin = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_pred_probs = __pyx_t_6; __pyx_t_6 = 0;
+283: MRratio, opti_time, kwargs)
__pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } { PyObject *__pyx_callargs[10] = {__pyx_t_3, __pyx_v_goals_2D, __pyx_v_scores, __pyx_v_file_name, __pyx_v_objective, __pyx_v_num_step, __pyx_v_cnt_sample, __pyx_v_MRratio, __pyx_v_opti_time, __pyx_v_kwargs}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 9+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 4)) { if (size > 4) __Pyx_RaiseTooManyValuesError(4); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 282, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else { Py_ssize_t i; PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_5,&__pyx_t_6}; for (i=0; i < 4; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_5,&__pyx_t_6}; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); for (index=0; index < 4; index++) { PyObject* item = __pyx_t_8(__pyx_t_7); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 4) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 282, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+284: argsort = np.argsort(-pred_probs)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_argsort); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Negative(__pyx_v_pred_probs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_v_argsort = __pyx_t_1; __pyx_t_1 = 0;
+285: ans_points = ans_points[argsort]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_ans_points, __pyx_v_argsort); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_ans_points, __pyx_t_1); __pyx_t_1 = 0;
+286: pred_probs = pred_probs[argsort]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_pred_probs, __pyx_v_argsort); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_pred_probs, __pyx_t_1); __pyx_t_1 = 0;
287: # TODO
288: # ans_points[0, 0], ans_points[argmin, 0] = ans_points[argmin, 0], ans_points[0, 0]
289: # ans_points[0, 1], ans_points[argmin, 1] = ans_points[argmin, 1], ans_points[0, 1]
+290: return expectation, ans_points, pred_probs
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_expectation); __Pyx_GIVEREF(__pyx_v_expectation); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_expectation); __Pyx_INCREF(__pyx_v_ans_points); __Pyx_GIVEREF(__pyx_v_ans_points); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ans_points); __Pyx_INCREF(__pyx_v_pred_probs); __Pyx_GIVEREF(__pyx_v_pred_probs); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_pred_probs); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
291:
+292: def _get_normalized(np.ndarray[np.float32_t, ndim=3] polygons, np.float32_t x, np.float32_t y, np.float32_t angle):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_17_get_normalized(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_17_get_normalized = {"_get_normalized", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_17_get_normalized, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_17_get_normalized(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyArrayObject *__pyx_v_polygons = 0; __pyx_t_5numpy_float32_t __pyx_v_x; __pyx_t_5numpy_float32_t __pyx_v_y; __pyx_t_5numpy_float32_t __pyx_v_angle; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_normalized (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_polygons,&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_angle,0}; PyObject* values[4] = {0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_polygons)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_normalized", 1, 4, 4, 1); __PYX_ERR(0, 292, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_normalized", 1, 4, 4, 2); __PYX_ERR(0, 292, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_get_normalized", 1, 4, 4, 3); __PYX_ERR(0, 292, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_get_normalized") < 0)) __PYX_ERR(0, 292, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 4)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); } __pyx_v_polygons = ((PyArrayObject *)values[0]); __pyx_v_x = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_x == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L3_error) __pyx_v_y = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_y == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L3_error) __pyx_v_angle = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_angle == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_get_normalized", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 292, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython._get_normalized", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_polygons), __pyx_ptype_5numpy_ndarray, 1, "polygons", 0))) __PYX_ERR(0, 292, __pyx_L1_error) __pyx_r = __pyx_pf_12utils_cython_16_get_normalized(__pyx_self, __pyx_v_polygons, __pyx_v_x, __pyx_v_y, __pyx_v_angle); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_16_get_normalized(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_polygons, __pyx_t_5numpy_float32_t __pyx_v_x, __pyx_t_5numpy_float32_t __pyx_v_y, __pyx_t_5numpy_float32_t __pyx_v_angle) { __pyx_t_5numpy_float32_t __pyx_v_cos_; __pyx_t_5numpy_float32_t __pyx_v_sin_; int __pyx_v_i; int __pyx_v_n; int __pyx_v_polygon_idx; PyArrayObject *__pyx_v_new_polygons = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_new_polygons; __Pyx_Buffer __pyx_pybuffer_new_polygons; __Pyx_LocalBuf_ND __pyx_pybuffernd_polygons; __Pyx_Buffer __pyx_pybuffer_polygons; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_normalized", 0); __pyx_pybuffer_new_polygons.pybuffer.buf = NULL; __pyx_pybuffer_new_polygons.refcount = 0; __pyx_pybuffernd_new_polygons.data = NULL; __pyx_pybuffernd_new_polygons.rcbuffer = &__pyx_pybuffer_new_polygons; __pyx_pybuffer_polygons.pybuffer.buf = NULL; __pyx_pybuffer_polygons.refcount = 0; __pyx_pybuffernd_polygons.data = NULL; __pyx_pybuffernd_polygons.rcbuffer = &__pyx_pybuffer_polygons; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_polygons.rcbuffer->pybuffer, (PyObject*)__pyx_v_polygons, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) __PYX_ERR(0, 292, __pyx_L1_error) } __pyx_pybuffernd_polygons.diminfo[0].strides = __pyx_pybuffernd_polygons.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_polygons.diminfo[0].shape = __pyx_pybuffernd_polygons.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_polygons.diminfo[1].strides = __pyx_pybuffernd_polygons.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_polygons.diminfo[1].shape = __pyx_pybuffernd_polygons.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_polygons.diminfo[2].strides = __pyx_pybuffernd_polygons.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_polygons.diminfo[2].shape = __pyx_pybuffernd_polygons.rcbuffer->pybuffer.shape[2]; /* … */ /* function exit code */ __pyx_L1_error:; __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); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_polygons.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_polygons.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython._get_normalized", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_polygons.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_polygons.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_new_polygons); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__32 = PyTuple_Pack(12, __pyx_n_s_polygons, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_angle, __pyx_n_s_cos, __pyx_n_s_sin, __pyx_n_s_min_sqr_dis, __pyx_n_s_temp, __pyx_n_s_i, __pyx_n_s_n, __pyx_n_s_polygon_idx, __pyx_n_s_new_polygons); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__32); __Pyx_GIVEREF(__pyx_tuple__32); /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_17_get_normalized, 0, __pyx_n_s_get_normalized, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_normalized, __pyx_t_3) < 0) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_get_normalized, 292, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 292, __pyx_L1_error)
293: cdef:
294: np.float32_t cos_, sin_, min_sqr_dis, temp
295: int i, n, polygon_idx
+296: cos_ = cos(angle)
__pyx_v_cos_ = cos(__pyx_v_angle);
+297: sin_ = sin(angle)
__pyx_v_sin_ = sin(__pyx_v_angle);
+298: n = polygons.shape[1]
__pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_polygons)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 298, __pyx_L1_error)
__pyx_v_n = (__pyx_t_1[1]);
+299: cdef np.ndarray[np.float32_t, ndim=3] new_polygons = np.zeros((polygons.shape[0], n, 2), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __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, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_polygons)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 299, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_1[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 299, __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_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_int_2); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 299, __pyx_L1_error) __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_polygons.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) { __pyx_v_new_polygons = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 299, __pyx_L1_error) } else {__pyx_pybuffernd_new_polygons.diminfo[0].strides = __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_new_polygons.diminfo[0].shape = __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_new_polygons.diminfo[1].strides = __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_new_polygons.diminfo[1].shape = __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_new_polygons.diminfo[2].strides = __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_new_polygons.diminfo[2].shape = __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.shape[2]; } } __pyx_t_7 = 0; __pyx_v_new_polygons = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
+300: for polygon_idx in range(polygons.shape[0]):
__pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_polygons)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 300, __pyx_L1_error)
__pyx_t_8 = (__pyx_t_1[0]);
__pyx_t_9 = __pyx_t_8;
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
__pyx_v_polygon_idx = __pyx_t_10;
+301: for i in range(n):
__pyx_t_11 = __pyx_v_n; __pyx_t_12 = __pyx_t_11; for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) { __pyx_v_i = __pyx_t_13;
+302: polygons[polygon_idx, i, 0] -= x
__pyx_t_14 = __pyx_v_polygon_idx; __pyx_t_15 = __pyx_v_i; __pyx_t_16 = 0; *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygons.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_polygons.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_polygons.diminfo[1].strides, __pyx_t_16, __pyx_pybuffernd_polygons.diminfo[2].strides) -= __pyx_v_x;
+303: polygons[polygon_idx, i, 1] -= y
__pyx_t_16 = __pyx_v_polygon_idx; __pyx_t_15 = __pyx_v_i; __pyx_t_14 = 1; *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygons.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_polygons.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_polygons.diminfo[1].strides, __pyx_t_14, __pyx_pybuffernd_polygons.diminfo[2].strides) -= __pyx_v_y;
+304: new_polygons[polygon_idx, i, 0] = polygons[polygon_idx, i, 0] * cos_ - polygons[polygon_idx, i, 1] * sin_
__pyx_t_14 = __pyx_v_polygon_idx; __pyx_t_15 = __pyx_v_i; __pyx_t_16 = 0; __pyx_t_17 = __pyx_v_polygon_idx; __pyx_t_18 = __pyx_v_i; __pyx_t_19 = 1; __pyx_t_20 = __pyx_v_polygon_idx; __pyx_t_21 = __pyx_v_i; __pyx_t_22 = 0; *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_new_polygons.diminfo[0].strides, __pyx_t_21, __pyx_pybuffernd_new_polygons.diminfo[1].strides, __pyx_t_22, __pyx_pybuffernd_new_polygons.diminfo[2].strides) = (((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygons.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_polygons.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_polygons.diminfo[1].strides, __pyx_t_16, __pyx_pybuffernd_polygons.diminfo[2].strides)) * __pyx_v_cos_) - ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygons.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_polygons.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_polygons.diminfo[1].strides, __pyx_t_19, __pyx_pybuffernd_polygons.diminfo[2].strides)) * __pyx_v_sin_));
+305: new_polygons[polygon_idx, i, 1] = polygons[polygon_idx, i, 0] * sin_ + polygons[polygon_idx, i, 1] * cos_
__pyx_t_19 = __pyx_v_polygon_idx; __pyx_t_18 = __pyx_v_i; __pyx_t_17 = 0; __pyx_t_16 = __pyx_v_polygon_idx; __pyx_t_15 = __pyx_v_i; __pyx_t_14 = 1; __pyx_t_22 = __pyx_v_polygon_idx; __pyx_t_21 = __pyx_v_i; __pyx_t_20 = 1; *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_new_polygons.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_new_polygons.diminfo[0].strides, __pyx_t_21, __pyx_pybuffernd_new_polygons.diminfo[1].strides, __pyx_t_20, __pyx_pybuffernd_new_polygons.diminfo[2].strides) = (((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygons.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_polygons.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_polygons.diminfo[1].strides, __pyx_t_17, __pyx_pybuffernd_polygons.diminfo[2].strides)) * __pyx_v_sin_) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_polygons.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_polygons.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_polygons.diminfo[1].strides, __pyx_t_14, __pyx_pybuffernd_polygons.diminfo[2].strides)) * __pyx_v_cos_)); } }
+306: return new_polygons
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_new_polygons); __pyx_r = ((PyObject *)__pyx_v_new_polygons); goto __pyx_L0;
307:
+308: def get_normalized(trajectorys, normalizer, reverse=False):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_19get_normalized(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_19get_normalized = {"get_normalized", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_19get_normalized, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_19get_normalized(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_trajectorys = 0; PyObject *__pyx_v_normalizer = 0; PyObject *__pyx_v_reverse = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_normalized (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_trajectorys,&__pyx_n_s_normalizer,&__pyx_n_s_reverse,0}; PyObject* values[3] = {0,0,0}; values[2] = ((PyObject *)((PyObject *)Py_False)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_trajectorys)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 308, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_normalizer)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 308, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_normalized", 0, 2, 3, 1); __PYX_ERR(0, 308, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_reverse); if (value) { values[2] = value; kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 308, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_normalized") < 0)) __PYX_ERR(0, 308, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_trajectorys = values[0]; __pyx_v_normalizer = values[1]; __pyx_v_reverse = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get_normalized", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 308, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython.get_normalized", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_12utils_cython_18get_normalized(__pyx_self, __pyx_v_trajectorys, __pyx_v_normalizer, __pyx_v_reverse); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_18get_normalized(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_trajectorys, PyObject *__pyx_v_normalizer, PyObject *__pyx_v_reverse) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_normalized", 0); __Pyx_INCREF(__pyx_v_trajectorys); /* … */ /* 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_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("utils_cython.get_normalized", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_trajectorys); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__34 = PyTuple_Pack(3, __pyx_n_s_trajectorys, __pyx_n_s_normalizer, __pyx_n_s_reverse); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_get_normalized_2, 308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 308, __pyx_L1_error) /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_19get_normalized, 0, __pyx_n_s_get_normalized_2, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__36); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_normalized_2, __pyx_t_3) < 0) __PYX_ERR(0, 308, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_tuple__36 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36);
+309: if trajectorys.dtype is not np.float32:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trajectorys, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_1 != __pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_4) { /* … */ }
+310: trajectorys = trajectorys.astype(np.float32)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trajectorys, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF_SET(__pyx_v_trajectorys, __pyx_t_3); __pyx_t_3 = 0;
311:
+312: if reverse:
__pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_reverse); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 312, __pyx_L1_error) if (__pyx_t_4) { /* … */ }
+313: return _get_normalized(trajectorys, normalizer.origin[0], normalizer.origin[1], -normalizer.yaw)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_get_normalized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_yaw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } { PyObject *__pyx_callargs[5] = {__pyx_t_5, __pyx_v_trajectorys, __pyx_t_2, __pyx_t_7, __pyx_t_8}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 4+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
+314: return _get_normalized(trajectorys, normalizer.x, normalizer.y, normalizer.yaw)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_get_normalized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_x); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_y); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_yaw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } { PyObject *__pyx_callargs[5] = {__pyx_t_5, __pyx_v_trajectorys, __pyx_t_8, __pyx_t_7, __pyx_t_2}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 4+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
315:
+316: def get_normalized_points(points: np.ndarray, normalizer, reverse=False):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_21get_normalized_points(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_21get_normalized_points = {"get_normalized_points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_21get_normalized_points, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_21get_normalized_points(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyArrayObject *__pyx_v_points = 0; PyObject *__pyx_v_normalizer = 0; PyObject *__pyx_v_reverse = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_normalized_points (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_normalizer,&__pyx_n_s_reverse,0}; PyObject* values[3] = {0,0,0}; values[2] = ((PyObject *)((PyObject *)Py_False)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_points)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 316, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_normalizer)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 316, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("get_normalized_points", 0, 2, 3, 1); __PYX_ERR(0, 316, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_reverse); if (value) { values[2] = value; kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 316, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_normalized_points") < 0)) __PYX_ERR(0, 316, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_points = ((PyArrayObject *)values[0]); __pyx_v_normalizer = values[1]; __pyx_v_reverse = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get_normalized_points", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 316, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython.get_normalized_points", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), __pyx_ptype_5numpy_ndarray, 0, "points", 0))) __PYX_ERR(0, 316, __pyx_L1_error) __pyx_r = __pyx_pf_12utils_cython_20get_normalized_points(__pyx_self, __pyx_v_points, __pyx_v_normalizer, __pyx_v_reverse); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_20get_normalized_points(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_points, PyObject *__pyx_v_normalizer, PyObject *__pyx_v_reverse) { PyObject *__pyx_v_trajectorys = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_normalized_points", 0); __Pyx_INCREF((PyObject *)__pyx_v_points); /* … */ /* 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_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("utils_cython.get_normalized_points", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_trajectorys); __Pyx_XDECREF((PyObject *)__pyx_v_points); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__37 = PyTuple_Pack(4, __pyx_n_s_points, __pyx_n_s_normalizer, __pyx_n_s_reverse, __pyx_n_s_trajectorys); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 316, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__37); __Pyx_GIVEREF(__pyx_tuple__37); __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_get_normalized_points, 316, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 316, __pyx_L1_error) /* … */ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_points, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 316, __pyx_L1_error) __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_21get_normalized_points, 0, __pyx_n_s_get_normalized_points, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__39); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_normalized_points, __pyx_t_2) < 0) __PYX_ERR(0, 316, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_tuple__39 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 316, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__39); __Pyx_GIVEREF(__pyx_tuple__39);
+317: if points.dtype is not np.float32:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_points), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_1 != __pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_4) { /* … */ }
+318: points = points.astype(np.float32)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_points), __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_points, ((PyArrayObject *)__pyx_t_3)); __pyx_t_3 = 0;
319:
+320: trajectorys = points[np.newaxis, :]
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_INCREF(__pyx_slice__3); __Pyx_GIVEREF(__pyx_slice__3); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__3); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_points), __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_trajectorys = __pyx_t_1; __pyx_t_1 = 0;
+321: if reverse:
__pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_reverse); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 321, __pyx_L1_error) if (__pyx_t_4) { /* … */ }
+322: return _get_normalized(trajectorys, normalizer.origin[0], normalizer.origin[1], -normalizer.yaw)[0]
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_normalized); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_yaw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } { PyObject *__pyx_callargs[5] = {__pyx_t_5, __pyx_v_trajectorys, __pyx_t_2, __pyx_t_7, __pyx_t_8}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 4+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
+323: return _get_normalized(trajectorys, normalizer.x, normalizer.y, normalizer.yaw)[0]
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_get_normalized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_x); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_y); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_normalizer, __pyx_n_s_yaw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } { PyObject *__pyx_callargs[5] = {__pyx_t_5, __pyx_v_trajectorys, __pyx_t_8, __pyx_t_7, __pyx_t_2}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 4+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
324:
+325: cdef float _set_predict_get_value(np.ndarray[np.float32_t, ndim=2] goals_2D,
static float __pyx_f_12utils_cython__set_predict_get_value(PyArrayObject *__pyx_v_goals_2D, PyArrayObject *__pyx_v_scores, PyArrayObject *__pyx_v_selected_points, PyObject *__pyx_v_kwargs) { int __pyx_v_n; PyArrayObject *__pyx_v_point = 0; float __pyx_v_MRratio; float __pyx_v_value; float __pyx_v_x; float __pyx_v_y; float __pyx_v_sum; float __pyx_v_minFDE; float __pyx_v_t_float; float __pyx_v_miss_error; float __pyx_v_stride; float __pyx_v_s_x; float __pyx_v_s_y; int __pyx_v_i; int __pyx_v_j; int __pyx_v_cnt; int __pyx_v_t_int; int __pyx_v_cnt_len; int __pyx_v_a; int __pyx_v_b; __Pyx_LocalBuf_ND __pyx_pybuffernd_goals_2D; __Pyx_Buffer __pyx_pybuffer_goals_2D; __Pyx_LocalBuf_ND __pyx_pybuffernd_point; __Pyx_Buffer __pyx_pybuffer_point; __Pyx_LocalBuf_ND __pyx_pybuffernd_scores; __Pyx_Buffer __pyx_pybuffer_scores; __Pyx_LocalBuf_ND __pyx_pybuffernd_selected_points; __Pyx_Buffer __pyx_pybuffer_selected_points; float __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_set_predict_get_value", 0); __pyx_pybuffer_point.pybuffer.buf = NULL; __pyx_pybuffer_point.refcount = 0; __pyx_pybuffernd_point.data = NULL; __pyx_pybuffernd_point.rcbuffer = &__pyx_pybuffer_point; __pyx_pybuffer_goals_2D.pybuffer.buf = NULL; __pyx_pybuffer_goals_2D.refcount = 0; __pyx_pybuffernd_goals_2D.data = NULL; __pyx_pybuffernd_goals_2D.rcbuffer = &__pyx_pybuffer_goals_2D; __pyx_pybuffer_scores.pybuffer.buf = NULL; __pyx_pybuffer_scores.refcount = 0; __pyx_pybuffernd_scores.data = NULL; __pyx_pybuffernd_scores.rcbuffer = &__pyx_pybuffer_scores; __pyx_pybuffer_selected_points.pybuffer.buf = NULL; __pyx_pybuffer_selected_points.refcount = 0; __pyx_pybuffernd_selected_points.data = NULL; __pyx_pybuffernd_selected_points.rcbuffer = &__pyx_pybuffer_selected_points; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer, (PyObject*)__pyx_v_goals_2D, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 325, __pyx_L1_error) } __pyx_pybuffernd_goals_2D.diminfo[0].strides = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_goals_2D.diminfo[0].shape = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_goals_2D.diminfo[1].strides = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_goals_2D.diminfo[1].shape = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_scores.rcbuffer->pybuffer, (PyObject*)__pyx_v_scores, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 325, __pyx_L1_error) } __pyx_pybuffernd_scores.diminfo[0].strides = __pyx_pybuffernd_scores.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_scores.diminfo[0].shape = __pyx_pybuffernd_scores.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer, (PyObject*)__pyx_v_selected_points, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 325, __pyx_L1_error) } __pyx_pybuffernd_selected_points.diminfo[0].strides = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_selected_points.diminfo[0].shape = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_selected_points.diminfo[1].strides = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_selected_points.diminfo[1].shape = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.shape[1]; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_scores.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython._set_predict_get_value", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_point.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_scores.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_point); __Pyx_RefNannyFinishContext(); return __pyx_r; }
326: np.ndarray[np.float32_t, ndim=1] scores,
327: np.ndarray[np.float32_t, ndim=2] selected_points,
328: kwargs):
329: cdef:
+330: int n = goals_2D.shape[0]
__pyx_t_1 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_goals_2D)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 330, __pyx_L1_error)
__pyx_v_n = (__pyx_t_1[0]);
+331: np.ndarray[np.float32_t, ndim=1] point = np.zeros(2, dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __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, 331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 331, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__9, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 331, __pyx_L1_error) __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_point.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_point = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_point.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 331, __pyx_L1_error) } else {__pyx_pybuffernd_point.diminfo[0].strides = __pyx_pybuffernd_point.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_point.diminfo[0].shape = __pyx_pybuffernd_point.rcbuffer->pybuffer.shape[0]; } } __pyx_t_6 = 0; __pyx_v_point = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+332: float MRratio = 1.0
__pyx_v_MRratio = 1.0;
333:
+334: float value = 0.0, cnt_hit, x, y, sum, minFDE, t_float, miss_error, stride, s_x, s_y
__pyx_v_value = 0.0;
+335: int i, j, k, need, cnt, t_int, objective_int, cnt_len = 3, a, b
__pyx_v_cnt_len = 3;
336:
+337: if kwargs is not None and 'set_predict-MRratio' in kwargs:
__pyx_t_8 = (__pyx_v_kwargs != Py_None); if (__pyx_t_8) { } else { __pyx_t_7 = __pyx_t_8; goto __pyx_L4_bool_binop_done; } __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u_set_predict_MRratio, __pyx_v_kwargs, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 337, __pyx_L1_error) __pyx_t_7 = __pyx_t_8; __pyx_L4_bool_binop_done:; if (__pyx_t_7) { /* … */ }
+338: MRratio = float(kwargs['set_predict-MRratio'])
__pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_kwargs, __pyx_kp_u_set_predict_MRratio); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyObject_AsDouble(__pyx_t_5); if (unlikely(__pyx_t_9 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_MRratio = __pyx_t_9;
339:
+340: for i in range(n):
__pyx_t_10 = __pyx_v_n; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
+341: point[0], point[1] = goals_2D[i, 0], goals_2D[i, 1]
__pyx_t_13 = __pyx_v_i; __pyx_t_14 = 0; __pyx_t_15 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_goals_2D.diminfo[1].strides)); __pyx_t_14 = __pyx_v_i; __pyx_t_13 = 1; __pyx_t_16 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_goals_2D.diminfo[0].strides, __pyx_t_13, __pyx_pybuffernd_goals_2D.diminfo[1].strides)); __pyx_t_13 = 0; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_point.diminfo[0].strides) = __pyx_t_15; __pyx_t_13 = 1; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_point.diminfo[0].strides) = __pyx_t_16;
342:
343: if True:
+344: sum = 0.0
__pyx_v_sum = 0.0;
+345: t_int = int(scores[i] * 1000)
__pyx_t_13 = __pyx_v_i; __pyx_v_t_int = ((int)((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_scores.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_scores.diminfo[0].strides)) * 1000.0));
346:
+347: if t_int > 10:
__pyx_t_7 = (__pyx_v_t_int > 10); if (__pyx_t_7) { /* … */ goto __pyx_L8; }
+348: cnt = cnt_len * 3
__pyx_v_cnt = (__pyx_v_cnt_len * 3);
+349: elif t_int > 5:
__pyx_t_7 = (__pyx_v_t_int > 5); if (__pyx_t_7) { /* … */ goto __pyx_L8; }
+350: cnt = cnt_len * 2
__pyx_v_cnt = (__pyx_v_cnt_len * 2);
351: else:
+352: cnt = cnt_len
/*else*/ { __pyx_v_cnt = __pyx_v_cnt_len; } __pyx_L8:;
353:
+354: t_float = cnt
__pyx_v_t_float = __pyx_v_cnt;
+355: stride = 1.0 / t_float
if (unlikely(__pyx_v_t_float == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 355, __pyx_L1_error) } __pyx_v_stride = (1.0 / ((double)__pyx_v_t_float));
356:
+357: s_x = point[0] - 0.5 + stride / 2.0
__pyx_t_13 = 0; __pyx_v_s_x = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_point.diminfo[0].strides)) - 0.5) + (((double)__pyx_v_stride) / 2.0));
+358: s_y = point[1] - 0.5 + stride / 2.0
__pyx_t_13 = 1; __pyx_v_s_y = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_point.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_point.diminfo[0].strides)) - 0.5) + (((double)__pyx_v_stride) / 2.0));
359:
+360: for a in range(cnt):
__pyx_t_17 = __pyx_v_cnt; __pyx_t_18 = __pyx_t_17; for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) { __pyx_v_a = __pyx_t_19;
+361: for b in range(cnt):
__pyx_t_20 = __pyx_v_cnt; __pyx_t_21 = __pyx_t_20; for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) { __pyx_v_b = __pyx_t_22;
362: # x = get_rand(point[0] - 0.5, point[0] + 0.5)
363: # y = get_rand(point[1] - 0.5, point[1] + 0.5)
+364: x = s_x + a * stride
__pyx_v_x = (__pyx_v_s_x + (__pyx_v_a * __pyx_v_stride));
+365: y = s_y + b * stride
__pyx_v_y = (__pyx_v_s_y + (__pyx_v_b * __pyx_v_stride));
+366: minFDE = 10000.0
__pyx_v_minFDE = 10000.0;
+367: miss_error = 1.0
__pyx_v_miss_error = 1.0;
368: # warning: miss_error is not 10.0
+369: for j in range(6):
for (__pyx_t_23 = 0; __pyx_t_23 < 6; __pyx_t_23+=1) { __pyx_v_j = __pyx_t_23;
+370: t_float = get_dis_point(x - selected_points[j, 0], y - selected_points[j, 1])
__pyx_t_13 = __pyx_v_j; __pyx_t_14 = 0; __pyx_t_24 = __pyx_v_j; __pyx_t_25 = 1; __pyx_t_16 = __pyx_f_12utils_cython_get_dis_point((__pyx_v_x - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_selected_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_selected_points.diminfo[1].strides))), (__pyx_v_y - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.buf, __pyx_t_24, __pyx_pybuffernd_selected_points.diminfo[0].strides, __pyx_t_25, __pyx_pybuffernd_selected_points.diminfo[1].strides)))); if (unlikely(__pyx_t_16 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 370, __pyx_L1_error) __pyx_v_t_float = __pyx_t_16;
+371: if t_float < minFDE:
__pyx_t_7 = (__pyx_v_t_float < __pyx_v_minFDE); if (__pyx_t_7) { /* … */ } }
+372: minFDE = t_float
__pyx_v_minFDE = __pyx_v_t_float;
+373: if minFDE <= 2.0:
__pyx_t_7 = (__pyx_v_minFDE <= 2.0); if (__pyx_t_7) { /* … */ }
+374: miss_error = 0.0
__pyx_v_miss_error = 0.0;
+375: sum += minFDE * (1.0 - MRratio) + miss_error * MRratio
__pyx_v_sum = (__pyx_v_sum + ((__pyx_v_minFDE * (1.0 - __pyx_v_MRratio)) + (__pyx_v_miss_error * __pyx_v_MRratio))); } }
+376: sum /= cnt * cnt
__pyx_t_17 = (__pyx_v_cnt * __pyx_v_cnt); if (unlikely(__pyx_t_17 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 376, __pyx_L1_error) } __pyx_v_sum = (__pyx_v_sum / __pyx_t_17);
+377: value += scores[i] * sum
__pyx_t_25 = __pyx_v_i; __pyx_v_value = (__pyx_v_value + ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_scores.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_scores.diminfo[0].strides)) * __pyx_v_sum)); }
378:
+379: return value
__pyx_r = __pyx_v_value; goto __pyx_L0;
380:
+381: def set_predict_get_value(goals_2D, scores, selected_points, kwargs=None):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_23set_predict_get_value(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_23set_predict_get_value = {"set_predict_get_value", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_23set_predict_get_value, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_23set_predict_get_value(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_goals_2D = 0; PyObject *__pyx_v_scores = 0; PyObject *__pyx_v_selected_points = 0; PyObject *__pyx_v_kwargs = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_predict_get_value (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_goals_2D,&__pyx_n_s_scores,&__pyx_n_s_selected_points,&__pyx_n_s_kwargs,0}; PyObject* values[4] = {0,0,0,0}; values[3] = ((PyObject *)((PyObject *)Py_None)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_goals_2D)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 381, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scores)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 381, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("set_predict_get_value", 0, 3, 4, 1); __PYX_ERR(0, 381, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_selected_points)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 381, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("set_predict_get_value", 0, 3, 4, 2); __PYX_ERR(0, 381, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs); if (value) { values[3] = value; kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 381, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_predict_get_value") < 0)) __PYX_ERR(0, 381, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_goals_2D = values[0]; __pyx_v_scores = values[1]; __pyx_v_selected_points = values[2]; __pyx_v_kwargs = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_predict_get_value", 0, 3, 4, __pyx_nargs); __PYX_ERR(0, 381, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython.set_predict_get_value", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_12utils_cython_22set_predict_get_value(__pyx_self, __pyx_v_goals_2D, __pyx_v_scores, __pyx_v_selected_points, __pyx_v_kwargs); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_22set_predict_get_value(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_goals_2D, PyObject *__pyx_v_scores, PyObject *__pyx_v_selected_points, PyObject *__pyx_v_kwargs) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_predict_get_value", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("utils_cython.set_predict_get_value", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__40 = PyTuple_Pack(4, __pyx_n_s_goals_2D, __pyx_n_s_scores, __pyx_n_s_selected_points, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40); __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_set_predict_get_value, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 381, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_23set_predict_get_value, 0, __pyx_n_s_set_predict_get_value, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__42); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_predict_get_value, __pyx_t_2) < 0) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_tuple__42 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__42); __Pyx_GIVEREF(__pyx_tuple__42);
+382: return _set_predict_get_value(goals_2D, scores, selected_points, kwargs)
__Pyx_XDECREF(__pyx_r); if (!(likely(((__pyx_v_goals_2D) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_goals_2D, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 382, __pyx_L1_error) if (!(likely(((__pyx_v_scores) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_scores, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 382, __pyx_L1_error) if (!(likely(((__pyx_v_selected_points) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_selected_points, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 382, __pyx_L1_error) __pyx_t_1 = __pyx_f_12utils_cython__set_predict_get_value(((PyArrayObject *)__pyx_v_goals_2D), ((PyArrayObject *)__pyx_v_scores), ((PyArrayObject *)__pyx_v_selected_points), __pyx_v_kwargs); if (unlikely(__pyx_t_1 == ((float)-1) && PyErr_Occurred())) __PYX_ERR(0, 382, __pyx_L1_error) __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
383:
+384: def _set_predict_next_step(np.ndarray[np.float32_t, ndim=2] goals_2D,
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_25_set_predict_next_step(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_25_set_predict_next_step = {"_set_predict_next_step", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_25_set_predict_next_step, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_25_set_predict_next_step(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyArrayObject *__pyx_v_goals_2D = 0; PyArrayObject *__pyx_v_scores = 0; PyArrayObject *__pyx_v_selected_points = 0; float __pyx_v_lr; PyObject *__pyx_v_kwargs = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_set_predict_next_step (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_goals_2D,&__pyx_n_s_scores,&__pyx_n_s_selected_points,&__pyx_n_s_lr,&__pyx_n_s_kwargs,0}; PyObject* values[5] = {0,0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_goals_2D)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 384, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scores)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 384, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_set_predict_next_step", 1, 5, 5, 1); __PYX_ERR(0, 384, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_selected_points)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 384, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_set_predict_next_step", 1, 5, 5, 2); __PYX_ERR(0, 384, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lr)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 384, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_set_predict_next_step", 1, 5, 5, 3); __PYX_ERR(0, 384, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 384, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_set_predict_next_step", 1, 5, 5, 4); __PYX_ERR(0, 384, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_set_predict_next_step") < 0)) __PYX_ERR(0, 384, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 5)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); } __pyx_v_goals_2D = ((PyArrayObject *)values[0]); __pyx_v_scores = ((PyArrayObject *)values[1]); __pyx_v_selected_points = ((PyArrayObject *)values[2]); __pyx_v_lr = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_lr == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 387, __pyx_L3_error) __pyx_v_kwargs = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_set_predict_next_step", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 384, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython._set_predict_next_step", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_goals_2D), __pyx_ptype_5numpy_ndarray, 1, "goals_2D", 0))) __PYX_ERR(0, 384, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scores), __pyx_ptype_5numpy_ndarray, 1, "scores", 0))) __PYX_ERR(0, 385, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selected_points), __pyx_ptype_5numpy_ndarray, 1, "selected_points", 0))) __PYX_ERR(0, 386, __pyx_L1_error) __pyx_r = __pyx_pf_12utils_cython_24_set_predict_next_step(__pyx_self, __pyx_v_goals_2D, __pyx_v_scores, __pyx_v_selected_points, __pyx_v_lr, __pyx_v_kwargs); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_24_set_predict_next_step(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_goals_2D, PyArrayObject *__pyx_v_scores, PyArrayObject *__pyx_v_selected_points, float __pyx_v_lr, PyObject *__pyx_v_kwargs) { CYTHON_UNUSED int __pyx_v_step; int __pyx_v_j; int __pyx_v_ok; int __pyx_v_num_step; float __pyx_v_nxt_expectation; float __pyx_v_best_expectation; PyArrayObject *__pyx_v_nxt_points = 0; PyArrayObject *__pyx_v_best_points = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_best_points; __Pyx_Buffer __pyx_pybuffer_best_points; __Pyx_LocalBuf_ND __pyx_pybuffernd_goals_2D; __Pyx_Buffer __pyx_pybuffer_goals_2D; __Pyx_LocalBuf_ND __pyx_pybuffernd_nxt_points; __Pyx_Buffer __pyx_pybuffer_nxt_points; __Pyx_LocalBuf_ND __pyx_pybuffernd_scores; __Pyx_Buffer __pyx_pybuffer_scores; __Pyx_LocalBuf_ND __pyx_pybuffernd_selected_points; __Pyx_Buffer __pyx_pybuffer_selected_points; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_set_predict_next_step", 0); __pyx_pybuffer_nxt_points.pybuffer.buf = NULL; __pyx_pybuffer_nxt_points.refcount = 0; __pyx_pybuffernd_nxt_points.data = NULL; __pyx_pybuffernd_nxt_points.rcbuffer = &__pyx_pybuffer_nxt_points; __pyx_pybuffer_best_points.pybuffer.buf = NULL; __pyx_pybuffer_best_points.refcount = 0; __pyx_pybuffernd_best_points.data = NULL; __pyx_pybuffernd_best_points.rcbuffer = &__pyx_pybuffer_best_points; __pyx_pybuffer_goals_2D.pybuffer.buf = NULL; __pyx_pybuffer_goals_2D.refcount = 0; __pyx_pybuffernd_goals_2D.data = NULL; __pyx_pybuffernd_goals_2D.rcbuffer = &__pyx_pybuffer_goals_2D; __pyx_pybuffer_scores.pybuffer.buf = NULL; __pyx_pybuffer_scores.refcount = 0; __pyx_pybuffernd_scores.data = NULL; __pyx_pybuffernd_scores.rcbuffer = &__pyx_pybuffer_scores; __pyx_pybuffer_selected_points.pybuffer.buf = NULL; __pyx_pybuffer_selected_points.refcount = 0; __pyx_pybuffernd_selected_points.data = NULL; __pyx_pybuffernd_selected_points.rcbuffer = &__pyx_pybuffer_selected_points; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer, (PyObject*)__pyx_v_goals_2D, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 384, __pyx_L1_error) } __pyx_pybuffernd_goals_2D.diminfo[0].strides = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_goals_2D.diminfo[0].shape = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_goals_2D.diminfo[1].strides = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_goals_2D.diminfo[1].shape = __pyx_pybuffernd_goals_2D.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_scores.rcbuffer->pybuffer, (PyObject*)__pyx_v_scores, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 384, __pyx_L1_error) } __pyx_pybuffernd_scores.diminfo[0].strides = __pyx_pybuffernd_scores.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_scores.diminfo[0].shape = __pyx_pybuffernd_scores.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer, (PyObject*)__pyx_v_selected_points, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 384, __pyx_L1_error) } __pyx_pybuffernd_selected_points.diminfo[0].strides = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_selected_points.diminfo[0].shape = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_selected_points.diminfo[1].strides = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_selected_points.diminfo[1].shape = __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.shape[1]; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_best_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_nxt_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_scores.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("utils_cython._set_predict_next_step", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_best_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_goals_2D.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_nxt_points.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_scores.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_selected_points.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_nxt_points); __Pyx_XDECREF((PyObject *)__pyx_v_best_points); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__43 = PyTuple_Pack(13, __pyx_n_s_goals_2D, __pyx_n_s_scores, __pyx_n_s_selected_points, __pyx_n_s_lr, __pyx_n_s_kwargs, __pyx_n_s_step, __pyx_n_s_j, __pyx_n_s_ok, __pyx_n_s_num_step, __pyx_n_s_nxt_expectation, __pyx_n_s_best_expectation, __pyx_n_s_nxt_points, __pyx_n_s_best_points); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 384, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__43); __Pyx_GIVEREF(__pyx_tuple__43); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_25_set_predict_next_step, 0, __pyx_n_s_set_predict_next_step, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_predict_next_step, __pyx_t_2) < 0) __PYX_ERR(0, 384, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_set_predict_next_step, 384, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 384, __pyx_L1_error)
385: np.ndarray[np.float32_t, ndim=1] scores,
386: np.ndarray[np.float32_t, ndim=2] selected_points,
387: float lr, kwargs):
388: cdef:
+389: int step, j, ok, num_step = 100
__pyx_v_num_step = 0x64;
+390: float nxt_expectation, best_expectation = _set_predict_get_value(goals_2D, scores, selected_points, kwargs)
__pyx_t_1 = __pyx_f_12utils_cython__set_predict_get_value(((PyArrayObject *)__pyx_v_goals_2D), ((PyArrayObject *)__pyx_v_scores), ((PyArrayObject *)__pyx_v_selected_points), __pyx_v_kwargs); if (unlikely(__pyx_t_1 == ((float)-1) && PyErr_Occurred())) __PYX_ERR(0, 390, __pyx_L1_error) __pyx_v_best_expectation = __pyx_t_1;
+391: np.ndarray[np.float32_t, ndim = 2] nxt_points = np.zeros((6, 2), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __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, 391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 391, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 391, __pyx_L1_error) __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_nxt_points.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_nxt_points = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 391, __pyx_L1_error) } else {__pyx_pybuffernd_nxt_points.diminfo[0].strides = __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_nxt_points.diminfo[0].shape = __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_nxt_points.diminfo[1].strides = __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_nxt_points.diminfo[1].shape = __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.shape[1]; } } __pyx_t_6 = 0; __pyx_v_nxt_points = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+392: np.ndarray[np.float32_t, ndim = 2] best_points = selected_points.copy()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_selected_points), __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_7 = 1; } } { PyObject *__pyx_callargs[1] = {__pyx_t_3, }; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 392, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_best_points.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_best_points = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_best_points.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 392, __pyx_L1_error) } else {__pyx_pybuffernd_best_points.diminfo[0].strides = __pyx_pybuffernd_best_points.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_best_points.diminfo[0].shape = __pyx_pybuffernd_best_points.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_best_points.diminfo[1].strides = __pyx_pybuffernd_best_points.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_best_points.diminfo[1].shape = __pyx_pybuffernd_best_points.rcbuffer->pybuffer.shape[1]; } } __pyx_t_8 = 0; __pyx_v_best_points = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
393:
+394: if kwargs is not None and 'dynamic_label-double' in kwargs:
__pyx_t_10 = (__pyx_v_kwargs != Py_None); if (__pyx_t_10) { } else { __pyx_t_9 = __pyx_t_10; goto __pyx_L4_bool_binop_done; } __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u_dynamic_label_double, __pyx_v_kwargs, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 394, __pyx_L1_error) __pyx_t_9 = __pyx_t_10; __pyx_L4_bool_binop_done:; if (__pyx_t_9) { /* … */ }
+395: num_step = 200
__pyx_v_num_step = 0xC8;
396:
+397: for step in range(num_step):
__pyx_t_7 = __pyx_v_num_step; __pyx_t_11 = __pyx_t_7; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_step = __pyx_t_12;
+398: for j in range(6):
for (__pyx_t_13 = 0; __pyx_t_13 < 6; __pyx_t_13+=1) { __pyx_v_j = __pyx_t_13;
+399: nxt_points[j, 0] = selected_points[j, 0]
__pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; __pyx_t_16 = __pyx_v_j; __pyx_t_17 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_nxt_points.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_selected_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_selected_points.diminfo[1].strides));
+400: nxt_points[j, 1] = selected_points[j, 1]
__pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; __pyx_t_17 = __pyx_v_j; __pyx_t_16 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_nxt_points.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_selected_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_selected_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_selected_points.diminfo[1].strides)); }
401:
402: if True:
+403: while True:
while (1) {
+404: ok = 0
__pyx_v_ok = 0;
+405: for j in range(6):
for (__pyx_t_13 = 0; __pyx_t_13 < 6; __pyx_t_13+=1) { __pyx_v_j = __pyx_t_13;
+406: if get_rand(0.0, 1.0) < 0.5:
__pyx_t_18 = __pyx_f_12utils_cython_get_rand(0.0, 1.0); if (unlikely(__pyx_t_18 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L1_error) __pyx_t_9 = (__pyx_t_18 < 0.5); if (__pyx_t_9) { /* … */ } }
+407: nxt_points[j, 0] += get_rand(-lr, lr)
__pyx_t_18 = __pyx_f_12utils_cython_get_rand((-__pyx_v_lr), __pyx_v_lr); if (unlikely(__pyx_t_18 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 407, __pyx_L1_error) __pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[1].strides) += __pyx_t_18;
+408: nxt_points[j, 1] += get_rand(-lr, lr)
__pyx_t_18 = __pyx_f_12utils_cython_get_rand((-__pyx_v_lr), __pyx_v_lr); if (unlikely(__pyx_t_18 == ((__pyx_t_5numpy_float32_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 408, __pyx_L1_error) __pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[1].strides) += __pyx_t_18;
+409: ok = 1
__pyx_v_ok = 1;
+410: if ok:
__pyx_t_9 = (__pyx_v_ok != 0); if (__pyx_t_9) { /* … */ } } __pyx_L11_break:;
+411: break
goto __pyx_L11_break;
412:
+413: nxt_expectation = _set_predict_get_value(goals_2D, scores, nxt_points, kwargs)
__pyx_t_1 = __pyx_f_12utils_cython__set_predict_get_value(((PyArrayObject *)__pyx_v_goals_2D), ((PyArrayObject *)__pyx_v_scores), ((PyArrayObject *)__pyx_v_nxt_points), __pyx_v_kwargs); if (unlikely(__pyx_t_1 == ((float)-1) && PyErr_Occurred())) __PYX_ERR(0, 413, __pyx_L1_error) __pyx_v_nxt_expectation = __pyx_t_1;
+414: if nxt_expectation < best_expectation:
__pyx_t_9 = (__pyx_v_nxt_expectation < __pyx_v_best_expectation); if (__pyx_t_9) { /* … */ } }
+415: best_expectation = nxt_expectation
__pyx_v_best_expectation = __pyx_v_nxt_expectation;
+416: for j in range(6):
for (__pyx_t_13 = 0; __pyx_t_13 < 6; __pyx_t_13+=1) { __pyx_v_j = __pyx_t_13;
+417: best_points[j, 0], best_points[j, 1] = nxt_points[j, 0], nxt_points[j, 1]
__pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; __pyx_t_18 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[1].strides)); __pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; __pyx_t_19 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_nxt_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_nxt_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_nxt_points.diminfo[1].strides)); __pyx_t_14 = __pyx_v_j; __pyx_t_15 = 0; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_best_points.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_best_points.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_best_points.diminfo[1].strides) = __pyx_t_18; __pyx_t_15 = __pyx_v_j; __pyx_t_14 = 1; *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_best_points.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_best_points.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_best_points.diminfo[1].strides) = __pyx_t_19; }
418:
+419: return nxt_expectation, best_points
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_nxt_expectation); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __Pyx_INCREF((PyObject *)__pyx_v_best_points); __Pyx_GIVEREF((PyObject *)__pyx_v_best_points); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_best_points)); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
420:
+421: def set_predict_next_step(goals_2D, scores, selected_points, lr=1.0, kwargs=None):
/* Python wrapper */ static PyObject *__pyx_pw_12utils_cython_27set_predict_next_step(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_12utils_cython_27set_predict_next_step = {"set_predict_next_step", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_12utils_cython_27set_predict_next_step, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_12utils_cython_27set_predict_next_step(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_goals_2D = 0; PyObject *__pyx_v_scores = 0; PyObject *__pyx_v_selected_points = 0; PyObject *__pyx_v_lr = 0; PyObject *__pyx_v_kwargs = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_predict_next_step (wrapper)", 0); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_goals_2D,&__pyx_n_s_scores,&__pyx_n_s_selected_points,&__pyx_n_s_lr,&__pyx_n_s_kwargs,0}; PyObject* values[5] = {0,0,0,0,0}; values[3] = ((PyObject *)((PyObject*)__pyx_float_1_0)); values[4] = ((PyObject *)((PyObject *)Py_None)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_goals_2D)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 421, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scores)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 421, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("set_predict_next_step", 0, 3, 5, 1); __PYX_ERR(0, 421, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_selected_points)) != 0)) kw_args--; else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 421, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("set_predict_next_step", 0, 3, 5, 2); __PYX_ERR(0, 421, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lr); if (value) { values[3] = value; kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 421, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs); if (value) { values[4] = value; kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 421, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_predict_next_step") < 0)) __PYX_ERR(0, 421, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_goals_2D = values[0]; __pyx_v_scores = values[1]; __pyx_v_selected_points = values[2]; __pyx_v_lr = values[3]; __pyx_v_kwargs = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_predict_next_step", 0, 3, 5, __pyx_nargs); __PYX_ERR(0, 421, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("utils_cython.set_predict_next_step", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_12utils_cython_26set_predict_next_step(__pyx_self, __pyx_v_goals_2D, __pyx_v_scores, __pyx_v_selected_points, __pyx_v_lr, __pyx_v_kwargs); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_12utils_cython_26set_predict_next_step(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_goals_2D, PyObject *__pyx_v_scores, PyObject *__pyx_v_selected_points, PyObject *__pyx_v_lr, PyObject *__pyx_v_kwargs) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_predict_next_step", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("utils_cython.set_predict_next_step", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__45 = PyTuple_Pack(5, __pyx_n_s_goals_2D, __pyx_n_s_scores, __pyx_n_s_selected_points, __pyx_n_s_lr, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__45); __Pyx_GIVEREF(__pyx_tuple__45); __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_utils_cython_pyx, __pyx_n_s_set_predict_next_step_2, 421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 421, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_12utils_cython_27set_predict_next_step, 0, __pyx_n_s_set_predict_next_step_2, NULL, __pyx_n_s_utils_cython, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__47); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_predict_next_step_2, __pyx_t_2) < 0) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+422: return _set_predict_next_step(goals_2D, scores, selected_points, lr, kwargs)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_set_predict_next_step); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } { PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_v_goals_2D, __pyx_v_scores, __pyx_v_selected_points, __pyx_v_lr, __pyx_v_kwargs}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;