Generated by Cython 0.15.1+ on Fri Jan 20 23:22:15 2012

Raw output: relabel.c

 1: 
 2: __author__ = "Jerome Kieffer"
  /* "relabel.pyx":2
 * 
 * __author__ = "Jerome Kieffer"             # <<<<<<<<<<<<<<
 * __contact__ = "Jerome.kieffer@esrf.fr"
 * __date__ = "20110923"
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____author__, ((PyObject *)__pyx_kp_s_16)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "relabel.pyx":2
 * 
 * __author__ = "Jerome Kieffer"             # <<<<<<<<<<<<<<
 * __contact__ = "Jerome.kieffer@esrf.fr"
 * __date__ = "20110923"
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
 3: __contact__ = "Jerome.kieffer@esrf.fr"
  /* "relabel.pyx":3
 * 
 * __author__ = "Jerome Kieffer"
 * __contact__ = "Jerome.kieffer@esrf.fr"             # <<<<<<<<<<<<<<
 * __date__ = "20110923"
 * __status__ = "stable"
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____contact__, ((PyObject *)__pyx_kp_s_17)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 4: __date__ = "20110923"
  /* "relabel.pyx":4
 * __author__ = "Jerome Kieffer"
 * __contact__ = "Jerome.kieffer@esrf.fr"
 * __date__ = "20110923"             # <<<<<<<<<<<<<<
 * __status__ = "stable"
 * __license__ = "GPLv3+"
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____date__, ((PyObject *)__pyx_kp_s__20110923)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 5: __status__ = "stable"
  /* "relabel.pyx":5
 * __contact__ = "Jerome.kieffer@esrf.fr"
 * __date__ = "20110923"
 * __status__ = "stable"             # <<<<<<<<<<<<<<
 * __license__ = "GPLv3+"
 * import cython
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____status__, ((PyObject *)__pyx_n_s__stable)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 6: __license__ = "GPLv3+"
  /* "relabel.pyx":6
 * __date__ = "20110923"
 * __status__ = "stable"
 * __license__ = "GPLv3+"             # <<<<<<<<<<<<<<
 * import cython
 * cimport numpy
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____license__, ((PyObject *)__pyx_kp_s_18)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 7: import cython
 8: cimport numpy
 9: import numpy
  /* "relabel.pyx":9
 * import cython
 * cimport numpy
 * import numpy             # <<<<<<<<<<<<<<
 * 
 * ctypedef numpy.int64_t DTYPE_int64_t
 */
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 10: 
 11: ctypedef numpy.int64_t DTYPE_int64_t
/* "relabel.pyx":11
 * import numpy
 * 
 * ctypedef numpy.int64_t DTYPE_int64_t             # <<<<<<<<<<<<<<
 * ctypedef numpy.float64_t DTYPE_float64_t
 * @cython.boundscheck(False)
 */
typedef __pyx_t_5numpy_int64_t __pyx_t_7relabel_DTYPE_int64_t;
 12: ctypedef numpy.float64_t DTYPE_float64_t
 13: @cython.boundscheck(False)
 14: @cython.wraparound(False)
 15: def countThem(numpy.ndarray label not None, \
/* "relabel.pyx":15
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def countThem(numpy.ndarray label not None, \             # <<<<<<<<<<<<<<
 *               numpy.ndarray data not None, \
 *               numpy.ndarray blured not None):
 */

static PyObject *__pyx_pf_7relabel_countThem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_7relabel_countThem[] = "\n    @param label: 2D array containing labeled zones\n    @param data: 2D array containing the raw data\n    @param blured: 2D array containing the blured data\n    @return: 2D arrays containing: \n        * count pixels in labelled zone: label == index).sum() \n        * max of data in that zone:      data[label == index].max()\n        * max of blured in that zone:    blured[label == index].max()\n        * data-blured where data is max.   \n    ";
static PyMethodDef __pyx_mdef_7relabel_countThem = {__Pyx_NAMESTR("countThem"), (PyCFunction)__pyx_pf_7relabel_countThem, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_7relabel_countThem)};
static PyObject *__pyx_pf_7relabel_countThem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_label = 0;
  PyArrayObject *__pyx_v_data = 0;
  PyArrayObject *__pyx_v_blured = 0;
  int __pyx_v_maxLabel;
  PyArrayObject *__pyx_v_clabel = 0;
  PyArrayObject *__pyx_v_cdata = 0;
  PyArrayObject *__pyx_v_cblured = 0;
  PyArrayObject *__pyx_v_count = 0;
  PyArrayObject *__pyx_v_maxData = 0;
  PyArrayObject *__pyx_v_maxBlured = 0;
  PyArrayObject *__pyx_v_maxDelta = 0;
  long __pyx_v_s;
  long __pyx_v_i;
  long __pyx_v_idx;
  double __pyx_v_d;
  double __pyx_v_b;
  Py_buffer __pyx_bstruct_count;
  Py_ssize_t __pyx_bstride_0_count = 0;
  Py_ssize_t __pyx_bshape_0_count = 0;
  Py_buffer __pyx_bstruct_maxData;
  Py_ssize_t __pyx_bstride_0_maxData = 0;
  Py_ssize_t __pyx_bshape_0_maxData = 0;
  Py_buffer __pyx_bstruct_maxDelta;
  Py_ssize_t __pyx_bstride_0_maxDelta = 0;
  Py_ssize_t __pyx_bshape_0_maxDelta = 0;
  Py_buffer __pyx_bstruct_maxBlured;
  Py_ssize_t __pyx_bstride_0_maxBlured = 0;
  Py_ssize_t __pyx_bshape_0_maxBlured = 0;
  Py_buffer __pyx_bstruct_cdata;
  Py_ssize_t __pyx_bstride_0_cdata = 0;
  Py_ssize_t __pyx_bshape_0_cdata = 0;
  Py_buffer __pyx_bstruct_cblured;
  Py_ssize_t __pyx_bstride_0_cblured = 0;
  Py_ssize_t __pyx_bshape_0_cblured = 0;
  Py_buffer __pyx_bstruct_clabel;
  Py_ssize_t __pyx_bstride_0_clabel = 0;
  Py_ssize_t __pyx_bshape_0_clabel = 0;
  PyObject *__pyx_r = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__label,&__pyx_n_s__data,&__pyx_n_s__blured,0};
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("countThem");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__label);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blured);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "countThem") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_label = ((PyArrayObject *)values[0]);
    __pyx_v_data = ((PyArrayObject *)values[1]);
    __pyx_v_blured = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("relabel.countThem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_clabel.buf = NULL;
  __pyx_bstruct_cdata.buf = NULL;
  __pyx_bstruct_cblured.buf = NULL;
  __pyx_bstruct_count.buf = NULL;
  __pyx_bstruct_maxData.buf = NULL;
  __pyx_bstruct_maxBlured.buf = NULL;
  __pyx_bstruct_maxDelta.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), __pyx_ptype_5numpy_ndarray, 0, "label", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 0, "data", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_blured), __pyx_ptype_5numpy_ndarray, 0, "blured", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "relabel.pyx":15
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def countThem(numpy.ndarray label not None, \             # <<<<<<<<<<<<<<
 *               numpy.ndarray data not None, \
 *               numpy.ndarray blured not None):
 */
  __pyx_k_tuple_19 = PyTuple_New(16); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_19));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__label));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 0, ((PyObject *)__pyx_n_s__label));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__label));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__data));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 1, ((PyObject *)__pyx_n_s__data));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__data));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__blured));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 2, ((PyObject *)__pyx_n_s__blured));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__blured));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__maxLabel));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 3, ((PyObject *)__pyx_n_s__maxLabel));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__maxLabel));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__clabel));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 4, ((PyObject *)__pyx_n_s__clabel));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__clabel));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__cdata));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 5, ((PyObject *)__pyx_n_s__cdata));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdata));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__cblured));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 6, ((PyObject *)__pyx_n_s__cblured));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cblured));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__count));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 7, ((PyObject *)__pyx_n_s__count));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__count));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__maxData));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 8, ((PyObject *)__pyx_n_s__maxData));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__maxData));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__maxBlured));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 9, ((PyObject *)__pyx_n_s__maxBlured));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__maxBlured));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__maxDelta));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 10, ((PyObject *)__pyx_n_s__maxDelta));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__maxDelta));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__s));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 11, ((PyObject *)__pyx_n_s__s));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__s));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__i));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 12, ((PyObject *)__pyx_n_s__i));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__idx));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 13, ((PyObject *)__pyx_n_s__idx));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__d));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 14, ((PyObject *)__pyx_n_s__d));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__d));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__b));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 15, ((PyObject *)__pyx_n_s__b));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));

  /* "relabel.pyx":15
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def countThem(numpy.ndarray label not None, \             # <<<<<<<<<<<<<<
 *               numpy.ndarray data not None, \
 *               numpy.ndarray blured not None):
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7relabel_countThem, NULL, __pyx_n_s__relabel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__countThem, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 16:               numpy.ndarray data not None, \
 17:               numpy.ndarray blured not None):
 18:     """
 19:     @param label: 2D array containing labeled zones
 20:     @param data: 2D array containing the raw data
 21:     @param blured: 2D array containing the blured data
 22:     @return: 2D arrays containing:
 23:         * count pixels in labelled zone: label == index).sum()
 24:         * max of data in that zone:      data[label == index].max()
 25:         * max of blured in that zone:    blured[label == index].max()
 26:         * data-blured where data is max.
 27:     """
 28:     cdef int maxLabel = label.max()
  /* "relabel.pyx":28
 *         * data-blured where data is max.
 *     """
 *     cdef int maxLabel = label.max()             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] clabel = label.astype("int64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_label), __pyx_n_s__max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_maxLabel = __pyx_t_3;
 29:     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] clabel = label.astype("int64").flatten()
  /* "relabel.pyx":29
 *     """
 *     cdef int maxLabel = label.max()
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] clabel = label.astype("int64").flatten()             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_label), __pyx_n_s__astype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_1), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__flatten); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_clabel, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_7relabel_DTYPE_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_clabel = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_clabel.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_clabel = __pyx_bstruct_clabel.strides[0];
      __pyx_bshape_0_clabel = __pyx_bstruct_clabel.shape[0];
    }
  }
  __pyx_t_4 = 0;
  __pyx_v_clabel = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "relabel.pyx":29
 *     """
 *     cdef int maxLabel = label.max()
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] clabel = label.astype("int64").flatten()             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()
 */
  __pyx_k_tuple_1 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_1));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__int64));
  PyTuple_SET_ITEM(__pyx_k_tuple_1, 0, ((PyObject *)__pyx_n_s__int64));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__int64));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1));
 30:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()
  /* "relabel.pyx":30
 *     cdef int maxLabel = label.max()
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] clabel = label.astype("int64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.int64)
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_data), __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__flatten); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = ((PyArrayObject *)__pyx_t_2);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_cdata, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_7relabel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_cdata = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_cdata.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_cdata = __pyx_bstruct_cdata.strides[0];
      __pyx_bshape_0_cdata = __pyx_bstruct_cdata.shape[0];
    }
  }
  __pyx_t_5 = 0;
  __pyx_v_cdata = ((PyArrayObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "relabel.pyx":30
 *     cdef int maxLabel = label.max()
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] clabel = label.astype("int64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.int64)
 */
  __pyx_k_tuple_2 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_2));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__float64));
  PyTuple_SET_ITEM(__pyx_k_tuple_2, 0, ((PyObject *)__pyx_n_s__float64));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__float64));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
 31:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()
  /* "relabel.pyx":31
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] clabel = label.astype("int64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.int64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_blured), __pyx_n_s__astype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__flatten); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_cblured, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_7relabel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_cblured = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_cblured.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_cblured = __pyx_bstruct_cblured.strides[0];
      __pyx_bshape_0_cblured = __pyx_bstruct_cblured.shape[0];
    }
  }
  __pyx_t_6 = 0;
  __pyx_v_cblured = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "relabel.pyx":31
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] clabel = label.astype("int64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.int64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 */
  __pyx_k_tuple_3 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_3));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__float64));
  PyTuple_SET_ITEM(__pyx_k_tuple_3, 0, ((PyObject *)__pyx_n_s__float64));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__float64));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
 32:     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.int64)
  /* "relabel.pyx":32
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = data.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.int64)             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromLong((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__int64); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_9);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_count, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_7relabel_DTYPE_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_count = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_count.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_count = __pyx_bstruct_count.strides[0];
      __pyx_bshape_0_count = __pyx_bstruct_count.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_count = ((PyArrayObject *)__pyx_t_9);
  __pyx_t_9 = 0;
 33:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
  /* "relabel.pyx":33
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cblured = blured.astype("float64").flatten()
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.int64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxDelta = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 */
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = PyInt_FromLong((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float64); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_maxData, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_7relabel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_maxData = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_maxData.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_maxData = __pyx_bstruct_maxData.strides[0];
      __pyx_bshape_0_maxData = __pyx_bstruct_maxData.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_maxData = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
 34:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
  /* "relabel.pyx":34
 *     cdef numpy.ndarray[DTYPE_int64_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.int64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxDelta = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 *     cdef long s , i, idx
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__zeros); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyInt_FromLong((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float64); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_8, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_9, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_2);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_maxBlured, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_7relabel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_maxBlured = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_maxBlured.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_maxBlured = __pyx_bstruct_maxBlured.strides[0];
      __pyx_bshape_0_maxBlured = __pyx_bstruct_maxBlured.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_maxBlured = ((PyArrayObject *)__pyx_t_2);
  __pyx_t_2 = 0;
 35:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxDelta = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
  /* "relabel.pyx":35
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float64)
 *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] maxDelta = numpy.zeros(maxLabel + 1, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *     cdef long s , i, idx
 *     cdef double d, b
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromLong((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyEval_CallObjectWithKeywords(__pyx_t_8, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_maxDelta, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_7relabel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_maxDelta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_maxDelta.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_maxDelta = __pyx_bstruct_maxDelta.strides[0];
      __pyx_bshape_0_maxDelta = __pyx_bstruct_maxDelta.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_maxDelta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
 36:     cdef long s , i, idx
 37:     cdef double d, b
 38:     s = < long > label.size
  /* "relabel.pyx":38
 *     cdef long s , i, idx
 *     cdef double d, b
 *     s = < long > label.size             # <<<<<<<<<<<<<<
 *     assert s == cdata.size
 *     assert s == cblured.size
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_label), __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_14 = __Pyx_PyInt_AsLong(__pyx_t_1); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_s = ((long)__pyx_t_14);
 39:     assert s == cdata.size
  /* "relabel.pyx":39
 *     cdef double d, b
 *     s = < long > label.size
 *     assert s == cdata.size             # <<<<<<<<<<<<<<
 *     assert s == cblured.size
 *     for i in range(s):
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_1 = PyInt_FromLong(__pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_cdata), __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(!__pyx_t_15)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 40:     assert s == cblured.size
  /* "relabel.pyx":40
 *     s = < long > label.size
 *     assert s == cdata.size
 *     assert s == cblured.size             # <<<<<<<<<<<<<<
 *     for i in range(s):
 *         idx = < long > clabel[i]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_7 = PyInt_FromLong(__pyx_v_s); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_cblured), __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_15)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 41:     for i in range(s):
  /* "relabel.pyx":41
 *     assert s == cdata.size
 *     assert s == cblured.size
 *     for i in range(s):             # <<<<<<<<<<<<<<
 *         idx = < long > clabel[i]
 *         d = < double > cdata[i]
 */
  __pyx_t_14 = __pyx_v_s;
  for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_14; __pyx_t_16+=1) {
    __pyx_v_i = __pyx_t_16;
 42:         idx = < long > clabel[i]
    /* "relabel.pyx":42
 *     assert s == cblured.size
 *     for i in range(s):
 *         idx = < long > clabel[i]             # <<<<<<<<<<<<<<
 *         d = < double > cdata[i]
 *         b = < double > cblured[i]
 */
    __pyx_t_17 = __pyx_v_i;
    __pyx_v_idx = ((long)(*__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_int64_t *, __pyx_bstruct_clabel.buf, __pyx_t_17, __pyx_bstride_0_clabel)));
 43:         d = < double > cdata[i]
    /* "relabel.pyx":43
 *     for i in range(s):
 *         idx = < long > clabel[i]
 *         d = < double > cdata[i]             # <<<<<<<<<<<<<<
 *         b = < double > cblured[i]
 *         count[idx] += 1
 */
    __pyx_t_18 = __pyx_v_i;
    __pyx_v_d = ((double)(*__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_float64_t *, __pyx_bstruct_cdata.buf, __pyx_t_18, __pyx_bstride_0_cdata)));
 44:         b = < double > cblured[i]
    /* "relabel.pyx":44
 *         idx = < long > clabel[i]
 *         d = < double > cdata[i]
 *         b = < double > cblured[i]             # <<<<<<<<<<<<<<
 *         count[idx] += 1
 *         if d > maxData[idx]:
 */
    __pyx_t_19 = __pyx_v_i;
    __pyx_v_b = ((double)(*__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_float64_t *, __pyx_bstruct_cblured.buf, __pyx_t_19, __pyx_bstride_0_cblured)));
 45:         count[idx] += 1
    /* "relabel.pyx":45
 *         d = < double > cdata[i]
 *         b = < double > cblured[i]
 *         count[idx] += 1             # <<<<<<<<<<<<<<
 *         if d > maxData[idx]:
 *             maxData[idx] = d
 */
    __pyx_t_20 = __pyx_v_idx;
    *__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_int64_t *, __pyx_bstruct_count.buf, __pyx_t_20, __pyx_bstride_0_count) += 1;
 46:         if d > maxData[idx]:
    /* "relabel.pyx":46
 *         b = < double > cblured[i]
 *         count[idx] += 1
 *         if d > maxData[idx]:             # <<<<<<<<<<<<<<
 *             maxData[idx] = d
 *             maxDelta[idx] = d - b
 */
    __pyx_t_21 = __pyx_v_idx;
    __pyx_t_15 = (__pyx_v_d > (*__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_float64_t *, __pyx_bstruct_maxData.buf, __pyx_t_21, __pyx_bstride_0_maxData)));
    if (__pyx_t_15) {
 47:             maxData[idx] = d
      /* "relabel.pyx":47
 *         count[idx] += 1
 *         if d > maxData[idx]:
 *             maxData[idx] = d             # <<<<<<<<<<<<<<
 *             maxDelta[idx] = d - b
 *         if b > maxBlured[idx]:
 */
      __pyx_t_22 = __pyx_v_idx;
      *__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_float64_t *, __pyx_bstruct_maxData.buf, __pyx_t_22, __pyx_bstride_0_maxData) = __pyx_v_d;
 48:             maxDelta[idx] = d - b
      /* "relabel.pyx":48
 *         if d > maxData[idx]:
 *             maxData[idx] = d
 *             maxDelta[idx] = d - b             # <<<<<<<<<<<<<<
 *         if b > maxBlured[idx]:
 *             maxBlured[idx] = b
 */
      __pyx_t_23 = __pyx_v_idx;
      *__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_float64_t *, __pyx_bstruct_maxDelta.buf, __pyx_t_23, __pyx_bstride_0_maxDelta) = (__pyx_v_d - __pyx_v_b);
      goto __pyx_L8;
    }
    __pyx_L8:;
 49:         if b > maxBlured[idx]:
    /* "relabel.pyx":49
 *             maxData[idx] = d
 *             maxDelta[idx] = d - b
 *         if b > maxBlured[idx]:             # <<<<<<<<<<<<<<
 *             maxBlured[idx] = b
 *     return count, maxData, maxBlured, maxDelta
 */
    __pyx_t_24 = __pyx_v_idx;
    __pyx_t_15 = (__pyx_v_b > (*__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_float64_t *, __pyx_bstruct_maxBlured.buf, __pyx_t_24, __pyx_bstride_0_maxBlured)));
    if (__pyx_t_15) {
 50:             maxBlured[idx] = b
      /* "relabel.pyx":50
 *             maxDelta[idx] = d - b
 *         if b > maxBlured[idx]:
 *             maxBlured[idx] = b             # <<<<<<<<<<<<<<
 *     return count, maxData, maxBlured, maxDelta
 * 
 */
      __pyx_t_25 = __pyx_v_idx;
      *__Pyx_BufPtrStrided1d(__pyx_t_7relabel_DTYPE_float64_t *, __pyx_bstruct_maxBlured.buf, __pyx_t_25, __pyx_bstride_0_maxBlured) = __pyx_v_b;
      goto __pyx_L9;
    }
    __pyx_L9:;
  }
 51:     return count, maxData, maxBlured, maxDelta
  /* "relabel.pyx":51
 *         if b > maxBlured[idx]:
 *             maxBlured[idx] = b
 *     return count, maxData, maxBlured, maxDelta             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_v_count));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_count));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_count));
  __Pyx_INCREF(((PyObject *)__pyx_v_maxData));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_maxData));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_maxData));
  __Pyx_INCREF(((PyObject *)__pyx_v_maxBlured));
  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_maxBlured));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_maxBlured));
  __Pyx_INCREF(((PyObject *)__pyx_v_maxDelta));
  PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_v_maxDelta));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_maxDelta));
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_count);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_maxData);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_maxDelta);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_maxBlured);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cdata);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cblured);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_clabel);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("relabel.countThem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_count);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_maxData);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_maxDelta);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_maxBlured);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cdata);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cblured);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_clabel);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_clabel);
  __Pyx_XDECREF((PyObject *)__pyx_v_cdata);
  __Pyx_XDECREF((PyObject *)__pyx_v_cblured);
  __Pyx_XDECREF((PyObject *)__pyx_v_count);
  __Pyx_XDECREF((PyObject *)__pyx_v_maxData);
  __Pyx_XDECREF((PyObject *)__pyx_v_maxBlured);
  __Pyx_XDECREF((PyObject *)__pyx_v_maxDelta);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 52: 
 53: 
 54: