diff --git a/pyproject.toml b/pyproject.toml index 255e65f8b..8a6defa16 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,14 +34,14 @@ dependencies = [ "pandas", "psutil", "rich", - "scikit-image", + "scikit-image<0.25.0", "scipy", "tqdm", "pywavelets", "setuptools", ] readme = "README.md" -requires-python = ">= 3.8" +requires-python = ">= 3.10" [project.optional-dependencies] build = ["hatch"] diff --git a/test/unit/test_filters.py b/test/unit/test_filters.py index bd5c61da9..9509c2268 100644 --- a/test/unit/test_filters.py +++ b/test/unit/test_filters.py @@ -3,7 +3,7 @@ from edt import edt import porespy as ps import scipy.ndimage as spim -from skimage.morphology import disk, ball, skeletonize +from skimage.morphology import disk, ball from skimage.util import random_noise from scipy.stats import norm ps.settings.tqdm['disable'] = True @@ -466,24 +466,33 @@ def test_chunked_func_w_ill_defined_filter(self): overlap=5) def test_prune_branches(self): - im = ps.generators.lattice_spheres(shape=[100, 100, 100], r=4) + from skimage.morphology import skeletonize + im = ps.generators.random_spheres([100, 100, 100], r=4, seed=0) skel1 = skeletonize(im) skel2 = ps.filters.prune_branches(skel1) assert skel1.sum() > skel2.sum() def test_prune_branches_n2(self): - im = ps.generators.lattice_spheres(shape=[100, 100, 100], r=4) + from skimage.morphology import skeletonize + im = ps.generators.random_spheres([100, 100, 100], r=4, seed=0) skel1 = skeletonize(im) skel2 = ps.filters.prune_branches(skel1, iterations=1) skel3 = ps.filters.prune_branches(skel1, iterations=2) assert skel1.sum() > skel2.sum() - assert skel2.sum() == skel3.sum() + assert skel2.sum() > skel3.sum() + skel4 = ps.filters.prune_branches(skel1, iterations=3) + assert skel3.sum() > skel4.sum() def test_apply_padded(self): + from skimage.morphology import skeletonize im = ps.generators.blobs(shape=[100, 100]) skel1 = skeletonize(im) - skel2 = ps.filters.apply_padded(im=im, pad_width=20, pad_val=1, - func=skeletonize) + skel2 = ps.filters.apply_padded( + im=im, + pad_width=20, + pad_val=1, + func=skeletonize, + ) assert (skel1.astype(bool)).sum() != (skel2.astype(bool)).sum() def test_trim_small_clusters(self): @@ -514,7 +523,8 @@ def test_hold_peaks_algorithm(self): def test_nl_means_layered(self): im = ps.generators.blobs(shape=[50, 50, 50], blobiness=.5) - im2 = random_noise(im, seed=0) + np.random.seed(0) + im2 = random_noise(im) filt = ps.filters.nl_means_layered(im=im2) p1 = (filt[0, ...] > 0.5).sum() p2 = (im[0, ...]).sum() diff --git a/test/unit/test_network_size_factor.py b/test/unit/test_network_size_factor.py index 046822208..190b2be7d 100644 --- a/test/unit/test_network_size_factor.py +++ b/test/unit/test_network_size_factor.py @@ -5,8 +5,7 @@ class NetworkSizeFactorTest(): def setup_class(self): - np.random.seed(10) - im = ps.generators.blobs(shape=[50, 50, 50]) + im = ps.generators.blobs(shape=[50, 50, 50], seed=10) self.im = im[:15, :15, :15] self.snow = ps.networks.snow2(self.im, boundary_width=0, parallelization=None) @@ -15,8 +14,10 @@ def test_diffusive_size_factor_DNS(self): regions = self.snow.regions net = self.snow.network conns = net['throat.conns'] - size_factors = ps.networks.diffusive_size_factor_DNS(regions, - throat_conns=conns) + size_factors = ps.networks.diffusive_size_factor_DNS( + regions, + throat_conns=conns, + ) values = np.array([1.43456123, 0.9612569, 1.22389664, 0.14359343, 0.18617079, 1.30144843, 0.22238891, 1.32222092]) @@ -27,9 +28,11 @@ def test_diffusive_size_factor_DNS_voxel_size(self): regions = self.snow.regions net = self.snow.network conns = net['throat.conns'] - size_factors = ps.networks.diffusive_size_factor_DNS(regions, - throat_conns=conns, - voxel_size=voxel_size) + size_factors = ps.networks.diffusive_size_factor_DNS( + regions, + throat_conns=conns, + voxel_size=voxel_size, + ) values = np.array([1.43456123, 0.9612569, 1.22389664, 0.14359343, 0.18617079, 1.30144843, 0.22238891, 1.32222092])*voxel_size