79 lines
2.8 KiB
Python
79 lines
2.8 KiB
Python
"""Benchmarks for `skimage.morphology`."""
|
|
|
|
import numpy as np
|
|
from numpy.lib import NumpyVersion as Version
|
|
|
|
import skimage
|
|
from skimage import data, filters, morphology, util
|
|
|
|
|
|
class Watershed(object):
|
|
|
|
param_names = ["seed_count", "connectivity", "compactness"]
|
|
params = [(5, 500), (1, 2), (0, 0.01)]
|
|
|
|
def setup(self, *args):
|
|
self.image = filters.sobel(data.coins())
|
|
|
|
def time_watershed(self, seed_count, connectivity, compactness):
|
|
morphology.watershed(self.image, seed_count, connectivity,
|
|
compactness=compactness)
|
|
|
|
def peakmem_reference(self, *args):
|
|
"""Provide reference for memory measurement with empty benchmark.
|
|
|
|
Peakmem benchmarks measure the maximum amount of RAM used by a
|
|
function. However, this maximum also includes the memory used
|
|
during the setup routine (as of asv 0.2.1; see [1]_).
|
|
Measuring an empty peakmem function might allow us to disambiguate
|
|
between the memory used by setup and the memory used by target (see
|
|
other ``peakmem_`` functions below).
|
|
|
|
References
|
|
----------
|
|
.. [1]: https://asv.readthedocs.io/en/stable/writing_benchmarks.html#peak-memory
|
|
"""
|
|
pass
|
|
|
|
def peakmem_watershed(self, seed_count, connectivity, compactness):
|
|
morphology.watershed(self.image, seed_count, connectivity,
|
|
compactness=compactness)
|
|
|
|
|
|
class Skeletonize3d(object):
|
|
|
|
def setup(self, *args):
|
|
try:
|
|
# use a separate skeletonize_3d function on older scikit-image
|
|
if Version(skimage.__version__) < Version('0.16.0'):
|
|
self.skeletonize = morphology.skeletonize_3d
|
|
else:
|
|
self.skeletonize = morphology.skeletonize
|
|
except AttributeError:
|
|
raise NotImplementedError("3d skeletonize unavailable")
|
|
|
|
# we stack the horse data 5 times to get an example volume
|
|
self.image = np.stack(5 * [util.invert(data.horse())])
|
|
|
|
def time_skeletonize_3d(self):
|
|
self.skeletonize(self.image)
|
|
|
|
def peakmem_reference(self, *args):
|
|
"""Provide reference for memory measurement with empty benchmark.
|
|
|
|
Peakmem benchmarks measure the maximum amount of RAM used by a
|
|
function. However, this maximum also includes the memory used
|
|
during the setup routine (as of asv 0.2.1; see [1]_).
|
|
Measuring an empty peakmem function might allow us to disambiguate
|
|
between the memory used by setup and the memory used by target (see
|
|
other ``peakmem_`` functions below).
|
|
|
|
References
|
|
----------
|
|
.. [1]: https://asv.readthedocs.io/en/stable/writing_benchmarks.html#peak-memory
|
|
"""
|
|
pass
|
|
|
|
def peakmem_skeletonize_3d(self):
|
|
self.skeletonize(self.image)
|