using for loop to install conda package
This commit is contained in:
169
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__init__.py
vendored
Normal file
169
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__init__.py
vendored
Normal file
@@ -0,0 +1,169 @@
|
||||
"""
|
||||
=========================================================
|
||||
Multidimensional image processing (:mod:`scipy.ndimage`)
|
||||
=========================================================
|
||||
|
||||
.. currentmodule:: scipy.ndimage
|
||||
|
||||
This package contains various functions for multidimensional image
|
||||
processing.
|
||||
|
||||
|
||||
Filters
|
||||
=======
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
convolve - Multidimensional convolution
|
||||
convolve1d - 1-D convolution along the given axis
|
||||
correlate - Multidimensional correlation
|
||||
correlate1d - 1-D correlation along the given axis
|
||||
gaussian_filter
|
||||
gaussian_filter1d
|
||||
gaussian_gradient_magnitude
|
||||
gaussian_laplace
|
||||
generic_filter - Multidimensional filter using a given function
|
||||
generic_filter1d - 1-D generic filter along the given axis
|
||||
generic_gradient_magnitude
|
||||
generic_laplace
|
||||
laplace - N-D Laplace filter based on approximate second derivatives
|
||||
maximum_filter
|
||||
maximum_filter1d
|
||||
median_filter - Calculates a multidimensional median filter
|
||||
minimum_filter
|
||||
minimum_filter1d
|
||||
percentile_filter - Calculates a multidimensional percentile filter
|
||||
prewitt
|
||||
rank_filter - Calculates a multidimensional rank filter
|
||||
sobel
|
||||
uniform_filter - Multidimensional uniform filter
|
||||
uniform_filter1d - 1-D uniform filter along the given axis
|
||||
|
||||
Fourier filters
|
||||
===============
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
fourier_ellipsoid
|
||||
fourier_gaussian
|
||||
fourier_shift
|
||||
fourier_uniform
|
||||
|
||||
Interpolation
|
||||
=============
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
affine_transform - Apply an affine transformation
|
||||
geometric_transform - Apply an arbritrary geometric transform
|
||||
map_coordinates - Map input array to new coordinates by interpolation
|
||||
rotate - Rotate an array
|
||||
shift - Shift an array
|
||||
spline_filter
|
||||
spline_filter1d
|
||||
zoom - Zoom an array
|
||||
|
||||
Measurements
|
||||
============
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
center_of_mass - The center of mass of the values of an array at labels
|
||||
extrema - Min's and max's of an array at labels, with their positions
|
||||
find_objects - Find objects in a labeled array
|
||||
histogram - Histogram of the values of an array, optionally at labels
|
||||
label - Label features in an array
|
||||
labeled_comprehension
|
||||
maximum
|
||||
maximum_position
|
||||
mean - Mean of the values of an array at labels
|
||||
median
|
||||
minimum
|
||||
minimum_position
|
||||
standard_deviation - Standard deviation of an N-D image array
|
||||
sum_labels - Sum of the values of the array
|
||||
value_indices - Find indices of each distinct value in given array
|
||||
variance - Variance of the values of an N-D image array
|
||||
watershed_ift
|
||||
|
||||
Morphology
|
||||
==========
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
binary_closing
|
||||
binary_dilation
|
||||
binary_erosion
|
||||
binary_fill_holes
|
||||
binary_hit_or_miss
|
||||
binary_opening
|
||||
binary_propagation
|
||||
black_tophat
|
||||
distance_transform_bf
|
||||
distance_transform_cdt
|
||||
distance_transform_edt
|
||||
generate_binary_structure
|
||||
grey_closing
|
||||
grey_dilation
|
||||
grey_erosion
|
||||
grey_opening
|
||||
iterate_structure
|
||||
morphological_gradient
|
||||
morphological_laplace
|
||||
white_tophat
|
||||
|
||||
"""
|
||||
|
||||
# Copyright (C) 2003-2005 Peter J. Verveer
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# 3. The name of the author may not be used to endorse or promote
|
||||
# products derived from this software without specific prior
|
||||
# written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
from ._filters import * # noqa: F401 F403
|
||||
from ._fourier import * # noqa: F401 F403
|
||||
from ._interpolation import * # noqa: F401 F403
|
||||
from ._measurements import * # noqa: F401 F403
|
||||
from ._morphology import * # noqa: F401 F403
|
||||
|
||||
# Deprecated namespaces, to be removed in v2.0.0
|
||||
from . import filters # noqa: F401
|
||||
from . import fourier # noqa: F401
|
||||
from . import interpolation # noqa: F401
|
||||
from . import measurements # noqa: F401
|
||||
from . import morphology # noqa: F401
|
||||
|
||||
__all__ = [s for s in dir() if not s.startswith('_')]
|
||||
|
||||
from scipy._lib._testutils import PytestTester
|
||||
test = PytestTester(__name__)
|
||||
del PytestTester
|
||||
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/__init__.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/__init__.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_filters.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_filters.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_fourier.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_fourier.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_interpolation.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_interpolation.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_measurements.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_measurements.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_morphology.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_morphology.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_ni_docstrings.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_ni_docstrings.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_ni_support.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/_ni_support.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/filters.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/filters.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/fourier.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/fourier.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/interpolation.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/interpolation.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/measurements.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/measurements.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/morphology.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/__pycache__/morphology.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ctest.cp311-win_amd64.dll.a
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ctest.cp311-win_amd64.dll.a
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ctest.cp311-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ctest.cp311-win_amd64.pyd
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_cytest.cp311-win_amd64.dll.a
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_cytest.cp311-win_amd64.dll.a
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_cytest.cp311-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_cytest.cp311-win_amd64.pyd
vendored
Normal file
Binary file not shown.
1635
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_filters.py
vendored
Normal file
1635
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_filters.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
307
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_fourier.py
vendored
Normal file
307
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_fourier.py
vendored
Normal file
@@ -0,0 +1,307 @@
|
||||
# Copyright (C) 2003-2005 Peter J. Verveer
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# 3. The name of the author may not be used to endorse or promote
|
||||
# products derived from this software without specific prior
|
||||
# written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import numpy
|
||||
from numpy.core.multiarray import normalize_axis_index
|
||||
from . import _ni_support
|
||||
from . import _nd_image
|
||||
|
||||
__all__ = ['fourier_gaussian', 'fourier_uniform', 'fourier_ellipsoid',
|
||||
'fourier_shift']
|
||||
|
||||
|
||||
def _get_output_fourier(output, input):
|
||||
if output is None:
|
||||
if input.dtype.type in [numpy.complex64, numpy.complex128,
|
||||
numpy.float32]:
|
||||
output = numpy.zeros(input.shape, dtype=input.dtype)
|
||||
else:
|
||||
output = numpy.zeros(input.shape, dtype=numpy.float64)
|
||||
elif type(output) is type:
|
||||
if output not in [numpy.complex64, numpy.complex128,
|
||||
numpy.float32, numpy.float64]:
|
||||
raise RuntimeError("output type not supported")
|
||||
output = numpy.zeros(input.shape, dtype=output)
|
||||
elif output.shape != input.shape:
|
||||
raise RuntimeError("output shape not correct")
|
||||
return output
|
||||
|
||||
|
||||
def _get_output_fourier_complex(output, input):
|
||||
if output is None:
|
||||
if input.dtype.type in [numpy.complex64, numpy.complex128]:
|
||||
output = numpy.zeros(input.shape, dtype=input.dtype)
|
||||
else:
|
||||
output = numpy.zeros(input.shape, dtype=numpy.complex128)
|
||||
elif type(output) is type:
|
||||
if output not in [numpy.complex64, numpy.complex128]:
|
||||
raise RuntimeError("output type not supported")
|
||||
output = numpy.zeros(input.shape, dtype=output)
|
||||
elif output.shape != input.shape:
|
||||
raise RuntimeError("output shape not correct")
|
||||
return output
|
||||
|
||||
|
||||
def fourier_gaussian(input, sigma, n=-1, axis=-1, output=None):
|
||||
"""
|
||||
Multidimensional Gaussian fourier filter.
|
||||
|
||||
The array is multiplied with the fourier transform of a Gaussian
|
||||
kernel.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
input : array_like
|
||||
The input array.
|
||||
sigma : float or sequence
|
||||
The sigma of the Gaussian kernel. If a float, `sigma` is the same for
|
||||
all axes. If a sequence, `sigma` has to contain one value for each
|
||||
axis.
|
||||
n : int, optional
|
||||
If `n` is negative (default), then the input is assumed to be the
|
||||
result of a complex fft.
|
||||
If `n` is larger than or equal to zero, the input is assumed to be the
|
||||
result of a real fft, and `n` gives the length of the array before
|
||||
transformation along the real transform direction.
|
||||
axis : int, optional
|
||||
The axis of the real transform.
|
||||
output : ndarray, optional
|
||||
If given, the result of filtering the input is placed in this array.
|
||||
|
||||
Returns
|
||||
-------
|
||||
fourier_gaussian : ndarray
|
||||
The filtered input.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy import ndimage, datasets
|
||||
>>> import numpy.fft
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
|
||||
>>> plt.gray() # show the filtered result in grayscale
|
||||
>>> ascent = datasets.ascent()
|
||||
>>> input_ = numpy.fft.fft2(ascent)
|
||||
>>> result = ndimage.fourier_gaussian(input_, sigma=4)
|
||||
>>> result = numpy.fft.ifft2(result)
|
||||
>>> ax1.imshow(ascent)
|
||||
>>> ax2.imshow(result.real) # the imaginary part is an artifact
|
||||
>>> plt.show()
|
||||
"""
|
||||
input = numpy.asarray(input)
|
||||
output = _get_output_fourier(output, input)
|
||||
axis = normalize_axis_index(axis, input.ndim)
|
||||
sigmas = _ni_support._normalize_sequence(sigma, input.ndim)
|
||||
sigmas = numpy.asarray(sigmas, dtype=numpy.float64)
|
||||
if not sigmas.flags.contiguous:
|
||||
sigmas = sigmas.copy()
|
||||
|
||||
_nd_image.fourier_filter(input, sigmas, n, axis, output, 0)
|
||||
return output
|
||||
|
||||
|
||||
def fourier_uniform(input, size, n=-1, axis=-1, output=None):
|
||||
"""
|
||||
Multidimensional uniform fourier filter.
|
||||
|
||||
The array is multiplied with the Fourier transform of a box of given
|
||||
size.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
input : array_like
|
||||
The input array.
|
||||
size : float or sequence
|
||||
The size of the box used for filtering.
|
||||
If a float, `size` is the same for all axes. If a sequence, `size` has
|
||||
to contain one value for each axis.
|
||||
n : int, optional
|
||||
If `n` is negative (default), then the input is assumed to be the
|
||||
result of a complex fft.
|
||||
If `n` is larger than or equal to zero, the input is assumed to be the
|
||||
result of a real fft, and `n` gives the length of the array before
|
||||
transformation along the real transform direction.
|
||||
axis : int, optional
|
||||
The axis of the real transform.
|
||||
output : ndarray, optional
|
||||
If given, the result of filtering the input is placed in this array.
|
||||
|
||||
Returns
|
||||
-------
|
||||
fourier_uniform : ndarray
|
||||
The filtered input.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy import ndimage, datasets
|
||||
>>> import numpy.fft
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
|
||||
>>> plt.gray() # show the filtered result in grayscale
|
||||
>>> ascent = datasets.ascent()
|
||||
>>> input_ = numpy.fft.fft2(ascent)
|
||||
>>> result = ndimage.fourier_uniform(input_, size=20)
|
||||
>>> result = numpy.fft.ifft2(result)
|
||||
>>> ax1.imshow(ascent)
|
||||
>>> ax2.imshow(result.real) # the imaginary part is an artifact
|
||||
>>> plt.show()
|
||||
"""
|
||||
input = numpy.asarray(input)
|
||||
output = _get_output_fourier(output, input)
|
||||
axis = normalize_axis_index(axis, input.ndim)
|
||||
sizes = _ni_support._normalize_sequence(size, input.ndim)
|
||||
sizes = numpy.asarray(sizes, dtype=numpy.float64)
|
||||
if not sizes.flags.contiguous:
|
||||
sizes = sizes.copy()
|
||||
_nd_image.fourier_filter(input, sizes, n, axis, output, 1)
|
||||
return output
|
||||
|
||||
|
||||
def fourier_ellipsoid(input, size, n=-1, axis=-1, output=None):
|
||||
"""
|
||||
Multidimensional ellipsoid Fourier filter.
|
||||
|
||||
The array is multiplied with the fourier transform of an ellipsoid of
|
||||
given sizes.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
input : array_like
|
||||
The input array.
|
||||
size : float or sequence
|
||||
The size of the box used for filtering.
|
||||
If a float, `size` is the same for all axes. If a sequence, `size` has
|
||||
to contain one value for each axis.
|
||||
n : int, optional
|
||||
If `n` is negative (default), then the input is assumed to be the
|
||||
result of a complex fft.
|
||||
If `n` is larger than or equal to zero, the input is assumed to be the
|
||||
result of a real fft, and `n` gives the length of the array before
|
||||
transformation along the real transform direction.
|
||||
axis : int, optional
|
||||
The axis of the real transform.
|
||||
output : ndarray, optional
|
||||
If given, the result of filtering the input is placed in this array.
|
||||
|
||||
Returns
|
||||
-------
|
||||
fourier_ellipsoid : ndarray
|
||||
The filtered input.
|
||||
|
||||
Notes
|
||||
-----
|
||||
This function is implemented for arrays of rank 1, 2, or 3.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy import ndimage, datasets
|
||||
>>> import numpy.fft
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
|
||||
>>> plt.gray() # show the filtered result in grayscale
|
||||
>>> ascent = datasets.ascent()
|
||||
>>> input_ = numpy.fft.fft2(ascent)
|
||||
>>> result = ndimage.fourier_ellipsoid(input_, size=20)
|
||||
>>> result = numpy.fft.ifft2(result)
|
||||
>>> ax1.imshow(ascent)
|
||||
>>> ax2.imshow(result.real) # the imaginary part is an artifact
|
||||
>>> plt.show()
|
||||
"""
|
||||
input = numpy.asarray(input)
|
||||
if input.ndim > 3:
|
||||
raise NotImplementedError("Only 1d, 2d and 3d inputs are supported")
|
||||
output = _get_output_fourier(output, input)
|
||||
if output.size == 0:
|
||||
# The C code has a bug that can result in a segfault with arrays
|
||||
# that have size 0 (gh-17270), so check here.
|
||||
return output
|
||||
axis = normalize_axis_index(axis, input.ndim)
|
||||
sizes = _ni_support._normalize_sequence(size, input.ndim)
|
||||
sizes = numpy.asarray(sizes, dtype=numpy.float64)
|
||||
if not sizes.flags.contiguous:
|
||||
sizes = sizes.copy()
|
||||
_nd_image.fourier_filter(input, sizes, n, axis, output, 2)
|
||||
return output
|
||||
|
||||
|
||||
def fourier_shift(input, shift, n=-1, axis=-1, output=None):
|
||||
"""
|
||||
Multidimensional Fourier shift filter.
|
||||
|
||||
The array is multiplied with the Fourier transform of a shift operation.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
input : array_like
|
||||
The input array.
|
||||
shift : float or sequence
|
||||
The size of the box used for filtering.
|
||||
If a float, `shift` is the same for all axes. If a sequence, `shift`
|
||||
has to contain one value for each axis.
|
||||
n : int, optional
|
||||
If `n` is negative (default), then the input is assumed to be the
|
||||
result of a complex fft.
|
||||
If `n` is larger than or equal to zero, the input is assumed to be the
|
||||
result of a real fft, and `n` gives the length of the array before
|
||||
transformation along the real transform direction.
|
||||
axis : int, optional
|
||||
The axis of the real transform.
|
||||
output : ndarray, optional
|
||||
If given, the result of shifting the input is placed in this array.
|
||||
|
||||
Returns
|
||||
-------
|
||||
fourier_shift : ndarray
|
||||
The shifted input.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy import ndimage, datasets
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> import numpy.fft
|
||||
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
|
||||
>>> plt.gray() # show the filtered result in grayscale
|
||||
>>> ascent = datasets.ascent()
|
||||
>>> input_ = numpy.fft.fft2(ascent)
|
||||
>>> result = ndimage.fourier_shift(input_, shift=200)
|
||||
>>> result = numpy.fft.ifft2(result)
|
||||
>>> ax1.imshow(ascent)
|
||||
>>> ax2.imshow(result.real) # the imaginary part is an artifact
|
||||
>>> plt.show()
|
||||
"""
|
||||
input = numpy.asarray(input)
|
||||
output = _get_output_fourier_complex(output, input)
|
||||
axis = normalize_axis_index(axis, input.ndim)
|
||||
shifts = _ni_support._normalize_sequence(shift, input.ndim)
|
||||
shifts = numpy.asarray(shifts, dtype=numpy.float64)
|
||||
if not shifts.flags.contiguous:
|
||||
shifts = shifts.copy()
|
||||
_nd_image.fourier_shift(input, shifts, n, axis, output)
|
||||
return output
|
||||
960
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_interpolation.py
vendored
Normal file
960
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_interpolation.py
vendored
Normal file
@@ -0,0 +1,960 @@
|
||||
# Copyright (C) 2003-2005 Peter J. Verveer
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# 3. The name of the author may not be used to endorse or promote
|
||||
# products derived from this software without specific prior
|
||||
# written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import itertools
|
||||
import warnings
|
||||
|
||||
import numpy
|
||||
from numpy.core.multiarray import normalize_axis_index
|
||||
|
||||
from scipy import special
|
||||
from . import _ni_support
|
||||
from . import _nd_image
|
||||
from ._ni_docstrings import docfiller
|
||||
|
||||
|
||||
__all__ = ['spline_filter1d', 'spline_filter', 'geometric_transform',
|
||||
'map_coordinates', 'affine_transform', 'shift', 'zoom', 'rotate']
|
||||
|
||||
|
||||
@docfiller
|
||||
def spline_filter1d(input, order=3, axis=-1, output=numpy.float64,
|
||||
mode='mirror'):
|
||||
"""
|
||||
Calculate a 1-D spline filter along the given axis.
|
||||
|
||||
The lines of the array along the given axis are filtered by a
|
||||
spline filter. The order of the spline must be >= 2 and <= 5.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
%(input)s
|
||||
order : int, optional
|
||||
The order of the spline, default is 3.
|
||||
axis : int, optional
|
||||
The axis along which the spline filter is applied. Default is the last
|
||||
axis.
|
||||
output : ndarray or dtype, optional
|
||||
The array in which to place the output, or the dtype of the returned
|
||||
array. Default is ``numpy.float64``.
|
||||
%(mode_interp_mirror)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
spline_filter1d : ndarray
|
||||
The filtered input.
|
||||
|
||||
Notes
|
||||
-----
|
||||
All of the interpolation functions in `ndimage` do spline interpolation of
|
||||
the input image. If using B-splines of `order > 1`, the input image
|
||||
values have to be converted to B-spline coefficients first, which is
|
||||
done by applying this 1-D filter sequentially along all
|
||||
axes of the input. All functions that require B-spline coefficients
|
||||
will automatically filter their inputs, a behavior controllable with
|
||||
the `prefilter` keyword argument. For functions that accept a `mode`
|
||||
parameter, the result will only be correct if it matches the `mode`
|
||||
used when filtering.
|
||||
|
||||
For complex-valued `input`, this function processes the real and imaginary
|
||||
components independently.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
Complex-valued support added.
|
||||
|
||||
See Also
|
||||
--------
|
||||
spline_filter : Multidimensional spline filter.
|
||||
|
||||
Examples
|
||||
--------
|
||||
We can filter an image using 1-D spline along the given axis:
|
||||
|
||||
>>> from scipy.ndimage import spline_filter1d
|
||||
>>> import numpy as np
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> orig_img = np.eye(20) # create an image
|
||||
>>> orig_img[10, :] = 1.0
|
||||
>>> sp_filter_axis_0 = spline_filter1d(orig_img, axis=0)
|
||||
>>> sp_filter_axis_1 = spline_filter1d(orig_img, axis=1)
|
||||
>>> f, ax = plt.subplots(1, 3, sharex=True)
|
||||
>>> for ind, data in enumerate([[orig_img, "original image"],
|
||||
... [sp_filter_axis_0, "spline filter (axis=0)"],
|
||||
... [sp_filter_axis_1, "spline filter (axis=1)"]]):
|
||||
... ax[ind].imshow(data[0], cmap='gray_r')
|
||||
... ax[ind].set_title(data[1])
|
||||
>>> plt.tight_layout()
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
if order < 0 or order > 5:
|
||||
raise RuntimeError('spline order not supported')
|
||||
input = numpy.asarray(input)
|
||||
complex_output = numpy.iscomplexobj(input)
|
||||
output = _ni_support._get_output(output, input,
|
||||
complex_output=complex_output)
|
||||
if complex_output:
|
||||
spline_filter1d(input.real, order, axis, output.real, mode)
|
||||
spline_filter1d(input.imag, order, axis, output.imag, mode)
|
||||
return output
|
||||
if order in [0, 1]:
|
||||
output[...] = numpy.array(input)
|
||||
else:
|
||||
mode = _ni_support._extend_mode_to_code(mode)
|
||||
axis = normalize_axis_index(axis, input.ndim)
|
||||
_nd_image.spline_filter1d(input, order, axis, output, mode)
|
||||
return output
|
||||
|
||||
|
||||
def spline_filter(input, order=3, output=numpy.float64, mode='mirror'):
|
||||
"""
|
||||
Multidimensional spline filter.
|
||||
|
||||
For more details, see `spline_filter1d`.
|
||||
|
||||
See Also
|
||||
--------
|
||||
spline_filter1d : Calculate a 1-D spline filter along the given axis.
|
||||
|
||||
Notes
|
||||
-----
|
||||
The multidimensional filter is implemented as a sequence of
|
||||
1-D spline filters. The intermediate arrays are stored
|
||||
in the same data type as the output. Therefore, for output types
|
||||
with a limited precision, the results may be imprecise because
|
||||
intermediate results may be stored with insufficient precision.
|
||||
|
||||
For complex-valued `input`, this function processes the real and imaginary
|
||||
components independently.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
Complex-valued support added.
|
||||
|
||||
Examples
|
||||
--------
|
||||
We can filter an image using multidimentional splines:
|
||||
|
||||
>>> from scipy.ndimage import spline_filter
|
||||
>>> import numpy as np
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> orig_img = np.eye(20) # create an image
|
||||
>>> orig_img[10, :] = 1.0
|
||||
>>> sp_filter = spline_filter(orig_img, order=3)
|
||||
>>> f, ax = plt.subplots(1, 2, sharex=True)
|
||||
>>> for ind, data in enumerate([[orig_img, "original image"],
|
||||
... [sp_filter, "spline filter"]]):
|
||||
... ax[ind].imshow(data[0], cmap='gray_r')
|
||||
... ax[ind].set_title(data[1])
|
||||
>>> plt.tight_layout()
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
if order < 2 or order > 5:
|
||||
raise RuntimeError('spline order not supported')
|
||||
input = numpy.asarray(input)
|
||||
complex_output = numpy.iscomplexobj(input)
|
||||
output = _ni_support._get_output(output, input,
|
||||
complex_output=complex_output)
|
||||
if complex_output:
|
||||
spline_filter(input.real, order, output.real, mode)
|
||||
spline_filter(input.imag, order, output.imag, mode)
|
||||
return output
|
||||
if order not in [0, 1] and input.ndim > 0:
|
||||
for axis in range(input.ndim):
|
||||
spline_filter1d(input, order, axis, output=output, mode=mode)
|
||||
input = output
|
||||
else:
|
||||
output[...] = input[...]
|
||||
return output
|
||||
|
||||
|
||||
def _prepad_for_spline_filter(input, mode, cval):
|
||||
if mode in ['nearest', 'grid-constant']:
|
||||
npad = 12
|
||||
if mode == 'grid-constant':
|
||||
padded = numpy.pad(input, npad, mode='constant',
|
||||
constant_values=cval)
|
||||
elif mode == 'nearest':
|
||||
padded = numpy.pad(input, npad, mode='edge')
|
||||
else:
|
||||
# other modes have exact boundary conditions implemented so
|
||||
# no prepadding is needed
|
||||
npad = 0
|
||||
padded = input
|
||||
return padded, npad
|
||||
|
||||
|
||||
@docfiller
|
||||
def geometric_transform(input, mapping, output_shape=None,
|
||||
output=None, order=3,
|
||||
mode='constant', cval=0.0, prefilter=True,
|
||||
extra_arguments=(), extra_keywords={}):
|
||||
"""
|
||||
Apply an arbitrary geometric transform.
|
||||
|
||||
The given mapping function is used to find, for each point in the
|
||||
output, the corresponding coordinates in the input. The value of the
|
||||
input at those coordinates is determined by spline interpolation of
|
||||
the requested order.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
%(input)s
|
||||
mapping : {callable, scipy.LowLevelCallable}
|
||||
A callable object that accepts a tuple of length equal to the output
|
||||
array rank, and returns the corresponding input coordinates as a tuple
|
||||
of length equal to the input array rank.
|
||||
output_shape : tuple of ints, optional
|
||||
Shape tuple.
|
||||
%(output)s
|
||||
order : int, optional
|
||||
The order of the spline interpolation, default is 3.
|
||||
The order has to be in the range 0-5.
|
||||
%(mode_interp_constant)s
|
||||
%(cval)s
|
||||
%(prefilter)s
|
||||
extra_arguments : tuple, optional
|
||||
Extra arguments passed to `mapping`.
|
||||
extra_keywords : dict, optional
|
||||
Extra keywords passed to `mapping`.
|
||||
|
||||
Returns
|
||||
-------
|
||||
output : ndarray
|
||||
The filtered input.
|
||||
|
||||
See Also
|
||||
--------
|
||||
map_coordinates, affine_transform, spline_filter1d
|
||||
|
||||
|
||||
Notes
|
||||
-----
|
||||
This function also accepts low-level callback functions with one
|
||||
the following signatures and wrapped in `scipy.LowLevelCallable`:
|
||||
|
||||
.. code:: c
|
||||
|
||||
int mapping(npy_intp *output_coordinates, double *input_coordinates,
|
||||
int output_rank, int input_rank, void *user_data)
|
||||
int mapping(intptr_t *output_coordinates, double *input_coordinates,
|
||||
int output_rank, int input_rank, void *user_data)
|
||||
|
||||
The calling function iterates over the elements of the output array,
|
||||
calling the callback function at each element. The coordinates of the
|
||||
current output element are passed through ``output_coordinates``. The
|
||||
callback function must return the coordinates at which the input must
|
||||
be interpolated in ``input_coordinates``. The rank of the input and
|
||||
output arrays are given by ``input_rank`` and ``output_rank``
|
||||
respectively. ``user_data`` is the data pointer provided
|
||||
to `scipy.LowLevelCallable` as-is.
|
||||
|
||||
The callback function must return an integer error status that is zero
|
||||
if something went wrong and one otherwise. If an error occurs, you should
|
||||
normally set the Python error status with an informative message
|
||||
before returning, otherwise a default error message is set by the
|
||||
calling function.
|
||||
|
||||
In addition, some other low-level function pointer specifications
|
||||
are accepted, but these are for backward compatibility only and should
|
||||
not be used in new code.
|
||||
|
||||
For complex-valued `input`, this function transforms the real and imaginary
|
||||
components independently.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
Complex-valued support added.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> from scipy.ndimage import geometric_transform
|
||||
>>> a = np.arange(12.).reshape((4, 3))
|
||||
>>> def shift_func(output_coords):
|
||||
... return (output_coords[0] - 0.5, output_coords[1] - 0.5)
|
||||
...
|
||||
>>> geometric_transform(a, shift_func)
|
||||
array([[ 0. , 0. , 0. ],
|
||||
[ 0. , 1.362, 2.738],
|
||||
[ 0. , 4.812, 6.187],
|
||||
[ 0. , 8.263, 9.637]])
|
||||
|
||||
>>> b = [1, 2, 3, 4, 5]
|
||||
>>> def shift_func(output_coords):
|
||||
... return (output_coords[0] - 3,)
|
||||
...
|
||||
>>> geometric_transform(b, shift_func, mode='constant')
|
||||
array([0, 0, 0, 1, 2])
|
||||
>>> geometric_transform(b, shift_func, mode='nearest')
|
||||
array([1, 1, 1, 1, 2])
|
||||
>>> geometric_transform(b, shift_func, mode='reflect')
|
||||
array([3, 2, 1, 1, 2])
|
||||
>>> geometric_transform(b, shift_func, mode='wrap')
|
||||
array([2, 3, 4, 1, 2])
|
||||
|
||||
"""
|
||||
if order < 0 or order > 5:
|
||||
raise RuntimeError('spline order not supported')
|
||||
input = numpy.asarray(input)
|
||||
if output_shape is None:
|
||||
output_shape = input.shape
|
||||
if input.ndim < 1 or len(output_shape) < 1:
|
||||
raise RuntimeError('input and output rank must be > 0')
|
||||
complex_output = numpy.iscomplexobj(input)
|
||||
output = _ni_support._get_output(output, input, shape=output_shape,
|
||||
complex_output=complex_output)
|
||||
if complex_output:
|
||||
kwargs = dict(order=order, mode=mode, prefilter=prefilter,
|
||||
output_shape=output_shape,
|
||||
extra_arguments=extra_arguments,
|
||||
extra_keywords=extra_keywords)
|
||||
geometric_transform(input.real, mapping, output=output.real,
|
||||
cval=numpy.real(cval), **kwargs)
|
||||
geometric_transform(input.imag, mapping, output=output.imag,
|
||||
cval=numpy.imag(cval), **kwargs)
|
||||
return output
|
||||
|
||||
if prefilter and order > 1:
|
||||
padded, npad = _prepad_for_spline_filter(input, mode, cval)
|
||||
filtered = spline_filter(padded, order, output=numpy.float64,
|
||||
mode=mode)
|
||||
else:
|
||||
npad = 0
|
||||
filtered = input
|
||||
mode = _ni_support._extend_mode_to_code(mode)
|
||||
_nd_image.geometric_transform(filtered, mapping, None, None, None, output,
|
||||
order, mode, cval, npad, extra_arguments,
|
||||
extra_keywords)
|
||||
return output
|
||||
|
||||
|
||||
@docfiller
|
||||
def map_coordinates(input, coordinates, output=None, order=3,
|
||||
mode='constant', cval=0.0, prefilter=True):
|
||||
"""
|
||||
Map the input array to new coordinates by interpolation.
|
||||
|
||||
The array of coordinates is used to find, for each point in the output,
|
||||
the corresponding coordinates in the input. The value of the input at
|
||||
those coordinates is determined by spline interpolation of the
|
||||
requested order.
|
||||
|
||||
The shape of the output is derived from that of the coordinate
|
||||
array by dropping the first axis. The values of the array along
|
||||
the first axis are the coordinates in the input array at which the
|
||||
output value is found.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
%(input)s
|
||||
coordinates : array_like
|
||||
The coordinates at which `input` is evaluated.
|
||||
%(output)s
|
||||
order : int, optional
|
||||
The order of the spline interpolation, default is 3.
|
||||
The order has to be in the range 0-5.
|
||||
%(mode_interp_constant)s
|
||||
%(cval)s
|
||||
%(prefilter)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
map_coordinates : ndarray
|
||||
The result of transforming the input. The shape of the output is
|
||||
derived from that of `coordinates` by dropping the first axis.
|
||||
|
||||
See Also
|
||||
--------
|
||||
spline_filter, geometric_transform, scipy.interpolate
|
||||
|
||||
Notes
|
||||
-----
|
||||
For complex-valued `input`, this function maps the real and imaginary
|
||||
components independently.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
Complex-valued support added.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy import ndimage
|
||||
>>> import numpy as np
|
||||
>>> a = np.arange(12.).reshape((4, 3))
|
||||
>>> a
|
||||
array([[ 0., 1., 2.],
|
||||
[ 3., 4., 5.],
|
||||
[ 6., 7., 8.],
|
||||
[ 9., 10., 11.]])
|
||||
>>> ndimage.map_coordinates(a, [[0.5, 2], [0.5, 1]], order=1)
|
||||
array([ 2., 7.])
|
||||
|
||||
Above, the interpolated value of a[0.5, 0.5] gives output[0], while
|
||||
a[2, 1] is output[1].
|
||||
|
||||
>>> inds = np.array([[0.5, 2], [0.5, 4]])
|
||||
>>> ndimage.map_coordinates(a, inds, order=1, cval=-33.3)
|
||||
array([ 2. , -33.3])
|
||||
>>> ndimage.map_coordinates(a, inds, order=1, mode='nearest')
|
||||
array([ 2., 8.])
|
||||
>>> ndimage.map_coordinates(a, inds, order=1, cval=0, output=bool)
|
||||
array([ True, False], dtype=bool)
|
||||
|
||||
"""
|
||||
if order < 0 or order > 5:
|
||||
raise RuntimeError('spline order not supported')
|
||||
input = numpy.asarray(input)
|
||||
coordinates = numpy.asarray(coordinates)
|
||||
if numpy.iscomplexobj(coordinates):
|
||||
raise TypeError('Complex type not supported')
|
||||
output_shape = coordinates.shape[1:]
|
||||
if input.ndim < 1 or len(output_shape) < 1:
|
||||
raise RuntimeError('input and output rank must be > 0')
|
||||
if coordinates.shape[0] != input.ndim:
|
||||
raise RuntimeError('invalid shape for coordinate array')
|
||||
complex_output = numpy.iscomplexobj(input)
|
||||
output = _ni_support._get_output(output, input, shape=output_shape,
|
||||
complex_output=complex_output)
|
||||
if complex_output:
|
||||
kwargs = dict(order=order, mode=mode, prefilter=prefilter)
|
||||
map_coordinates(input.real, coordinates, output=output.real,
|
||||
cval=numpy.real(cval), **kwargs)
|
||||
map_coordinates(input.imag, coordinates, output=output.imag,
|
||||
cval=numpy.imag(cval), **kwargs)
|
||||
return output
|
||||
if prefilter and order > 1:
|
||||
padded, npad = _prepad_for_spline_filter(input, mode, cval)
|
||||
filtered = spline_filter(padded, order, output=numpy.float64,
|
||||
mode=mode)
|
||||
else:
|
||||
npad = 0
|
||||
filtered = input
|
||||
mode = _ni_support._extend_mode_to_code(mode)
|
||||
_nd_image.geometric_transform(filtered, None, coordinates, None, None,
|
||||
output, order, mode, cval, npad, None, None)
|
||||
return output
|
||||
|
||||
|
||||
@docfiller
|
||||
def affine_transform(input, matrix, offset=0.0, output_shape=None,
|
||||
output=None, order=3,
|
||||
mode='constant', cval=0.0, prefilter=True):
|
||||
"""
|
||||
Apply an affine transformation.
|
||||
|
||||
Given an output image pixel index vector ``o``, the pixel value
|
||||
is determined from the input image at position
|
||||
``np.dot(matrix, o) + offset``.
|
||||
|
||||
This does 'pull' (or 'backward') resampling, transforming the output space
|
||||
to the input to locate data. Affine transformations are often described in
|
||||
the 'push' (or 'forward') direction, transforming input to output. If you
|
||||
have a matrix for the 'push' transformation, use its inverse
|
||||
(:func:`numpy.linalg.inv`) in this function.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
%(input)s
|
||||
matrix : ndarray
|
||||
The inverse coordinate transformation matrix, mapping output
|
||||
coordinates to input coordinates. If ``ndim`` is the number of
|
||||
dimensions of ``input``, the given matrix must have one of the
|
||||
following shapes:
|
||||
|
||||
- ``(ndim, ndim)``: the linear transformation matrix for each
|
||||
output coordinate.
|
||||
- ``(ndim,)``: assume that the 2-D transformation matrix is
|
||||
diagonal, with the diagonal specified by the given value. A more
|
||||
efficient algorithm is then used that exploits the separability
|
||||
of the problem.
|
||||
- ``(ndim + 1, ndim + 1)``: assume that the transformation is
|
||||
specified using homogeneous coordinates [1]_. In this case, any
|
||||
value passed to ``offset`` is ignored.
|
||||
- ``(ndim, ndim + 1)``: as above, but the bottom row of a
|
||||
homogeneous transformation matrix is always ``[0, 0, ..., 1]``,
|
||||
and may be omitted.
|
||||
|
||||
offset : float or sequence, optional
|
||||
The offset into the array where the transform is applied. If a float,
|
||||
`offset` is the same for each axis. If a sequence, `offset` should
|
||||
contain one value for each axis.
|
||||
output_shape : tuple of ints, optional
|
||||
Shape tuple.
|
||||
%(output)s
|
||||
order : int, optional
|
||||
The order of the spline interpolation, default is 3.
|
||||
The order has to be in the range 0-5.
|
||||
%(mode_interp_constant)s
|
||||
%(cval)s
|
||||
%(prefilter)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
affine_transform : ndarray
|
||||
The transformed input.
|
||||
|
||||
Notes
|
||||
-----
|
||||
The given matrix and offset are used to find for each point in the
|
||||
output the corresponding coordinates in the input by an affine
|
||||
transformation. The value of the input at those coordinates is
|
||||
determined by spline interpolation of the requested order. Points
|
||||
outside the boundaries of the input are filled according to the given
|
||||
mode.
|
||||
|
||||
.. versionchanged:: 0.18.0
|
||||
Previously, the exact interpretation of the affine transformation
|
||||
depended on whether the matrix was supplied as a 1-D or a
|
||||
2-D array. If a 1-D array was supplied
|
||||
to the matrix parameter, the output pixel value at index ``o``
|
||||
was determined from the input image at position
|
||||
``matrix * (o + offset)``.
|
||||
|
||||
For complex-valued `input`, this function transforms the real and imaginary
|
||||
components independently.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
Complex-valued support added.
|
||||
|
||||
References
|
||||
----------
|
||||
.. [1] https://en.wikipedia.org/wiki/Homogeneous_coordinates
|
||||
"""
|
||||
if order < 0 or order > 5:
|
||||
raise RuntimeError('spline order not supported')
|
||||
input = numpy.asarray(input)
|
||||
if output_shape is None:
|
||||
if isinstance(output, numpy.ndarray):
|
||||
output_shape = output.shape
|
||||
else:
|
||||
output_shape = input.shape
|
||||
if input.ndim < 1 or len(output_shape) < 1:
|
||||
raise RuntimeError('input and output rank must be > 0')
|
||||
complex_output = numpy.iscomplexobj(input)
|
||||
output = _ni_support._get_output(output, input, shape=output_shape,
|
||||
complex_output=complex_output)
|
||||
if complex_output:
|
||||
kwargs = dict(offset=offset, output_shape=output_shape, order=order,
|
||||
mode=mode, prefilter=prefilter)
|
||||
affine_transform(input.real, matrix, output=output.real,
|
||||
cval=numpy.real(cval), **kwargs)
|
||||
affine_transform(input.imag, matrix, output=output.imag,
|
||||
cval=numpy.imag(cval), **kwargs)
|
||||
return output
|
||||
if prefilter and order > 1:
|
||||
padded, npad = _prepad_for_spline_filter(input, mode, cval)
|
||||
filtered = spline_filter(padded, order, output=numpy.float64,
|
||||
mode=mode)
|
||||
else:
|
||||
npad = 0
|
||||
filtered = input
|
||||
mode = _ni_support._extend_mode_to_code(mode)
|
||||
matrix = numpy.asarray(matrix, dtype=numpy.float64)
|
||||
if matrix.ndim not in [1, 2] or matrix.shape[0] < 1:
|
||||
raise RuntimeError('no proper affine matrix provided')
|
||||
if (matrix.ndim == 2 and matrix.shape[1] == input.ndim + 1 and
|
||||
(matrix.shape[0] in [input.ndim, input.ndim + 1])):
|
||||
if matrix.shape[0] == input.ndim + 1:
|
||||
exptd = [0] * input.ndim + [1]
|
||||
if not numpy.all(matrix[input.ndim] == exptd):
|
||||
msg = ('Expected homogeneous transformation matrix with '
|
||||
'shape %s for image shape %s, but bottom row was '
|
||||
'not equal to %s' % (matrix.shape, input.shape, exptd))
|
||||
raise ValueError(msg)
|
||||
# assume input is homogeneous coordinate transformation matrix
|
||||
offset = matrix[:input.ndim, input.ndim]
|
||||
matrix = matrix[:input.ndim, :input.ndim]
|
||||
if matrix.shape[0] != input.ndim:
|
||||
raise RuntimeError('affine matrix has wrong number of rows')
|
||||
if matrix.ndim == 2 and matrix.shape[1] != output.ndim:
|
||||
raise RuntimeError('affine matrix has wrong number of columns')
|
||||
if not matrix.flags.contiguous:
|
||||
matrix = matrix.copy()
|
||||
offset = _ni_support._normalize_sequence(offset, input.ndim)
|
||||
offset = numpy.asarray(offset, dtype=numpy.float64)
|
||||
if offset.ndim != 1 or offset.shape[0] < 1:
|
||||
raise RuntimeError('no proper offset provided')
|
||||
if not offset.flags.contiguous:
|
||||
offset = offset.copy()
|
||||
if matrix.ndim == 1:
|
||||
warnings.warn(
|
||||
"The behavior of affine_transform with a 1-D "
|
||||
"array supplied for the matrix parameter has changed in "
|
||||
"SciPy 0.18.0."
|
||||
)
|
||||
_nd_image.zoom_shift(filtered, matrix, offset/matrix, output, order,
|
||||
mode, cval, npad, False)
|
||||
else:
|
||||
_nd_image.geometric_transform(filtered, None, None, matrix, offset,
|
||||
output, order, mode, cval, npad, None,
|
||||
None)
|
||||
return output
|
||||
|
||||
|
||||
@docfiller
|
||||
def shift(input, shift, output=None, order=3, mode='constant', cval=0.0,
|
||||
prefilter=True):
|
||||
"""
|
||||
Shift an array.
|
||||
|
||||
The array is shifted using spline interpolation of the requested order.
|
||||
Points outside the boundaries of the input are filled according to the
|
||||
given mode.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
%(input)s
|
||||
shift : float or sequence
|
||||
The shift along the axes. If a float, `shift` is the same for each
|
||||
axis. If a sequence, `shift` should contain one value for each axis.
|
||||
%(output)s
|
||||
order : int, optional
|
||||
The order of the spline interpolation, default is 3.
|
||||
The order has to be in the range 0-5.
|
||||
%(mode_interp_constant)s
|
||||
%(cval)s
|
||||
%(prefilter)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
shift : ndarray
|
||||
The shifted input.
|
||||
|
||||
Notes
|
||||
-----
|
||||
For complex-valued `input`, this function shifts the real and imaginary
|
||||
components independently.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
Complex-valued support added.
|
||||
|
||||
"""
|
||||
if order < 0 or order > 5:
|
||||
raise RuntimeError('spline order not supported')
|
||||
input = numpy.asarray(input)
|
||||
if input.ndim < 1:
|
||||
raise RuntimeError('input and output rank must be > 0')
|
||||
complex_output = numpy.iscomplexobj(input)
|
||||
output = _ni_support._get_output(output, input,
|
||||
complex_output=complex_output)
|
||||
if complex_output:
|
||||
# import under different name to avoid confusion with shift parameter
|
||||
from scipy.ndimage._interpolation import shift as _shift
|
||||
|
||||
kwargs = dict(order=order, mode=mode, prefilter=prefilter)
|
||||
_shift(input.real, shift, output=output.real, cval=numpy.real(cval),
|
||||
**kwargs)
|
||||
_shift(input.imag, shift, output=output.imag, cval=numpy.imag(cval),
|
||||
**kwargs)
|
||||
return output
|
||||
if prefilter and order > 1:
|
||||
padded, npad = _prepad_for_spline_filter(input, mode, cval)
|
||||
filtered = spline_filter(padded, order, output=numpy.float64,
|
||||
mode=mode)
|
||||
else:
|
||||
npad = 0
|
||||
filtered = input
|
||||
mode = _ni_support._extend_mode_to_code(mode)
|
||||
shift = _ni_support._normalize_sequence(shift, input.ndim)
|
||||
shift = [-ii for ii in shift]
|
||||
shift = numpy.asarray(shift, dtype=numpy.float64)
|
||||
if not shift.flags.contiguous:
|
||||
shift = shift.copy()
|
||||
_nd_image.zoom_shift(filtered, None, shift, output, order, mode, cval,
|
||||
npad, False)
|
||||
return output
|
||||
|
||||
|
||||
@docfiller
|
||||
def zoom(input, zoom, output=None, order=3, mode='constant', cval=0.0,
|
||||
prefilter=True, *, grid_mode=False):
|
||||
"""
|
||||
Zoom an array.
|
||||
|
||||
The array is zoomed using spline interpolation of the requested order.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
%(input)s
|
||||
zoom : float or sequence
|
||||
The zoom factor along the axes. If a float, `zoom` is the same for each
|
||||
axis. If a sequence, `zoom` should contain one value for each axis.
|
||||
%(output)s
|
||||
order : int, optional
|
||||
The order of the spline interpolation, default is 3.
|
||||
The order has to be in the range 0-5.
|
||||
%(mode_interp_constant)s
|
||||
%(cval)s
|
||||
%(prefilter)s
|
||||
grid_mode : bool, optional
|
||||
If False, the distance from the pixel centers is zoomed. Otherwise, the
|
||||
distance including the full pixel extent is used. For example, a 1d
|
||||
signal of length 5 is considered to have length 4 when `grid_mode` is
|
||||
False, but length 5 when `grid_mode` is True. See the following
|
||||
visual illustration:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
| pixel 1 | pixel 2 | pixel 3 | pixel 4 | pixel 5 |
|
||||
|<-------------------------------------->|
|
||||
vs.
|
||||
|<----------------------------------------------->|
|
||||
|
||||
The starting point of the arrow in the diagram above corresponds to
|
||||
coordinate location 0 in each mode.
|
||||
|
||||
Returns
|
||||
-------
|
||||
zoom : ndarray
|
||||
The zoomed input.
|
||||
|
||||
Notes
|
||||
-----
|
||||
For complex-valued `input`, this function zooms the real and imaginary
|
||||
components independently.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
Complex-valued support added.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy import ndimage, datasets
|
||||
>>> import matplotlib.pyplot as plt
|
||||
|
||||
>>> fig = plt.figure()
|
||||
>>> ax1 = fig.add_subplot(121) # left side
|
||||
>>> ax2 = fig.add_subplot(122) # right side
|
||||
>>> ascent = datasets.ascent()
|
||||
>>> result = ndimage.zoom(ascent, 3.0)
|
||||
>>> ax1.imshow(ascent, vmin=0, vmax=255)
|
||||
>>> ax2.imshow(result, vmin=0, vmax=255)
|
||||
>>> plt.show()
|
||||
|
||||
>>> print(ascent.shape)
|
||||
(512, 512)
|
||||
|
||||
>>> print(result.shape)
|
||||
(1536, 1536)
|
||||
"""
|
||||
if order < 0 or order > 5:
|
||||
raise RuntimeError('spline order not supported')
|
||||
input = numpy.asarray(input)
|
||||
if input.ndim < 1:
|
||||
raise RuntimeError('input and output rank must be > 0')
|
||||
zoom = _ni_support._normalize_sequence(zoom, input.ndim)
|
||||
output_shape = tuple(
|
||||
[int(round(ii * jj)) for ii, jj in zip(input.shape, zoom)])
|
||||
complex_output = numpy.iscomplexobj(input)
|
||||
output = _ni_support._get_output(output, input, shape=output_shape,
|
||||
complex_output=complex_output)
|
||||
if complex_output:
|
||||
# import under different name to avoid confusion with zoom parameter
|
||||
from scipy.ndimage._interpolation import zoom as _zoom
|
||||
|
||||
kwargs = dict(order=order, mode=mode, prefilter=prefilter)
|
||||
_zoom(input.real, zoom, output=output.real, cval=numpy.real(cval),
|
||||
**kwargs)
|
||||
_zoom(input.imag, zoom, output=output.imag, cval=numpy.imag(cval),
|
||||
**kwargs)
|
||||
return output
|
||||
if prefilter and order > 1:
|
||||
padded, npad = _prepad_for_spline_filter(input, mode, cval)
|
||||
filtered = spline_filter(padded, order, output=numpy.float64,
|
||||
mode=mode)
|
||||
else:
|
||||
npad = 0
|
||||
filtered = input
|
||||
if grid_mode:
|
||||
# warn about modes that may have surprising behavior
|
||||
suggest_mode = None
|
||||
if mode == 'constant':
|
||||
suggest_mode = 'grid-constant'
|
||||
elif mode == 'wrap':
|
||||
suggest_mode = 'grid-wrap'
|
||||
if suggest_mode is not None:
|
||||
warnings.warn(
|
||||
("It is recommended to use mode = {} instead of {} when "
|
||||
"grid_mode is True.").format(suggest_mode, mode)
|
||||
)
|
||||
mode = _ni_support._extend_mode_to_code(mode)
|
||||
|
||||
zoom_div = numpy.array(output_shape)
|
||||
zoom_nominator = numpy.array(input.shape)
|
||||
if not grid_mode:
|
||||
zoom_div -= 1
|
||||
zoom_nominator -= 1
|
||||
|
||||
# Zooming to infinite values is unpredictable, so just choose
|
||||
# zoom factor 1 instead
|
||||
zoom = numpy.divide(zoom_nominator, zoom_div,
|
||||
out=numpy.ones_like(input.shape, dtype=numpy.float64),
|
||||
where=zoom_div != 0)
|
||||
zoom = numpy.ascontiguousarray(zoom)
|
||||
_nd_image.zoom_shift(filtered, zoom, None, output, order, mode, cval, npad,
|
||||
grid_mode)
|
||||
return output
|
||||
|
||||
|
||||
@docfiller
|
||||
def rotate(input, angle, axes=(1, 0), reshape=True, output=None, order=3,
|
||||
mode='constant', cval=0.0, prefilter=True):
|
||||
"""
|
||||
Rotate an array.
|
||||
|
||||
The array is rotated in the plane defined by the two axes given by the
|
||||
`axes` parameter using spline interpolation of the requested order.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
%(input)s
|
||||
angle : float
|
||||
The rotation angle in degrees.
|
||||
axes : tuple of 2 ints, optional
|
||||
The two axes that define the plane of rotation. Default is the first
|
||||
two axes.
|
||||
reshape : bool, optional
|
||||
If `reshape` is true, the output shape is adapted so that the input
|
||||
array is contained completely in the output. Default is True.
|
||||
%(output)s
|
||||
order : int, optional
|
||||
The order of the spline interpolation, default is 3.
|
||||
The order has to be in the range 0-5.
|
||||
%(mode_interp_constant)s
|
||||
%(cval)s
|
||||
%(prefilter)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
rotate : ndarray
|
||||
The rotated input.
|
||||
|
||||
Notes
|
||||
-----
|
||||
For complex-valued `input`, this function rotates the real and imaginary
|
||||
components independently.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
Complex-valued support added.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy import ndimage, datasets
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> fig = plt.figure(figsize=(10, 3))
|
||||
>>> ax1, ax2, ax3 = fig.subplots(1, 3)
|
||||
>>> img = datasets.ascent()
|
||||
>>> img_45 = ndimage.rotate(img, 45, reshape=False)
|
||||
>>> full_img_45 = ndimage.rotate(img, 45, reshape=True)
|
||||
>>> ax1.imshow(img, cmap='gray')
|
||||
>>> ax1.set_axis_off()
|
||||
>>> ax2.imshow(img_45, cmap='gray')
|
||||
>>> ax2.set_axis_off()
|
||||
>>> ax3.imshow(full_img_45, cmap='gray')
|
||||
>>> ax3.set_axis_off()
|
||||
>>> fig.set_layout_engine('tight')
|
||||
>>> plt.show()
|
||||
>>> print(img.shape)
|
||||
(512, 512)
|
||||
>>> print(img_45.shape)
|
||||
(512, 512)
|
||||
>>> print(full_img_45.shape)
|
||||
(724, 724)
|
||||
|
||||
"""
|
||||
input_arr = numpy.asarray(input)
|
||||
ndim = input_arr.ndim
|
||||
|
||||
if ndim < 2:
|
||||
raise ValueError('input array should be at least 2D')
|
||||
|
||||
axes = list(axes)
|
||||
|
||||
if len(axes) != 2:
|
||||
raise ValueError('axes should contain exactly two values')
|
||||
|
||||
if not all([float(ax).is_integer() for ax in axes]):
|
||||
raise ValueError('axes should contain only integer values')
|
||||
|
||||
if axes[0] < 0:
|
||||
axes[0] += ndim
|
||||
if axes[1] < 0:
|
||||
axes[1] += ndim
|
||||
if axes[0] < 0 or axes[1] < 0 or axes[0] >= ndim or axes[1] >= ndim:
|
||||
raise ValueError('invalid rotation plane specified')
|
||||
|
||||
axes.sort()
|
||||
|
||||
c, s = special.cosdg(angle), special.sindg(angle)
|
||||
|
||||
rot_matrix = numpy.array([[c, s],
|
||||
[-s, c]])
|
||||
|
||||
img_shape = numpy.asarray(input_arr.shape)
|
||||
in_plane_shape = img_shape[axes]
|
||||
if reshape:
|
||||
# Compute transformed input bounds
|
||||
iy, ix = in_plane_shape
|
||||
out_bounds = rot_matrix @ [[0, 0, iy, iy],
|
||||
[0, ix, 0, ix]]
|
||||
# Compute the shape of the transformed input plane
|
||||
out_plane_shape = (out_bounds.ptp(axis=1) + 0.5).astype(int)
|
||||
else:
|
||||
out_plane_shape = img_shape[axes]
|
||||
|
||||
out_center = rot_matrix @ ((out_plane_shape - 1) / 2)
|
||||
in_center = (in_plane_shape - 1) / 2
|
||||
offset = in_center - out_center
|
||||
|
||||
output_shape = img_shape
|
||||
output_shape[axes] = out_plane_shape
|
||||
output_shape = tuple(output_shape)
|
||||
|
||||
complex_output = numpy.iscomplexobj(input_arr)
|
||||
output = _ni_support._get_output(output, input_arr, shape=output_shape,
|
||||
complex_output=complex_output)
|
||||
|
||||
if ndim <= 2:
|
||||
affine_transform(input_arr, rot_matrix, offset, output_shape, output,
|
||||
order, mode, cval, prefilter)
|
||||
else:
|
||||
# If ndim > 2, the rotation is applied over all the planes
|
||||
# parallel to axes
|
||||
planes_coord = itertools.product(
|
||||
*[[slice(None)] if ax in axes else range(img_shape[ax])
|
||||
for ax in range(ndim)])
|
||||
|
||||
out_plane_shape = tuple(out_plane_shape)
|
||||
|
||||
for coordinates in planes_coord:
|
||||
ia = input_arr[coordinates]
|
||||
oa = output[coordinates]
|
||||
affine_transform(ia, rot_matrix, offset, out_plane_shape,
|
||||
oa, order, mode, cval, prefilter)
|
||||
|
||||
return output
|
||||
1674
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_measurements.py
vendored
Normal file
1674
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_measurements.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2342
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_morphology.py
vendored
Normal file
2342
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_morphology.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_nd_image.cp311-win_amd64.dll.a
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_nd_image.cp311-win_amd64.dll.a
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_nd_image.cp311-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_nd_image.cp311-win_amd64.pyd
vendored
Normal file
Binary file not shown.
208
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ni_docstrings.py
vendored
Normal file
208
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ni_docstrings.py
vendored
Normal file
@@ -0,0 +1,208 @@
|
||||
"""Docstring components common to several ndimage functions."""
|
||||
from scipy._lib import doccer
|
||||
|
||||
__all__ = ['docfiller']
|
||||
|
||||
|
||||
_input_doc = (
|
||||
"""input : array_like
|
||||
The input array.""")
|
||||
_axis_doc = (
|
||||
"""axis : int, optional
|
||||
The axis of `input` along which to calculate. Default is -1.""")
|
||||
_output_doc = (
|
||||
"""output : array or dtype, optional
|
||||
The array in which to place the output, or the dtype of the
|
||||
returned array. By default an array of the same dtype as input
|
||||
will be created.""")
|
||||
_size_foot_doc = (
|
||||
"""size : scalar or tuple, optional
|
||||
See footprint, below. Ignored if footprint is given.
|
||||
footprint : array, optional
|
||||
Either `size` or `footprint` must be defined. `size` gives
|
||||
the shape that is taken from the input array, at every element
|
||||
position, to define the input to the filter function.
|
||||
`footprint` is a boolean array that specifies (implicitly) a
|
||||
shape, but also which of the elements within this shape will get
|
||||
passed to the filter function. Thus ``size=(n,m)`` is equivalent
|
||||
to ``footprint=np.ones((n,m))``. We adjust `size` to the number
|
||||
of dimensions of the input array, so that, if the input array is
|
||||
shape (10,10,10), and `size` is 2, then the actual size used is
|
||||
(2,2,2). When `footprint` is given, `size` is ignored.""")
|
||||
_mode_reflect_doc = (
|
||||
"""mode : {'reflect', 'constant', 'nearest', 'mirror', 'wrap'}, optional
|
||||
The `mode` parameter determines how the input array is extended
|
||||
beyond its boundaries. Default is 'reflect'. Behavior for each valid
|
||||
value is as follows:
|
||||
|
||||
'reflect' (`d c b a | a b c d | d c b a`)
|
||||
The input is extended by reflecting about the edge of the last
|
||||
pixel. This mode is also sometimes referred to as half-sample
|
||||
symmetric.
|
||||
|
||||
'constant' (`k k k k | a b c d | k k k k`)
|
||||
The input is extended by filling all values beyond the edge with
|
||||
the same constant value, defined by the `cval` parameter.
|
||||
|
||||
'nearest' (`a a a a | a b c d | d d d d`)
|
||||
The input is extended by replicating the last pixel.
|
||||
|
||||
'mirror' (`d c b | a b c d | c b a`)
|
||||
The input is extended by reflecting about the center of the last
|
||||
pixel. This mode is also sometimes referred to as whole-sample
|
||||
symmetric.
|
||||
|
||||
'wrap' (`a b c d | a b c d | a b c d`)
|
||||
The input is extended by wrapping around to the opposite edge.
|
||||
|
||||
For consistency with the interpolation functions, the following mode
|
||||
names can also be used:
|
||||
|
||||
'grid-mirror'
|
||||
This is a synonym for 'reflect'.
|
||||
|
||||
'grid-constant'
|
||||
This is a synonym for 'constant'.
|
||||
|
||||
'grid-wrap'
|
||||
This is a synonym for 'wrap'.""")
|
||||
|
||||
_mode_interp_constant_doc = (
|
||||
"""mode : {'reflect', 'grid-mirror', 'constant', 'grid-constant', 'nearest', \
|
||||
'mirror', 'grid-wrap', 'wrap'}, optional
|
||||
The `mode` parameter determines how the input array is extended
|
||||
beyond its boundaries. Default is 'constant'. Behavior for each valid
|
||||
value is as follows (see additional plots and details on
|
||||
:ref:`boundary modes <ndimage-interpolation-modes>`):
|
||||
|
||||
'reflect' (`d c b a | a b c d | d c b a`)
|
||||
The input is extended by reflecting about the edge of the last
|
||||
pixel. This mode is also sometimes referred to as half-sample
|
||||
symmetric.
|
||||
|
||||
'grid-mirror'
|
||||
This is a synonym for 'reflect'.
|
||||
|
||||
'constant' (`k k k k | a b c d | k k k k`)
|
||||
The input is extended by filling all values beyond the edge with
|
||||
the same constant value, defined by the `cval` parameter. No
|
||||
interpolation is performed beyond the edges of the input.
|
||||
|
||||
'grid-constant' (`k k k k | a b c d | k k k k`)
|
||||
The input is extended by filling all values beyond the edge with
|
||||
the same constant value, defined by the `cval` parameter. Interpolation
|
||||
occurs for samples outside the input's extent as well.
|
||||
|
||||
'nearest' (`a a a a | a b c d | d d d d`)
|
||||
The input is extended by replicating the last pixel.
|
||||
|
||||
'mirror' (`d c b | a b c d | c b a`)
|
||||
The input is extended by reflecting about the center of the last
|
||||
pixel. This mode is also sometimes referred to as whole-sample
|
||||
symmetric.
|
||||
|
||||
'grid-wrap' (`a b c d | a b c d | a b c d`)
|
||||
The input is extended by wrapping around to the opposite edge.
|
||||
|
||||
'wrap' (`d b c d | a b c d | b c a b`)
|
||||
The input is extended by wrapping around to the opposite edge, but in a
|
||||
way such that the last point and initial point exactly overlap. In this
|
||||
case it is not well defined which sample will be chosen at the point of
|
||||
overlap.""")
|
||||
_mode_interp_mirror_doc = (
|
||||
_mode_interp_constant_doc.replace("Default is 'constant'",
|
||||
"Default is 'mirror'")
|
||||
)
|
||||
assert _mode_interp_mirror_doc != _mode_interp_constant_doc, \
|
||||
'Default not replaced'
|
||||
|
||||
_mode_multiple_doc = (
|
||||
"""mode : str or sequence, optional
|
||||
The `mode` parameter determines how the input array is extended
|
||||
when the filter overlaps a border. By passing a sequence of modes
|
||||
with length equal to the number of dimensions of the input array,
|
||||
different modes can be specified along each axis. Default value is
|
||||
'reflect'. The valid values and their behavior is as follows:
|
||||
|
||||
'reflect' (`d c b a | a b c d | d c b a`)
|
||||
The input is extended by reflecting about the edge of the last
|
||||
pixel. This mode is also sometimes referred to as half-sample
|
||||
symmetric.
|
||||
|
||||
'constant' (`k k k k | a b c d | k k k k`)
|
||||
The input is extended by filling all values beyond the edge with
|
||||
the same constant value, defined by the `cval` parameter.
|
||||
|
||||
'nearest' (`a a a a | a b c d | d d d d`)
|
||||
The input is extended by replicating the last pixel.
|
||||
|
||||
'mirror' (`d c b | a b c d | c b a`)
|
||||
The input is extended by reflecting about the center of the last
|
||||
pixel. This mode is also sometimes referred to as whole-sample
|
||||
symmetric.
|
||||
|
||||
'wrap' (`a b c d | a b c d | a b c d`)
|
||||
The input is extended by wrapping around to the opposite edge.
|
||||
|
||||
For consistency with the interpolation functions, the following mode
|
||||
names can also be used:
|
||||
|
||||
'grid-constant'
|
||||
This is a synonym for 'constant'.
|
||||
|
||||
'grid-mirror'
|
||||
This is a synonym for 'reflect'.
|
||||
|
||||
'grid-wrap'
|
||||
This is a synonym for 'wrap'.""")
|
||||
_cval_doc = (
|
||||
"""cval : scalar, optional
|
||||
Value to fill past edges of input if `mode` is 'constant'. Default
|
||||
is 0.0.""")
|
||||
_origin_doc = (
|
||||
"""origin : int, optional
|
||||
Controls the placement of the filter on the input array's pixels.
|
||||
A value of 0 (the default) centers the filter over the pixel, with
|
||||
positive values shifting the filter to the left, and negative ones
|
||||
to the right.""")
|
||||
_origin_multiple_doc = (
|
||||
"""origin : int or sequence, optional
|
||||
Controls the placement of the filter on the input array's pixels.
|
||||
A value of 0 (the default) centers the filter over the pixel, with
|
||||
positive values shifting the filter to the left, and negative ones
|
||||
to the right. By passing a sequence of origins with length equal to
|
||||
the number of dimensions of the input array, different shifts can
|
||||
be specified along each axis.""")
|
||||
_extra_arguments_doc = (
|
||||
"""extra_arguments : sequence, optional
|
||||
Sequence of extra positional arguments to pass to passed function.""")
|
||||
_extra_keywords_doc = (
|
||||
"""extra_keywords : dict, optional
|
||||
dict of extra keyword arguments to pass to passed function.""")
|
||||
_prefilter_doc = (
|
||||
"""prefilter : bool, optional
|
||||
Determines if the input array is prefiltered with `spline_filter`
|
||||
before interpolation. The default is True, which will create a
|
||||
temporary `float64` array of filtered values if `order > 1`. If
|
||||
setting this to False, the output will be slightly blurred if
|
||||
`order > 1`, unless the input is prefiltered, i.e. it is the result
|
||||
of calling `spline_filter` on the original input.""")
|
||||
|
||||
docdict = {
|
||||
'input': _input_doc,
|
||||
'axis': _axis_doc,
|
||||
'output': _output_doc,
|
||||
'size_foot': _size_foot_doc,
|
||||
'mode_interp_constant': _mode_interp_constant_doc,
|
||||
'mode_interp_mirror': _mode_interp_mirror_doc,
|
||||
'mode_reflect': _mode_reflect_doc,
|
||||
'mode_multiple': _mode_multiple_doc,
|
||||
'cval': _cval_doc,
|
||||
'origin': _origin_doc,
|
||||
'origin_multiple': _origin_multiple_doc,
|
||||
'extra_arguments': _extra_arguments_doc,
|
||||
'extra_keywords': _extra_keywords_doc,
|
||||
'prefilter': _prefilter_doc
|
||||
}
|
||||
|
||||
docfiller = doccer.filldoc(docdict)
|
||||
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ni_label.cp311-win_amd64.dll.a
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ni_label.cp311-win_amd64.dll.a
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ni_label.cp311-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ni_label.cp311-win_amd64.pyd
vendored
Normal file
Binary file not shown.
97
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ni_support.py
vendored
Normal file
97
.CondaPkg/env/Lib/site-packages/scipy/ndimage/_ni_support.py
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
# Copyright (C) 2003-2005 Peter J. Verveer
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# 3. The name of the author may not be used to endorse or promote
|
||||
# products derived from this software without specific prior
|
||||
# written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
from collections.abc import Iterable
|
||||
import warnings
|
||||
import numpy
|
||||
|
||||
|
||||
def _extend_mode_to_code(mode):
|
||||
"""Convert an extension mode to the corresponding integer code.
|
||||
"""
|
||||
if mode == 'nearest':
|
||||
return 0
|
||||
elif mode == 'wrap':
|
||||
return 1
|
||||
elif mode in ['reflect', 'grid-mirror']:
|
||||
return 2
|
||||
elif mode == 'mirror':
|
||||
return 3
|
||||
elif mode == 'constant':
|
||||
return 4
|
||||
elif mode == 'grid-wrap':
|
||||
return 5
|
||||
elif mode == 'grid-constant':
|
||||
return 6
|
||||
else:
|
||||
raise RuntimeError('boundary mode not supported')
|
||||
|
||||
|
||||
def _normalize_sequence(input, rank):
|
||||
"""If input is a scalar, create a sequence of length equal to the
|
||||
rank by duplicating the input. If input is a sequence,
|
||||
check if its length is equal to the length of array.
|
||||
"""
|
||||
is_str = isinstance(input, str)
|
||||
if not is_str and isinstance(input, Iterable):
|
||||
normalized = list(input)
|
||||
if len(normalized) != rank:
|
||||
err = "sequence argument must have length equal to input rank"
|
||||
raise RuntimeError(err)
|
||||
else:
|
||||
normalized = [input] * rank
|
||||
return normalized
|
||||
|
||||
|
||||
def _get_output(output, input, shape=None, complex_output=False):
|
||||
if shape is None:
|
||||
shape = input.shape
|
||||
if output is None:
|
||||
if not complex_output:
|
||||
output = numpy.zeros(shape, dtype=input.dtype.name)
|
||||
else:
|
||||
complex_type = numpy.promote_types(input.dtype, numpy.complex64)
|
||||
output = numpy.zeros(shape, dtype=complex_type)
|
||||
elif isinstance(output, (type, numpy.dtype)):
|
||||
# Classes (like `np.float32`) and dtypes are interpreted as dtype
|
||||
if complex_output and numpy.dtype(output).kind != 'c':
|
||||
warnings.warn("promoting specified output dtype to complex")
|
||||
output = numpy.promote_types(output, numpy.complex64)
|
||||
output = numpy.zeros(shape, dtype=output)
|
||||
elif isinstance(output, str):
|
||||
output = numpy.sctypeDict[output]
|
||||
if complex_output and numpy.dtype(output).kind != 'c':
|
||||
raise RuntimeError("output must have complex dtype")
|
||||
output = numpy.zeros(shape, dtype=output)
|
||||
elif output.shape != shape:
|
||||
raise RuntimeError("output shape not correct")
|
||||
elif complex_output and output.dtype.kind != 'c':
|
||||
raise RuntimeError("output must have complex dtype")
|
||||
return output
|
||||
35
.CondaPkg/env/Lib/site-packages/scipy/ndimage/filters.py
vendored
Normal file
35
.CondaPkg/env/Lib/site-packages/scipy/ndimage/filters.py
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.ndimage` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
import warnings
|
||||
from . import _filters
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'correlate1d', 'convolve1d', 'gaussian_filter1d',
|
||||
'gaussian_filter', 'prewitt', 'sobel', 'generic_laplace',
|
||||
'laplace', 'gaussian_laplace', 'generic_gradient_magnitude',
|
||||
'gaussian_gradient_magnitude', 'correlate', 'convolve',
|
||||
'uniform_filter1d', 'uniform_filter', 'minimum_filter1d',
|
||||
'maximum_filter1d', 'minimum_filter', 'maximum_filter',
|
||||
'rank_filter', 'median_filter', 'percentile_filter',
|
||||
'generic_filter1d', 'generic_filter', 'normalize_axis_index'
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
if name not in __all__:
|
||||
raise AttributeError(
|
||||
"scipy.ndimage.filters is deprecated and has no attribute "
|
||||
f"{name}. Try looking in scipy.ndimage instead.")
|
||||
|
||||
warnings.warn(f"Please use `{name}` from the `scipy.ndimage` namespace, "
|
||||
"the `scipy.ndimage.filters` namespace is deprecated.",
|
||||
category=DeprecationWarning, stacklevel=2)
|
||||
|
||||
return getattr(_filters, name)
|
||||
29
.CondaPkg/env/Lib/site-packages/scipy/ndimage/fourier.py
vendored
Normal file
29
.CondaPkg/env/Lib/site-packages/scipy/ndimage/fourier.py
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.ndimage` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
import warnings
|
||||
from . import _fourier
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'fourier_gaussian', 'fourier_uniform',
|
||||
'fourier_ellipsoid', 'fourier_shift', 'normalize_axis_index'
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
if name not in __all__:
|
||||
raise AttributeError(
|
||||
"scipy.ndimage.fourier is deprecated and has no attribute "
|
||||
f"{name}. Try looking in scipy.ndimage instead.")
|
||||
|
||||
warnings.warn(f"Please use `{name}` from the `scipy.ndimage` namespace, "
|
||||
"the `scipy.ndimage.fourier` namespace is deprecated.",
|
||||
category=DeprecationWarning, stacklevel=2)
|
||||
|
||||
return getattr(_fourier, name)
|
||||
31
.CondaPkg/env/Lib/site-packages/scipy/ndimage/interpolation.py
vendored
Normal file
31
.CondaPkg/env/Lib/site-packages/scipy/ndimage/interpolation.py
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.ndimage` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
import warnings
|
||||
from . import _interpolation
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'spline_filter1d', 'spline_filter',
|
||||
'geometric_transform', 'map_coordinates',
|
||||
'affine_transform', 'shift', 'zoom', 'rotate',
|
||||
'normalize_axis_index', 'docfiller'
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
if name not in __all__:
|
||||
raise AttributeError(
|
||||
"scipy.ndimage.interpolation is deprecated and has no attribute "
|
||||
f"{name}. Try looking in scipy.ndimage instead.")
|
||||
|
||||
warnings.warn(f"Please use `{name}` from the `scipy.ndimage` namespace, "
|
||||
"the `scipy.ndimage.interpolation` namespace is deprecated.",
|
||||
category=DeprecationWarning, stacklevel=2)
|
||||
|
||||
return getattr(_interpolation, name)
|
||||
32
.CondaPkg/env/Lib/site-packages/scipy/ndimage/measurements.py
vendored
Normal file
32
.CondaPkg/env/Lib/site-packages/scipy/ndimage/measurements.py
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.ndimage` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
import warnings
|
||||
from . import _measurements
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'label', 'find_objects', 'labeled_comprehension',
|
||||
'sum', 'mean', 'variance', 'standard_deviation',
|
||||
'minimum', 'maximum', 'median', 'minimum_position',
|
||||
'maximum_position', 'extrema', 'center_of_mass',
|
||||
'histogram', 'watershed_ift', 'sum_labels'
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
if name not in __all__:
|
||||
raise AttributeError(
|
||||
"scipy.ndimage.measurements is deprecated and has no attribute "
|
||||
f"{name}. Try looking in scipy.ndimage instead.")
|
||||
|
||||
warnings.warn(f"Please use `{name}` from the `scipy.ndimage` namespace, "
|
||||
"the `scipy.ndimage.measurements` namespace is deprecated.",
|
||||
category=DeprecationWarning, stacklevel=2)
|
||||
|
||||
return getattr(_measurements, name)
|
||||
35
.CondaPkg/env/Lib/site-packages/scipy/ndimage/morphology.py
vendored
Normal file
35
.CondaPkg/env/Lib/site-packages/scipy/ndimage/morphology.py
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.ndimage` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
import warnings
|
||||
from . import _morphology
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'iterate_structure', 'generate_binary_structure',
|
||||
'binary_erosion', 'binary_dilation', 'binary_opening',
|
||||
'binary_closing', 'binary_hit_or_miss', 'binary_propagation',
|
||||
'binary_fill_holes', 'grey_erosion', 'grey_dilation',
|
||||
'grey_opening', 'grey_closing', 'morphological_gradient',
|
||||
'morphological_laplace', 'white_tophat', 'black_tophat',
|
||||
'distance_transform_bf', 'distance_transform_cdt',
|
||||
'distance_transform_edt'
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
if name not in __all__:
|
||||
raise AttributeError(
|
||||
"scipy.ndimage.morphology is deprecated and has no attribute "
|
||||
f"{name}. Try looking in scipy.ndimage instead.")
|
||||
|
||||
warnings.warn(f"Please use `{name}` from the `scipy.ndimage` namespace, "
|
||||
"the `scipy.ndimage.morphology` namespace is deprecated.",
|
||||
category=DeprecationWarning, stacklevel=2)
|
||||
|
||||
return getattr(_morphology, name)
|
||||
15
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__init__.py
vendored
Normal file
15
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__init__.py
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
from __future__ import annotations
|
||||
from typing import List, Type
|
||||
import numpy
|
||||
|
||||
# list of numarray data types
|
||||
integer_types: List[Type] = [
|
||||
numpy.int8, numpy.uint8, numpy.int16, numpy.uint16,
|
||||
numpy.int32, numpy.uint32, numpy.int64, numpy.uint64]
|
||||
|
||||
float_types: List[Type] = [numpy.float32, numpy.float64]
|
||||
|
||||
complex_types: List[Type] = [numpy.complex64, numpy.complex128]
|
||||
|
||||
types: List[Type] = integer_types + float_types
|
||||
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/__init__.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/__init__.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_c_api.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_c_api.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_datatypes.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_datatypes.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_filters.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_filters.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_fourier.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_fourier.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_interpolation.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_interpolation.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_measurements.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_measurements.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_morphology.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_morphology.cpython-311.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_splines.cpython-311.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/__pycache__/test_splines.cpython-311.pyc
vendored
Normal file
Binary file not shown.
21
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/data/label_inputs.txt
vendored
Normal file
21
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/data/label_inputs.txt
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 0 1 1 1
|
||||
1 1 0 0 0 1 1
|
||||
1 0 1 0 1 0 1
|
||||
0 0 0 1 0 0 0
|
||||
1 0 1 0 1 0 1
|
||||
1 1 0 0 0 1 1
|
||||
1 1 1 0 1 1 1
|
||||
1 0 1 1 1 0 1
|
||||
0 0 0 1 0 0 0
|
||||
1 0 0 1 0 0 1
|
||||
1 1 1 1 1 1 1
|
||||
1 0 0 1 0 0 1
|
||||
0 0 0 1 0 0 0
|
||||
1 0 1 1 1 0 1
|
||||
294
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/data/label_results.txt
vendored
Normal file
294
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/data/label_results.txt
vendored
Normal file
@@ -0,0 +1,294 @@
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
2 2 2 2 2 2 2
|
||||
3 3 3 3 3 3 3
|
||||
4 4 4 4 4 4 4
|
||||
5 5 5 5 5 5 5
|
||||
6 6 6 6 6 6 6
|
||||
7 7 7 7 7 7 7
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 2 3 4 5 6 7
|
||||
8 9 10 11 12 13 14
|
||||
15 16 17 18 19 20 21
|
||||
22 23 24 25 26 27 28
|
||||
29 30 31 32 33 34 35
|
||||
36 37 38 39 40 41 42
|
||||
43 44 45 46 47 48 49
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 2 3 4 5 6 7
|
||||
8 1 2 3 4 5 6
|
||||
9 8 1 2 3 4 5
|
||||
10 9 8 1 2 3 4
|
||||
11 10 9 8 1 2 3
|
||||
12 11 10 9 8 1 2
|
||||
13 12 11 10 9 8 1
|
||||
1 2 3 4 5 6 7
|
||||
1 2 3 4 5 6 7
|
||||
1 2 3 4 5 6 7
|
||||
1 2 3 4 5 6 7
|
||||
1 2 3 4 5 6 7
|
||||
1 2 3 4 5 6 7
|
||||
1 2 3 4 5 6 7
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 2 1 2 1 2 1
|
||||
2 1 2 1 2 1 2
|
||||
1 2 1 2 1 2 1
|
||||
2 1 2 1 2 1 2
|
||||
1 2 1 2 1 2 1
|
||||
2 1 2 1 2 1 2
|
||||
1 2 1 2 1 2 1
|
||||
1 2 3 4 5 6 7
|
||||
2 3 4 5 6 7 8
|
||||
3 4 5 6 7 8 9
|
||||
4 5 6 7 8 9 10
|
||||
5 6 7 8 9 10 11
|
||||
6 7 8 9 10 11 12
|
||||
7 8 9 10 11 12 13
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 1 1 1 1
|
||||
1 1 1 0 2 2 2
|
||||
1 1 0 0 0 2 2
|
||||
1 0 3 0 2 0 4
|
||||
0 0 0 2 0 0 0
|
||||
5 0 2 0 6 0 7
|
||||
2 2 0 0 0 7 7
|
||||
2 2 2 0 7 7 7
|
||||
1 1 1 0 2 2 2
|
||||
1 1 0 0 0 2 2
|
||||
3 0 1 0 4 0 2
|
||||
0 0 0 1 0 0 0
|
||||
5 0 6 0 1 0 7
|
||||
5 5 0 0 0 1 1
|
||||
5 5 5 0 1 1 1
|
||||
1 1 1 0 2 2 2
|
||||
3 3 0 0 0 4 4
|
||||
5 0 6 0 7 0 8
|
||||
0 0 0 9 0 0 0
|
||||
10 0 11 0 12 0 13
|
||||
14 14 0 0 0 15 15
|
||||
16 16 16 0 17 17 17
|
||||
1 1 1 0 2 3 3
|
||||
1 1 0 0 0 3 3
|
||||
1 0 4 0 3 0 3
|
||||
0 0 0 3 0 0 0
|
||||
3 0 3 0 5 0 6
|
||||
3 3 0 0 0 6 6
|
||||
3 3 7 0 6 6 6
|
||||
1 2 3 0 4 5 6
|
||||
7 8 0 0 0 9 10
|
||||
11 0 12 0 13 0 14
|
||||
0 0 0 15 0 0 0
|
||||
16 0 17 0 18 0 19
|
||||
20 21 0 0 0 22 23
|
||||
24 25 26 0 27 28 29
|
||||
1 1 1 0 2 2 2
|
||||
1 1 0 0 0 2 2
|
||||
1 0 3 0 2 0 2
|
||||
0 0 0 2 0 0 0
|
||||
2 0 2 0 4 0 5
|
||||
2 2 0 0 0 5 5
|
||||
2 2 2 0 5 5 5
|
||||
1 1 1 0 2 2 2
|
||||
1 1 0 0 0 2 2
|
||||
1 0 3 0 4 0 2
|
||||
0 0 0 5 0 0 0
|
||||
6 0 7 0 8 0 9
|
||||
6 6 0 0 0 9 9
|
||||
6 6 6 0 9 9 9
|
||||
1 2 3 0 4 5 6
|
||||
7 1 0 0 0 4 5
|
||||
8 0 1 0 9 0 4
|
||||
0 0 0 1 0 0 0
|
||||
10 0 11 0 1 0 12
|
||||
13 10 0 0 0 1 14
|
||||
15 13 10 0 16 17 1
|
||||
1 2 3 0 4 5 6
|
||||
1 2 0 0 0 5 6
|
||||
1 0 7 0 8 0 6
|
||||
0 0 0 9 0 0 0
|
||||
10 0 11 0 12 0 13
|
||||
10 14 0 0 0 15 13
|
||||
10 14 16 0 17 15 13
|
||||
1 1 1 0 1 1 1
|
||||
1 1 0 0 0 1 1
|
||||
1 0 1 0 1 0 1
|
||||
0 0 0 1 0 0 0
|
||||
1 0 1 0 1 0 1
|
||||
1 1 0 0 0 1 1
|
||||
1 1 1 0 1 1 1
|
||||
1 1 2 0 3 3 3
|
||||
1 1 0 0 0 3 3
|
||||
1 0 1 0 4 0 3
|
||||
0 0 0 1 0 0 0
|
||||
5 0 6 0 1 0 1
|
||||
5 5 0 0 0 1 1
|
||||
5 5 5 0 7 1 1
|
||||
1 2 1 0 1 3 1
|
||||
2 1 0 0 0 1 3
|
||||
1 0 1 0 1 0 1
|
||||
0 0 0 1 0 0 0
|
||||
1 0 1 0 1 0 1
|
||||
4 1 0 0 0 1 5
|
||||
1 4 1 0 1 5 1
|
||||
1 2 3 0 4 5 6
|
||||
2 3 0 0 0 6 7
|
||||
3 0 8 0 6 0 9
|
||||
0 0 0 6 0 0 0
|
||||
10 0 6 0 11 0 12
|
||||
13 6 0 0 0 12 14
|
||||
6 15 16 0 12 14 17
|
||||
1 1 1 0 2 2 2
|
||||
1 1 0 0 0 2 2
|
||||
1 0 1 0 3 0 2
|
||||
0 0 0 1 0 0 0
|
||||
4 0 5 0 1 0 1
|
||||
4 4 0 0 0 1 1
|
||||
4 4 4 0 1 1 1
|
||||
1 0 2 2 2 0 3
|
||||
0 0 0 2 0 0 0
|
||||
4 0 0 5 0 0 5
|
||||
5 5 5 5 5 5 5
|
||||
5 0 0 5 0 0 6
|
||||
0 0 0 7 0 0 0
|
||||
8 0 7 7 7 0 9
|
||||
1 0 2 2 2 0 3
|
||||
0 0 0 2 0 0 0
|
||||
4 0 0 4 0 0 5
|
||||
4 4 4 4 4 4 4
|
||||
6 0 0 4 0 0 4
|
||||
0 0 0 7 0 0 0
|
||||
8 0 7 7 7 0 9
|
||||
1 0 2 2 2 0 3
|
||||
0 0 0 4 0 0 0
|
||||
5 0 0 6 0 0 7
|
||||
8 8 8 8 8 8 8
|
||||
9 0 0 10 0 0 11
|
||||
0 0 0 12 0 0 0
|
||||
13 0 14 14 14 0 15
|
||||
1 0 2 3 3 0 4
|
||||
0 0 0 3 0 0 0
|
||||
5 0 0 3 0 0 6
|
||||
5 5 3 3 3 6 6
|
||||
5 0 0 3 0 0 6
|
||||
0 0 0 3 0 0 0
|
||||
7 0 3 3 8 0 9
|
||||
1 0 2 3 4 0 5
|
||||
0 0 0 6 0 0 0
|
||||
7 0 0 8 0 0 9
|
||||
10 11 12 13 14 15 16
|
||||
17 0 0 18 0 0 19
|
||||
0 0 0 20 0 0 0
|
||||
21 0 22 23 24 0 25
|
||||
1 0 2 2 2 0 3
|
||||
0 0 0 2 0 0 0
|
||||
2 0 0 2 0 0 2
|
||||
2 2 2 2 2 2 2
|
||||
2 0 0 2 0 0 2
|
||||
0 0 0 2 0 0 0
|
||||
4 0 2 2 2 0 5
|
||||
1 0 2 2 2 0 3
|
||||
0 0 0 2 0 0 0
|
||||
2 0 0 2 0 0 2
|
||||
2 2 2 2 2 2 2
|
||||
2 0 0 2 0 0 2
|
||||
0 0 0 2 0 0 0
|
||||
4 0 2 2 2 0 5
|
||||
1 0 2 3 4 0 5
|
||||
0 0 0 2 0 0 0
|
||||
6 0 0 7 0 0 8
|
||||
9 6 10 11 7 12 13
|
||||
14 0 0 10 0 0 12
|
||||
0 0 0 15 0 0 0
|
||||
16 0 17 18 15 0 19
|
||||
1 0 2 3 4 0 5
|
||||
0 0 0 3 0 0 0
|
||||
6 0 0 3 0 0 7
|
||||
6 8 9 3 10 11 7
|
||||
6 0 0 3 0 0 7
|
||||
0 0 0 3 0 0 0
|
||||
12 0 13 3 14 0 15
|
||||
1 0 2 2 2 0 3
|
||||
0 0 0 2 0 0 0
|
||||
2 0 0 2 0 0 2
|
||||
2 2 2 2 2 2 2
|
||||
2 0 0 2 0 0 2
|
||||
0 0 0 2 0 0 0
|
||||
4 0 2 2 2 0 5
|
||||
1 0 2 2 3 0 4
|
||||
0 0 0 2 0 0 0
|
||||
5 0 0 2 0 0 6
|
||||
5 5 2 2 2 6 6
|
||||
5 0 0 2 0 0 6
|
||||
0 0 0 2 0 0 0
|
||||
7 0 8 2 2 0 9
|
||||
1 0 2 3 2 0 4
|
||||
0 0 0 2 0 0 0
|
||||
5 0 0 6 0 0 7
|
||||
8 5 6 9 6 7 10
|
||||
5 0 0 6 0 0 7
|
||||
0 0 0 11 0 0 0
|
||||
12 0 11 13 11 0 14
|
||||
1 0 2 3 4 0 5
|
||||
0 0 0 4 0 0 0
|
||||
6 0 0 7 0 0 8
|
||||
9 10 7 11 12 8 13
|
||||
10 0 0 12 0 0 14
|
||||
0 0 0 15 0 0 0
|
||||
16 0 15 17 18 0 19
|
||||
1 0 2 2 2 0 3
|
||||
0 0 0 2 0 0 0
|
||||
2 0 0 2 0 0 2
|
||||
2 2 2 2 2 2 2
|
||||
2 0 0 2 0 0 2
|
||||
0 0 0 2 0 0 0
|
||||
4 0 2 2 2 0 5
|
||||
42
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/data/label_strels.txt
vendored
Normal file
42
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/data/label_strels.txt
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
0 0 1
|
||||
1 1 1
|
||||
1 0 0
|
||||
1 0 0
|
||||
1 1 1
|
||||
0 0 1
|
||||
0 0 0
|
||||
1 1 1
|
||||
0 0 0
|
||||
0 1 1
|
||||
0 1 0
|
||||
1 1 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 1 1
|
||||
1 1 1
|
||||
1 1 0
|
||||
0 1 0
|
||||
1 1 1
|
||||
0 1 0
|
||||
1 0 0
|
||||
0 1 0
|
||||
0 0 1
|
||||
0 1 0
|
||||
0 1 0
|
||||
0 1 0
|
||||
1 1 1
|
||||
1 1 1
|
||||
1 1 1
|
||||
1 1 0
|
||||
0 1 0
|
||||
0 1 1
|
||||
1 0 1
|
||||
0 1 0
|
||||
1 0 1
|
||||
0 0 1
|
||||
0 1 0
|
||||
1 0 0
|
||||
1 1 0
|
||||
1 1 1
|
||||
0 1 1
|
||||
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/dots.png
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/dots.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
94
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_c_api.py
vendored
Normal file
94
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_c_api.py
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
import numpy as np
|
||||
from numpy.testing import assert_allclose
|
||||
|
||||
from scipy import ndimage
|
||||
from scipy.ndimage import _ctest
|
||||
from scipy.ndimage import _cytest
|
||||
from scipy._lib._ccallback import LowLevelCallable
|
||||
|
||||
FILTER1D_FUNCTIONS = [
|
||||
lambda filter_size: _ctest.filter1d(filter_size),
|
||||
lambda filter_size: _cytest.filter1d(filter_size, with_signature=False),
|
||||
lambda filter_size: LowLevelCallable(_cytest.filter1d(filter_size, with_signature=True)),
|
||||
lambda filter_size: LowLevelCallable.from_cython(_cytest, "_filter1d",
|
||||
_cytest.filter1d_capsule(filter_size)),
|
||||
]
|
||||
|
||||
FILTER2D_FUNCTIONS = [
|
||||
lambda weights: _ctest.filter2d(weights),
|
||||
lambda weights: _cytest.filter2d(weights, with_signature=False),
|
||||
lambda weights: LowLevelCallable(_cytest.filter2d(weights, with_signature=True)),
|
||||
lambda weights: LowLevelCallable.from_cython(_cytest, "_filter2d", _cytest.filter2d_capsule(weights)),
|
||||
]
|
||||
|
||||
TRANSFORM_FUNCTIONS = [
|
||||
lambda shift: _ctest.transform(shift),
|
||||
lambda shift: _cytest.transform(shift, with_signature=False),
|
||||
lambda shift: LowLevelCallable(_cytest.transform(shift, with_signature=True)),
|
||||
lambda shift: LowLevelCallable.from_cython(_cytest, "_transform", _cytest.transform_capsule(shift)),
|
||||
]
|
||||
|
||||
|
||||
def test_generic_filter():
|
||||
def filter2d(footprint_elements, weights):
|
||||
return (weights*footprint_elements).sum()
|
||||
|
||||
def check(j):
|
||||
func = FILTER2D_FUNCTIONS[j]
|
||||
|
||||
im = np.ones((20, 20))
|
||||
im[:10,:10] = 0
|
||||
footprint = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]])
|
||||
footprint_size = np.count_nonzero(footprint)
|
||||
weights = np.ones(footprint_size)/footprint_size
|
||||
|
||||
res = ndimage.generic_filter(im, func(weights),
|
||||
footprint=footprint)
|
||||
std = ndimage.generic_filter(im, filter2d, footprint=footprint,
|
||||
extra_arguments=(weights,))
|
||||
assert_allclose(res, std, err_msg="#{} failed".format(j))
|
||||
|
||||
for j, func in enumerate(FILTER2D_FUNCTIONS):
|
||||
check(j)
|
||||
|
||||
|
||||
def test_generic_filter1d():
|
||||
def filter1d(input_line, output_line, filter_size):
|
||||
for i in range(output_line.size):
|
||||
output_line[i] = 0
|
||||
for j in range(filter_size):
|
||||
output_line[i] += input_line[i+j]
|
||||
output_line /= filter_size
|
||||
|
||||
def check(j):
|
||||
func = FILTER1D_FUNCTIONS[j]
|
||||
|
||||
im = np.tile(np.hstack((np.zeros(10), np.ones(10))), (10, 1))
|
||||
filter_size = 3
|
||||
|
||||
res = ndimage.generic_filter1d(im, func(filter_size),
|
||||
filter_size)
|
||||
std = ndimage.generic_filter1d(im, filter1d, filter_size,
|
||||
extra_arguments=(filter_size,))
|
||||
assert_allclose(res, std, err_msg="#{} failed".format(j))
|
||||
|
||||
for j, func in enumerate(FILTER1D_FUNCTIONS):
|
||||
check(j)
|
||||
|
||||
|
||||
def test_geometric_transform():
|
||||
def transform(output_coordinates, shift):
|
||||
return output_coordinates[0] - shift, output_coordinates[1] - shift
|
||||
|
||||
def check(j):
|
||||
func = TRANSFORM_FUNCTIONS[j]
|
||||
|
||||
im = np.arange(12).reshape(4, 3).astype(np.float64)
|
||||
shift = 0.5
|
||||
|
||||
res = ndimage.geometric_transform(im, func(shift))
|
||||
std = ndimage.geometric_transform(im, transform, extra_arguments=(shift,))
|
||||
assert_allclose(res, std, err_msg="#{} failed".format(j))
|
||||
|
||||
for j, func in enumerate(TRANSFORM_FUNCTIONS):
|
||||
check(j)
|
||||
66
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_datatypes.py
vendored
Normal file
66
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_datatypes.py
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
""" Testing data types for ndimage calls
|
||||
"""
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
from numpy.testing import assert_array_almost_equal, assert_
|
||||
import pytest
|
||||
|
||||
from scipy import ndimage
|
||||
|
||||
|
||||
def test_map_coordinates_dts():
|
||||
# check that ndimage accepts different data types for interpolation
|
||||
data = np.array([[4, 1, 3, 2],
|
||||
[7, 6, 8, 5],
|
||||
[3, 5, 3, 6]])
|
||||
shifted_data = np.array([[0, 0, 0, 0],
|
||||
[0, 4, 1, 3],
|
||||
[0, 7, 6, 8]])
|
||||
idx = np.indices(data.shape)
|
||||
dts = (np.uint8, np.uint16, np.uint32, np.uint64,
|
||||
np.int8, np.int16, np.int32, np.int64,
|
||||
np.intp, np.uintp, np.float32, np.float64)
|
||||
for order in range(0, 6):
|
||||
for data_dt in dts:
|
||||
these_data = data.astype(data_dt)
|
||||
for coord_dt in dts:
|
||||
# affine mapping
|
||||
mat = np.eye(2, dtype=coord_dt)
|
||||
off = np.zeros((2,), dtype=coord_dt)
|
||||
out = ndimage.affine_transform(these_data, mat, off)
|
||||
assert_array_almost_equal(these_data, out)
|
||||
# map coordinates
|
||||
coords_m1 = idx.astype(coord_dt) - 1
|
||||
coords_p10 = idx.astype(coord_dt) + 10
|
||||
out = ndimage.map_coordinates(these_data, coords_m1, order=order)
|
||||
assert_array_almost_equal(out, shifted_data)
|
||||
# check constant fill works
|
||||
out = ndimage.map_coordinates(these_data, coords_p10, order=order)
|
||||
assert_array_almost_equal(out, np.zeros((3,4)))
|
||||
# check shift and zoom
|
||||
out = ndimage.shift(these_data, 1)
|
||||
assert_array_almost_equal(out, shifted_data)
|
||||
out = ndimage.zoom(these_data, 1)
|
||||
assert_array_almost_equal(these_data, out)
|
||||
|
||||
|
||||
@pytest.mark.xfail(not sys.platform == 'darwin', reason="runs only on darwin")
|
||||
def test_uint64_max():
|
||||
# Test interpolation respects uint64 max. Reported to fail at least on
|
||||
# win32 (due to the 32 bit visual C compiler using signed int64 when
|
||||
# converting between uint64 to double) and Debian on s390x.
|
||||
# Interpolation is always done in double precision floating point, so
|
||||
# we use the largest uint64 value for which int(float(big)) still fits
|
||||
# in a uint64.
|
||||
big = 2**64 - 1025
|
||||
arr = np.array([big, big, big], dtype=np.uint64)
|
||||
# Tests geometric transform (map_coordinates, affine_transform)
|
||||
inds = np.indices(arr.shape) - 0.1
|
||||
x = ndimage.map_coordinates(arr, inds)
|
||||
assert_(x[1] == int(float(big)))
|
||||
assert_(x[2] == int(float(big)))
|
||||
# Tests zoom / shift
|
||||
x = ndimage.shift(arr, 0.1)
|
||||
assert_(x[1] == int(float(big)))
|
||||
assert_(x[2] == int(float(big)))
|
||||
1995
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_filters.py
vendored
Normal file
1995
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_filters.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
151
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_fourier.py
vendored
Normal file
151
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_fourier.py
vendored
Normal file
@@ -0,0 +1,151 @@
|
||||
import numpy
|
||||
from numpy import fft
|
||||
from numpy.testing import (assert_almost_equal, assert_array_almost_equal,
|
||||
assert_equal)
|
||||
|
||||
import pytest
|
||||
|
||||
from scipy import ndimage
|
||||
|
||||
|
||||
class TestNdimageFourier:
|
||||
|
||||
@pytest.mark.parametrize('shape', [(32, 16), (31, 15), (1, 10)])
|
||||
@pytest.mark.parametrize('dtype, dec',
|
||||
[(numpy.float32, 6), (numpy.float64, 14)])
|
||||
def test_fourier_gaussian_real01(self, shape, dtype, dec):
|
||||
a = numpy.zeros(shape, dtype)
|
||||
a[0, 0] = 1.0
|
||||
a = fft.rfft(a, shape[0], 0)
|
||||
a = fft.fft(a, shape[1], 1)
|
||||
a = ndimage.fourier_gaussian(a, [5.0, 2.5], shape[0], 0)
|
||||
a = fft.ifft(a, shape[1], 1)
|
||||
a = fft.irfft(a, shape[0], 0)
|
||||
assert_almost_equal(ndimage.sum(a), 1, decimal=dec)
|
||||
|
||||
@pytest.mark.parametrize('shape', [(32, 16), (31, 15)])
|
||||
@pytest.mark.parametrize('dtype, dec',
|
||||
[(numpy.complex64, 6), (numpy.complex128, 14)])
|
||||
def test_fourier_gaussian_complex01(self, shape, dtype, dec):
|
||||
a = numpy.zeros(shape, dtype)
|
||||
a[0, 0] = 1.0
|
||||
a = fft.fft(a, shape[0], 0)
|
||||
a = fft.fft(a, shape[1], 1)
|
||||
a = ndimage.fourier_gaussian(a, [5.0, 2.5], -1, 0)
|
||||
a = fft.ifft(a, shape[1], 1)
|
||||
a = fft.ifft(a, shape[0], 0)
|
||||
assert_almost_equal(ndimage.sum(a.real), 1.0, decimal=dec)
|
||||
|
||||
@pytest.mark.parametrize('shape', [(32, 16), (31, 15), (1, 10)])
|
||||
@pytest.mark.parametrize('dtype, dec',
|
||||
[(numpy.float32, 6), (numpy.float64, 14)])
|
||||
def test_fourier_uniform_real01(self, shape, dtype, dec):
|
||||
a = numpy.zeros(shape, dtype)
|
||||
a[0, 0] = 1.0
|
||||
a = fft.rfft(a, shape[0], 0)
|
||||
a = fft.fft(a, shape[1], 1)
|
||||
a = ndimage.fourier_uniform(a, [5.0, 2.5], shape[0], 0)
|
||||
a = fft.ifft(a, shape[1], 1)
|
||||
a = fft.irfft(a, shape[0], 0)
|
||||
assert_almost_equal(ndimage.sum(a), 1.0, decimal=dec)
|
||||
|
||||
@pytest.mark.parametrize('shape', [(32, 16), (31, 15)])
|
||||
@pytest.mark.parametrize('dtype, dec',
|
||||
[(numpy.complex64, 6), (numpy.complex128, 14)])
|
||||
def test_fourier_uniform_complex01(self, shape, dtype, dec):
|
||||
a = numpy.zeros(shape, dtype)
|
||||
a[0, 0] = 1.0
|
||||
a = fft.fft(a, shape[0], 0)
|
||||
a = fft.fft(a, shape[1], 1)
|
||||
a = ndimage.fourier_uniform(a, [5.0, 2.5], -1, 0)
|
||||
a = fft.ifft(a, shape[1], 1)
|
||||
a = fft.ifft(a, shape[0], 0)
|
||||
assert_almost_equal(ndimage.sum(a.real), 1.0, decimal=dec)
|
||||
|
||||
@pytest.mark.parametrize('shape', [(32, 16), (31, 15)])
|
||||
@pytest.mark.parametrize('dtype, dec',
|
||||
[(numpy.float32, 4), (numpy.float64, 11)])
|
||||
def test_fourier_shift_real01(self, shape, dtype, dec):
|
||||
expected = numpy.arange(shape[0] * shape[1], dtype=dtype)
|
||||
expected.shape = shape
|
||||
a = fft.rfft(expected, shape[0], 0)
|
||||
a = fft.fft(a, shape[1], 1)
|
||||
a = ndimage.fourier_shift(a, [1, 1], shape[0], 0)
|
||||
a = fft.ifft(a, shape[1], 1)
|
||||
a = fft.irfft(a, shape[0], 0)
|
||||
assert_array_almost_equal(a[1:, 1:], expected[:-1, :-1],
|
||||
decimal=dec)
|
||||
assert_array_almost_equal(a.imag, numpy.zeros(shape),
|
||||
decimal=dec)
|
||||
|
||||
@pytest.mark.parametrize('shape', [(32, 16), (31, 15)])
|
||||
@pytest.mark.parametrize('dtype, dec',
|
||||
[(numpy.complex64, 6), (numpy.complex128, 11)])
|
||||
def test_fourier_shift_complex01(self, shape, dtype, dec):
|
||||
expected = numpy.arange(shape[0] * shape[1], dtype=dtype)
|
||||
expected.shape = shape
|
||||
a = fft.fft(expected, shape[0], 0)
|
||||
a = fft.fft(a, shape[1], 1)
|
||||
a = ndimage.fourier_shift(a, [1, 1], -1, 0)
|
||||
a = fft.ifft(a, shape[1], 1)
|
||||
a = fft.ifft(a, shape[0], 0)
|
||||
assert_array_almost_equal(a.real[1:, 1:], expected[:-1, :-1],
|
||||
decimal=dec)
|
||||
assert_array_almost_equal(a.imag, numpy.zeros(shape),
|
||||
decimal=dec)
|
||||
|
||||
@pytest.mark.parametrize('shape', [(32, 16), (31, 15), (1, 10)])
|
||||
@pytest.mark.parametrize('dtype, dec',
|
||||
[(numpy.float32, 5), (numpy.float64, 14)])
|
||||
def test_fourier_ellipsoid_real01(self, shape, dtype, dec):
|
||||
a = numpy.zeros(shape, dtype)
|
||||
a[0, 0] = 1.0
|
||||
a = fft.rfft(a, shape[0], 0)
|
||||
a = fft.fft(a, shape[1], 1)
|
||||
a = ndimage.fourier_ellipsoid(a, [5.0, 2.5],
|
||||
shape[0], 0)
|
||||
a = fft.ifft(a, shape[1], 1)
|
||||
a = fft.irfft(a, shape[0], 0)
|
||||
assert_almost_equal(ndimage.sum(a), 1.0, decimal=dec)
|
||||
|
||||
@pytest.mark.parametrize('shape', [(32, 16), (31, 15)])
|
||||
@pytest.mark.parametrize('dtype, dec',
|
||||
[(numpy.complex64, 5), (numpy.complex128, 14)])
|
||||
def test_fourier_ellipsoid_complex01(self, shape, dtype, dec):
|
||||
a = numpy.zeros(shape, dtype)
|
||||
a[0, 0] = 1.0
|
||||
a = fft.fft(a, shape[0], 0)
|
||||
a = fft.fft(a, shape[1], 1)
|
||||
a = ndimage.fourier_ellipsoid(a, [5.0, 2.5], -1, 0)
|
||||
a = fft.ifft(a, shape[1], 1)
|
||||
a = fft.ifft(a, shape[0], 0)
|
||||
assert_almost_equal(ndimage.sum(a.real), 1.0, decimal=dec)
|
||||
|
||||
def test_fourier_ellipsoid_unimplemented_ndim(self):
|
||||
# arrays with ndim > 3 raise NotImplementedError
|
||||
x = numpy.ones((4, 6, 8, 10), dtype=numpy.complex128)
|
||||
with pytest.raises(NotImplementedError):
|
||||
a = ndimage.fourier_ellipsoid(x, 3)
|
||||
|
||||
def test_fourier_ellipsoid_1d_complex(self):
|
||||
# expected result of 1d ellipsoid is the same as for fourier_uniform
|
||||
for shape in [(32, ), (31, )]:
|
||||
for type_, dec in zip([numpy.complex64, numpy.complex128],
|
||||
[5, 14]):
|
||||
x = numpy.ones(shape, dtype=type_)
|
||||
a = ndimage.fourier_ellipsoid(x, 5, -1, 0)
|
||||
b = ndimage.fourier_uniform(x, 5, -1, 0)
|
||||
assert_array_almost_equal(a, b, decimal=dec)
|
||||
|
||||
@pytest.mark.parametrize('shape', [(0, ), (0, 10), (10, 0)])
|
||||
@pytest.mark.parametrize('dtype',
|
||||
[numpy.float32, numpy.float64,
|
||||
numpy.complex64, numpy.complex128])
|
||||
@pytest.mark.parametrize('test_func',
|
||||
[ndimage.fourier_ellipsoid,
|
||||
ndimage.fourier_gaussian,
|
||||
ndimage.fourier_uniform])
|
||||
def test_fourier_zero_length_dims(self, shape, dtype, test_func):
|
||||
a = numpy.ones(shape, dtype)
|
||||
b = test_func(a, 3)
|
||||
assert_equal(a, b)
|
||||
1328
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_interpolation.py
vendored
Normal file
1328
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_interpolation.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1393
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_measurements.py
vendored
Normal file
1393
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_measurements.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2371
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_morphology.py
vendored
Normal file
2371
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_morphology.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
65
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_splines.py
vendored
Normal file
65
.CondaPkg/env/Lib/site-packages/scipy/ndimage/tests/test_splines.py
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
"""Tests for spline filtering."""
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from numpy.testing import assert_almost_equal
|
||||
|
||||
from scipy import ndimage
|
||||
|
||||
|
||||
def get_spline_knot_values(order):
|
||||
"""Knot values to the right of a B-spline's center."""
|
||||
knot_values = {0: [1],
|
||||
1: [1],
|
||||
2: [6, 1],
|
||||
3: [4, 1],
|
||||
4: [230, 76, 1],
|
||||
5: [66, 26, 1]}
|
||||
|
||||
return knot_values[order]
|
||||
|
||||
|
||||
def make_spline_knot_matrix(n, order, mode='mirror'):
|
||||
"""Matrix to invert to find the spline coefficients."""
|
||||
knot_values = get_spline_knot_values(order)
|
||||
|
||||
matrix = np.zeros((n, n))
|
||||
for diag, knot_value in enumerate(knot_values):
|
||||
indices = np.arange(diag, n)
|
||||
if diag == 0:
|
||||
matrix[indices, indices] = knot_value
|
||||
else:
|
||||
matrix[indices, indices - diag] = knot_value
|
||||
matrix[indices - diag, indices] = knot_value
|
||||
|
||||
knot_values_sum = knot_values[0] + 2 * sum(knot_values[1:])
|
||||
|
||||
if mode == 'mirror':
|
||||
start, step = 1, 1
|
||||
elif mode == 'reflect':
|
||||
start, step = 0, 1
|
||||
elif mode == 'grid-wrap':
|
||||
start, step = -1, -1
|
||||
else:
|
||||
raise ValueError('unsupported mode {}'.format(mode))
|
||||
|
||||
for row in range(len(knot_values) - 1):
|
||||
for idx, knot_value in enumerate(knot_values[row + 1:]):
|
||||
matrix[row, start + step*idx] += knot_value
|
||||
matrix[-row - 1, -start - 1 - step*idx] += knot_value
|
||||
|
||||
return matrix / knot_values_sum
|
||||
|
||||
|
||||
@pytest.mark.parametrize('order', [0, 1, 2, 3, 4, 5])
|
||||
@pytest.mark.parametrize('mode', ['mirror', 'grid-wrap', 'reflect'])
|
||||
def test_spline_filter_vs_matrix_solution(order, mode):
|
||||
n = 100
|
||||
eye = np.eye(n, dtype=float)
|
||||
spline_filter_axis_0 = ndimage.spline_filter1d(eye, axis=0, order=order,
|
||||
mode=mode)
|
||||
spline_filter_axis_1 = ndimage.spline_filter1d(eye, axis=1, order=order,
|
||||
mode=mode)
|
||||
matrix = make_spline_knot_matrix(n, order, mode=mode)
|
||||
assert_almost_equal(eye, np.dot(spline_filter_axis_0, matrix))
|
||||
assert_almost_equal(eye, np.dot(spline_filter_axis_1, matrix.T))
|
||||
Reference in New Issue
Block a user