From aa06d5bbb91ee286a4f17fe4becfc16e406a1f57 Mon Sep 17 00:00:00 2001 From: Scott White Date: Wed, 20 Sep 2023 18:07:31 -0400 Subject: [PATCH] rename compiled ext to _cutils, explicit import in FFTKDE --- KDEpy/FFTKDE.py | 4 +++- KDEpy/binning.py | 19 +++++++++---------- KDEpy/tests/test_sorted_grid.py | 5 ++++- setup.py | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/KDEpy/FFTKDE.py b/KDEpy/FFTKDE.py index bb66791..7c25785 100644 --- a/KDEpy/FFTKDE.py +++ b/KDEpy/FFTKDE.py @@ -10,8 +10,10 @@ from scipy.signal import convolve from KDEpy.BaseKDE import BaseKDE -from KDEpy.binning import grid_is_sorted, linear_binning +from KDEpy.binning import linear_binning from KDEpy.utils import cartesian +# noinspection PyProtectedMember, PyUnresolvedReferences +from KDEpy._cutils import grid_is_sorted class FFTKDE(BaseKDE): diff --git a/KDEpy/binning.py b/KDEpy/binning.py index a27b3bb..7bc1604 100644 --- a/KDEpy/binning.py +++ b/KDEpy/binning.py @@ -35,13 +35,12 @@ import numpy as np -# Import compiled cutils module locally (not declared in __init__) +# Import compiled _cutils module (not declared in __init__) # and ignore unresolved reference (may not be build in dev environment) -# noinspection PyUnresolvedReferences -from . import cutils +# noinspection PyProtectedMember, PyUnresolvedReferences +from KDEpy import _cutils from KDEpy.utils import cartesian -grid_is_sorted = cutils.grid_is_sorted # This parameter was in use when a NumPy implementation and a Cython # implementation were both used. Now only Cython is used. @@ -110,10 +109,10 @@ def linbin_cython(data, grid_points, weights=None): # Two Cython functions are implemented, one for weighted data and one # for unweighted data, since creating equal weights is costly w.r.t time if weights is None: - result = cutils.iterate_data_1D(transformed_data, result) + result = _cutils.iterate_data_1D(transformed_data, result) return np.asfarray(result[:-1]) / transformed_data.shape[0] else: - res = cutils.iterate_data_1D_weighted(transformed_data, weights, result) + res = _cutils.iterate_data_1D_weighted(transformed_data, weights, result) return np.asfarray(res[:-1]) # Remove last, outside of grid @@ -358,9 +357,9 @@ def linbin_Ndim(data, grid_points, weights=None): if weights is not None: if data_dims >= 3: binary_flgs = cartesian(([0, 1],) * dims) - result = cutils.iterate_data_ND_weighted(data, weights, result, grid_num, obs_tot, binary_flgs) + result = _cutils.iterate_data_ND_weighted(data, weights, result, grid_num, obs_tot, binary_flgs) else: - result = cutils.iterate_data_2D_weighted(data, weights, result, grid_num, obs_tot) + result = _cutils.iterate_data_2D_weighted(data, weights, result, grid_num, obs_tot) result = np.asarray_chkfinite(result, dtype=float) # Unweighted data has two specific routines too. This is because creating @@ -369,9 +368,9 @@ def linbin_Ndim(data, grid_points, weights=None): else: if data_dims >= 3: binary_flgs = cartesian(([0, 1],) * dims) - result = cutils.iterate_data_ND(data, result, grid_num, obs_tot, binary_flgs) + result = _cutils.iterate_data_ND(data, result, grid_num, obs_tot, binary_flgs) else: - result = cutils.iterate_data_2D(data, result, grid_num, obs_tot) + result = _cutils.iterate_data_2D(data, result, grid_num, obs_tot) result = np.asarray_chkfinite(result, dtype=float) result = result / data_obs diff --git a/KDEpy/tests/test_sorted_grid.py b/KDEpy/tests/test_sorted_grid.py index 1dbb636..2d3c083 100644 --- a/KDEpy/tests/test_sorted_grid.py +++ b/KDEpy/tests/test_sorted_grid.py @@ -6,7 +6,10 @@ import numpy as np import pytest -from KDEpy.binning import grid_is_sorted # Imported from .pyx to binning.py, then here +# Import compiled _cutils module (not declared in __init__) +# and ignore unresolved reference (may not be build in dev environment) +# noinspection PyProtectedMember, PyUnresolvedReferences +from KDEpy._cutils import grid_is_sorted # Imported from .pyx to binning.py, then here class TestGridSorted: diff --git a/setup.py b/setup.py index 05c65a0..2f8460e 100644 --- a/setup.py +++ b/setup.py @@ -15,5 +15,5 @@ packages=["KDEpy"], cmdclass={"build_ext": build_ext}, include_dirs=[np.get_include()], - ext_modules=[Extension("KDEpy.cutils", ["KDEpy/cutils_ext/cutils.pyx"])], + ext_modules=[Extension("KDEpy._cutils", ["KDEpy/cutils_ext/cutils.pyx"])], )